简体   繁体   English

Azure Databricks 通过服务主体访问 Azure Data Lake Storage Gen2

[英]Azure Databricks accessing Azure Data Lake Storage Gen2 via Service principal

I want to get access from Azure Databricks Cluster to Azure Data Lake Storage Gen2 via Service principal to get rid of storage account access keys我想通过服务主体从 Azure Databricks Cluster 访问 Azure Data Lake Storage Gen2 以摆脱存储帐户访问密钥
I follow https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-datalake-gen2#--mount-an-azure-data-lake-storage-gen2-account-using-a-service-principal-and-oauth-20我关注https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-datalake-gen2#--mount-an-azure-data-lake-storage-gen2-使用服务主体和 oauth-20 的帐户
..but is says that storage account access key is still used: ..但是说存储帐户访问密钥仍在使用: 在此处输入图像描述

So what's the purpose os service accounts if storage account access key are still required?那么如果仍然需要存储帐户访问密钥,操作系统服务帐户的目的是什么?
And the main question - is it possible to get completely rid of storage account access keys and use service principal only?主要问题 - 是否有可能完全摆脱存储帐户访问密钥并仅使用服务主体?

This is a document bug, currently I'm working on the immediate fix.这是一个文档错误,目前我正在立即修复。

It should be dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>") retrieves your service-credential that has been stored as a secret in a secret scope.应该是dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>") retrieves your service-credential that has been stored as a secret in a secret scope.

Python: Mount Azure Data Lake Storage Gen2 filesystem by passing direct values Python:通过传递直接值装载 Azure Data Lake Storage Gen2 文件系统

configs = {"fs.azure.account.auth.type": "OAuth",
       "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
       "fs.azure.account.oauth2.client.id": "0xxxxxxxxxxxxxxxxxxxxxxxxxxf", #Enter <appId> = Application ID
       "fs.azure.account.oauth2.client.secret": "Arxxxxxxxxxxxxxxxxxxxxy7].vX7bMt]*", #Enter <password> = Client Secret created in AAD
       "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/72fxxxxxxxxxxxxxxxxxxxxxxxxb47/oauth2/token", #Enter <tenant> = Tenant ID
       "fs.azure.createRemoteFileSystemDuringInitialization": "true"}

dbutils.fs.mount(
source = "abfss://filesystem@chepragen2.dfs.core.windows.net/flightdata", #Enter <container-name> = filesystem name <storage-account-name> = storage name
mount_point = "/mnt/flightdata",
extra_configs = configs)

在此处输入图像描述

Python: Mount Azure Data Lake Storage Gen2 filesystem by passing as secret in a secret scope using dbutils secrets . Python:安装 Azure Data Lake Storage Gen2 文件系统,方法是使用 dbutils secrets 将秘密 scope 作为秘密传递

configs = {"fs.azure.account.auth.type": "OAuth",
           "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
           "fs.azure.account.oauth2.client.id": "06xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0ef",
           "fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope = "chepra", key = "service-credential"),
           "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/72xxxxxxxxxxxxxxxxxxxx011db47/oauth2/token"}

dbutils.fs.mount(
source = "abfss://filesystem@chepragen2.dfs.core.windows.net/flightdata", 
mount_point = "/mnt/flightdata",
extra_configs = configs)

在此处输入图像描述

Hope this helps.希望这可以帮助。 Do let us know if you any further queries.如果您有任何进一步的疑问,请告诉我们。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM