gpt4 book ai didi

azure - 使用 Python SDK 和用户或系统分配的托管标识从 Azure Key Vault 读取 Azure Synapse 中的 secret

转载 作者:行者123 更新时间:2023-12-03 06:55:45 31 4
gpt4 key购买 nike

我编写了一个 Python 脚本,并将其作为 Apache Spark 作业定义托管在 Azure Synapse 上。该脚本必须从 Azure Key Vault 获取 secret 才能运行。

在开发过程中,我使用了 VS Code 身份验证,一切运行顺利。我使用了这种身份验证方法:

credential = DefaultAzureCredential(exclude_shared_token_cache_credential=True)

client = SecretClient(vault_url=kv_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

当我将代码放入 Synapse 作业时,我尝试使用系统和用户分配的托管身份,但没有成功。使用前者时,我没有更改上面代码中的任何内容。对于后者,我提供了用户分配身份的客户端 ID:

credential = DefaultAzureCredential(
exclude_shared_token_cache_credential=True,
managed_identity_client_id=r"xxxxxxxx"
)

我也尝试过使用以下方法,但仍然没有结果:

credential = ManagedIdentityCredential() # system-assigned identity
credential = ManagedIdentityCredential(
client_id="xxxxxxxxxxxxxxxxxxx") # user-assigned identity

在所有情况下,我都会在云端收到这些错误,但不会像所述在本地收到这些错误:

azure.identity._exceptions.CredentialUnavailableError: ManagedIdentityCredential authentication unavailable, no response from the IMDS endpoint.

During handling of the above exception, another exception occurred:

azure.core.exceptions.ServiceRequestError: (<urllib3.connection.HTTPConnection object at 0x7f3182fccbb0>, 'Connection to 169.254.169.254 timed out. (connect timeout=0.3)')

我发现有关 Synapse 是否支持托管身份凭证的矛盾信息。 Here它说不,并且 here是的。

我检查了用户分配的身份是否已附加到 Synapse 工作区,并且在 key 保管库上正确设置了正确的 IAM 角色和访问策略,以允许作业从中获取 secret ,但我在时刻。

如何解决这个问题?

最佳答案

我们最终从连接 Synapse 工作区和 key 保管库的 Synapse 链接服务获取 secret ,而不是直接引用 key 保管库:

session = SparkSession.builder.getOrCreate()
token_library = (session._jvm.com.microsoft.azure.synapse.
tokenlibrary.TokenLibrary)
retrieved_secret = token_library.getSecret(
kv_name, secret_name, linked_service)

更多详情可查看here使用 Apache Spark 的 TokenLibrary 通过链接服务保护您的凭据部分。

关于azure - 使用 Python SDK 和用户或系统分配的托管标识从 Azure Key Vault 读取 Azure Synapse 中的 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72982885/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com