问题:
使用服务主体 secret 作为 Azure Key Vault 支持的 secret 范围中的 secret 来安装 ADLS gen2 容器。一切顺利,可以访问数据。
从 AAD 中的服务主体中删除了 key ,添加了新的、更新的 Azure Key Vault key (添加了新版本,禁用了旧 key )。一切都还好,可以访问数据。
已重新启动集群。无法访问装载点,错误:
“AADToken:从 AzureAD 获取 token 的 HTTP 连接失败。 HTTP 响应:401 未经授权”
使用相同的配置卸载/挂载有帮助。
有没有办法刷新用于挂载点的 secret ,我可以将其添加到初始化脚本中以避免此问题?我宁愿避免在初始化脚本中卸载/挂载所有挂载点,并希望有像 dbutils.fs.refreshMounts() 这样的东西可以提供帮助(refreshMounts 对这个特定问题没有帮助)。
我使用服务主体、oauth2.0 和 Azure Key Vault 支持的 secret 范围安装了 ADLS Gen2,遵循以下文档:https://learn.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-datalake-gen2#mount-azure-data-lake-gen2
另外 - 出于好奇:有人知道安装到 ADLS Gen2 的 token 的生命周期有多长吗?只要集群没有重新启动,即使 key 被删除和更新(即 key 在 AAD 和 Key Vault 中更新),我也能够访问我的 mnt;在重新启动集群之前没有出现任何故障 - 这已经是 12 小时后的事了更新)。
最佳答案
这是一个已知的限制。每当您使用来自 Azure Key Vault 支持的 secret 范围的凭据创建装载点时,凭据将存储在装载点中,并且永远不会再次刷新。
这是安装点创建时的一次性读取事件。因此,每次轮换 Azure Key Vault 中的凭据时,您都需要重新创建挂载点以刷新那里的凭据。
我建议您提供同样的反馈:
您在这些论坛中分享的所有反馈都将由负责构建 Azure 的 Microsoft 工程团队进行监控和审核。
关于azure - 如何强制刷新用于挂载 ADLS Gen2 的 key ? Azure Databricks 使用 Azure KeyVault 支持的范围安装 - SP secret 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61948579/