gpt4 book ai didi

python - 在python中从azure keyvault检索 secret 列表

转载 作者:行者123 更新时间:2023-12-02 07:08:06 27 4
gpt4 key购买 nike

我正在尝试使用 python sdk 从 azure keyvault 检索并打印 secret 列表。

以下内容返回 paged.SecretItemPaged 对象:

from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials


az_client_id = '*****'
az_secret = '*****'
az_tenant = '*****'
credentials = None


def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
client_id=az_client_id,
secret=az_secret,
tenant=az_tenant,
resource="https://vault.azure.net"
)
token = credentials.token
return token['token_type'], token['access_token']


client = KeyVaultClient(KeyVaultAuthentication(auth_callback))

secrets = client.get_secrets('https://thevault.vault.azure.net/')

print('vault secrets:\n{}'.format(secrets))

例如:

vault secrets:
<azure.keyvault.models.secret_item_paged.SecretItemPaged object at 0x7fc494c78b38>

我不知道如何处理这个对象。该文档没有给我任何提示,除非我错过了一些东西。

最佳答案

SecretItemPaged 页面是 iterator对象,这意味着如果需要,您可以直接在 for 循环中使用它:

for item in secrets:
print_my_secret(item)

或将其更改为列表

secrets_as_list = list(secrets)

这里没有魔法,这只是 Python 的迭代器协议(protocol)。您还可以使用 next,并捕获 StopIteration 异常等。

查看 get_secrets 方法,the doc tells you what kind if object it conveys :

enter image description here

SecretItemdocumented here .

请注意,如果您希望将其作为字典而不是具有属性的对象来处理,则所有 SDK 对象都有一个 as_dict 方法。

请勿使用current_page 属性。如果您拥有的 secret 数量多于默认 JSON 可以处理的数量,则迭代器协议(protocol)实现会隐藏起来,以便您从 Azure 获取多个页面。在执行 list(secrets) 时,您可能会获取 10 个页面并对 Azure 进行 10 次调用,您不知道,也不在乎:)。 current_page 是最后一页的状态。它不是完整的元素列表。

(我在 MS 的 SDK 团队工作)

编辑 2020 年 12 月

答案仍然有效,尽管功能已移至 azure-keyvault-secrets包代替。因此,导入略有不同,请参阅sample for reading secrets from KeyVault .

关于python - 在python中从azure keyvault检索 secret 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578921/

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