我有一个多租户 Azure 应用程序。我正在使用此应用程序的凭据使用 PySpark 数据帧从 Databricks 集群读取 ADLS 容器文件。
我需要将此“additionallyAllowedTenants”标志值设置为“*”或多租户应用程序在 databricks 集群配置或 PySpark 会话中的特定tenant_id。
在 Python 中,我可以通过执行以下代码行来实现此目的:
default_credential = DefaultAzureCredential(additionally_allowed_tenants=['*'])
我的问题是,如何在 Databricks 配置或 PySpark 会话中实现相同的目标。任何线索表示赞赏。
要在 Databricks 或 PySpark 中配置对 Azure Data Lake Storage (ADLS) 的访问,需要设置所需的 Spark 配置属性以进行身份验证。 这通常涉及使用服务主体及其客户端 ID、客户端密钥和租户 ID。 虽然这不会直接配置additional_allowed_tenants,但它可以通过指定租户ID,通过多租户应用程序的凭据进行身份验证。
您可以尝试以下代码:
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
我已将 Spark 配置为在 Databricks 环境中使用 OAuth 2.0 身份验证访问 Azure Data Lake Storage (ADLS) 在上面的代码中,我在 aure databricks 中创建了秘密范围。秘密范围是由名称标识的秘密的集合。
dbutils.secrets.get
检索存储在 Azure Key Vault 中的机密。
该机密存储在名为“Key-vault-secret-dbx”的范围下,具体密钥为“secretkv”。
将访问名为“dilipstgdls”的 Azure Data Lake Storage 帐户的身份验证类型设置为 OAuth 2.0。
OAuth
提供程序类型为 ClientCredsTokenProvider,用于使用客户端凭据(客户端 ID 和客户端密钥)进行身份验证。
设置与将用于身份验证的 Azure AD 应用程序关联的客户端 ID。
设置客户端密钥,这是之前从 Azure Key Vault 检索到的凭据,用于对 Azure AD 应用程序进行身份验证。