こんにちは。
問題
DatabricksからAzure Data Lake Storage Gen2のデータを読み取るために、以下のチュートリアルに沿って、アクセス許可の構成を進めていたところ、DatabricksからKey VaultにPermission Deniedで接続できない事象が発生。
https://learn.microsoft.com/ja-jp/azure/databricks/getting-started/connect-to-azure-storage
com.databricks.common.client.DatabricksServiceHttpClientException: PERMISSION_DENIED: Invalid permissions on the specified KeyVault https://keyvault013.vault.azure.net/. Wrapped Message: Status code 403, "{"error":{"code":"Forbidden","message":"Caller is not authorized to perform action on resource.\r\nIf role assignments, deny assignments or role definitions were changed recently, please observe propagation time.....
Key Vault側のアクセス許可も問題なさそうなのに・・・
原因と解決方法
別の記事にこんな記載があった。
Azure ロールベースのアクセス制御アクセス許可モデルは、現在 Azure Databricks ではサポートされていません。
Key Vault側のアクセス制御は、RBACベースのものと、ACLベースのものが選択できますが、Databricksでは現在ACLベースのアクセス制御のみサポートしているとのこと。
チュートリアルのページにも書いてて欲しかった・・・笑 地味に時間くった・・・
Key Vaultのアクセス制御をACLベースに変更すると、Databricks側でスコープを作成したことによって自動的に追加されたアクセスポリシーの設定が確認できるようになり、
KeyVaultシークレットの参照も成功するようになった・・
Key Vaultの推奨は現在RBACベースのアクセス制御でもあるので、Databricksの方も対応して欲しいな・・とはいえ、Databricksから外部ストレージへの接続は、Unity Catalog経由が推奨され始めているので、このサービスプリンシパル経由の接続もそのうち使う必要がなくなっていくかもですが・・
同じ問題にぶち当たっていた方の助けになれば幸いです。
おしまい
コメントを残す