Azure Databricks挂载Blob存储遇Key Vault权限拒绝问题求助
解决Azure Databricks访问Key Vault(RBAC模式)的权限拒绝问题
问题原因
你的Key Vault已配置为基于角色的访问控制(RBAC),而非传统的访问策略,因此必须通过Azure IAM为Databricks的身份分配对应的Key Vault权限,否则dbutils.secrets.get会因权限不足报错。
解决步骤
- 步骤1:确定Databricks访问Key Vault的身份
如果是使用工作区系统身份访问Key Vault,需找到Databricks工作区的系统分配托管标识;如果是自定义服务主体,则对应配置密钥范围时指定的服务主体。 - 步骤2:在Key Vault的IAM页面分配角色
进入Key Vault的「访问控制(IAM)」页面,添加角色分配:- 角色选择:Key Vault Secrets User(该角色允许读取和列出密钥,满足
dbutils.secrets.get的需求) - 分配对象:选择对应的Databricks系统身份或服务主体
- 角色选择:Key Vault Secrets User(该角色允许读取和列出密钥,满足
- 步骤3:验证密钥范围配置
确认密钥范围databricks-create-scope是基于RBAC模式创建的,创建命令示例:databricks secrets create-scope --scope databricks-create-scope --scope-backend-type AZURE_KEYVAULT --resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<key-vault-name>" --dns-name "https://<key-vault-name>.vault.azure.net/" - 步骤4:重新执行挂载命令
确保密钥dbstorageacctkey存在于Key Vault中,重新运行挂载代码:dbutils.fs.mount( source="wasbs://mycontainersrk@mystorageacctsrk.blob.core.windows.net", mount_point="/mnt/mycontainersrk", extra_configs={"fs.azure.account.key.mystorageacctsrk.blob.core.windows.net": dbutils.secrets.get(scope="databricks-create-scope", key="dbstorageacctkey")} )
额外注意事项
- 角色分配生效可能需要几分钟,若刚分配完仍报错,等待片刻再重试
- 若存储账户也使用RBAC,需确保存储账户密钥对应的身份拥有Blob存储访问权限(如Storage Blob Data Contributor)
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

