我对使用最近发布的新服务在 Azure 中进行秘密管理非常感兴趣。我找到了一些示例指南,介绍了如何通过 powershell cmdlet 和 C# 与 Key Vault 进行交互,但是还没有找到太多关于开始使用其余 API 的信息。
我特别困惑的是 oauth2 w/ Active Directory 的处理。我已经编写了一个 oauth2 应用程序侦听器,使用 AD 实例构建了一个 Web 应用程序,现在可以生成一个“access_token”。不过,我非常不清楚如何继续进行下去,因为每当尝试使用我的 access_token 执行密钥保管库 API 调用时,我似乎总是收到 401 HTTP 响应代码。
任何关于将 azure key Vault 与 python 一起使用的指南/技巧将不胜感激!
在下面的代码运行之前,您需要执行以下一些步骤...希望我记住了一切!
-
您需要在 AD 中拥有一个至少具有访问权限的应用程序
注意:无论如何,您都需要它来获取 CLIENT_ID 和 CLIENT_SECRET
然后运行:
azure keyvault set-policy --vault-name 'VAULTNAME' --spn CLIENT_ID --perms-to-secrets '["get"]'
-
您还需要您的密钥的 ID,您可以使用以下命令通过 Azure CLI 获取该 ID:
azure keyvault 秘密显示 [vault] [秘密]
or
azure keyvault Secret show -h # 如果不清楚
复制密钥(URL 中的最后一个参数)
然后,以下代码将允许您使用 oauth2 查询密钥保管库:
import json
import requests
AUTHORITY_HOST = "login.windows.net"
TENANT_ID = < your tenant id >
CLIENT_ID = < your client id >
CLIENT_SECRET = < your client secret >
VAULT = 'MyVault'
data = { "grant_type" : "client_credentials",
"client_id" : CLIENT_ID,
"client_secret" : CLIENT_SECRET,
"resource" : "https://vault.azure.net"
}
secrets = [( "i_like_pie", "8a7680a2cf5e4d539494aa0ce265297" )]
headers = { "Content-Type" : "application/x-www-form-urlencoded" }
r = requests.post("https://login.windows.net/{}/oauth2/token".format(TENANT_ID), data=data, headers=headers)
access_token = r.json()['access_token']
for secret, secret_id in secrets.iteritems():
headers = {"Authorization":"Bearer {}".format(access_token) }
r = requests.get('https://{}.vault.azure.net/secrets/{}/{}?api-version=2015-06-01'.format(VAULT, secret, secret_id), headers=headers)
print('##### {} #####'.format(secret))
print(r.json())
print('')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)