Azure 如何使用指定的权限部署Databricks群集?
我正在使用powershell脚本部署一些DataRicks群集,该脚本将带有预定义群集模板的json文件作为输入,例如:Azure 如何使用指定的权限部署Databricks群集?,azure,databricks,azure-databricks,Azure,Databricks,Azure Databricks,我正在使用powershell脚本部署一些DataRicks群集,该脚本将带有预定义群集模板的json文件作为输入,例如: { "cluster_name": "test1", "max_retries": 1, "spark_version": "5.3.x-scala2.11", "timeout_seconds": 3600, "autotermination_minutes": 60, "node_type_id": "Standard_D
{
"cluster_name": "test1",
"max_retries": 1,
"spark_version": "5.3.x-scala2.11",
"timeout_seconds": 3600,
"autotermination_minutes": 60,
"node_type_id": "Standard_DS3_v2",
"driver_node_type_id": "Standard_DS3_v2",
"spark_env_vars": {
"PYSPARK_PYTHON": "/databricks/python3/bin/python3"
},
"spark_conf": {
"spark.databricks.delta.preview.enabled": "true"
},
"autoscale": {
"max_workers": 4,
"min_workers": 2
}
}
但是,我想为他们预先分配一些databricks权限组。我可以使用这样的集群模板吗?我找不到任何允许我指定这些组的属性
我可以转到手动分配了权限的集群之一,并将其导出为json。但是,在本例中,模板中也缺少这些内容
提前谢谢你 注意:使用Clusters API创建群集时,不能指定权限。您应该使用“组API”或“管理控制台” 创建集群的请求结构如下所示: 可以向通过和创建的用户或组授予特权。每个用户都通过其用户名(通常映射到其电子邮件地址)在DataRicks中进行唯一标识。在Databricks中作为工作区管理员的用户属于特殊的管理员角色,也可以访问他们没有被授予显式访问权限的对象 希望这有帮助
如果回答了您的问题,请单击“标记为答案”和“向上投票”。而且,如果您有任何进一步的疑问,请务必让我们知道。下面的解决方法非常复杂,如果我知道另一种方法,我不会建议任何人求助于此。解决方法是创建web会话、登录、获取CSRF令牌,然后向
/acl/cluster/
发出POST请求,并将用户id映射到请求的权限。下面是一个使用Python为单个用户(或组)设置单个集群上所有权限的示例:
import json
import requests
DB_HOST = "db-cluster"
DB_USER = "user"
DB_PASS = "pass"
def change_acl(user_id, cluster_id):
host = DB_HOST
username = DB_USER
password = DB_PASS
session = requests.Session()
login_request = session.post("https://{}/j_security_check".format(host),
data={"j_username": username, "j_password": password})
if login_request.status_code >= 400:
raise Exception("login failed : {}".format(login_request.content))
config_request = session.get("https://{}/config".format(host))
if config_request.status_code >= 400:
raise Exception("config request failed : {}".format(config_request.content))
config = json.loads(config_request.content)
csrf_token = config['csrfToken']
acl_request = session.post(
"https://{}/acl/cluster/{}".format(host, cluster_id),
headers={
"X-CSRF-Token": csrf_token,
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
},
data=json.dumps({
"type": "set",
'permissions': {user_id: ["*"]}
})
)
if acl_request.status_code >= 400:
raise Exception("acl request failed : {}".format(acl_request.content))
如果你找到更好的方法,请告诉我。最糟糕的是,您必须使用用户名和密码而不是承载令牌登录。第二个最糟糕的事情是,这可能会在没有任何通知的情况下中断
我希望开发人员能在不久的将来抽出时间来实现此功能。为什么有人会认为这是一个令人满意的答案?你的第一句话给出了否定的答案。在这一点上,我希望文章的其余部分能够暗示一些解决这个问题的方法。然而,在这里,你继续讲一些无关紧要的事实,而不是寻找答案的人所要寻找的。