我使用的是具有动态IP地址的Azure虚拟机。登录后,我能够使用以下python代码检索机密,没有任何问题;
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://xxxx/", credential=credential)
secret = secret_client.get_secret("testSecret")
我需要在VM打开但未登录时检索机密,以使其他进程能够运行。当我注销时,我注意到上面的代码失败了。系统管理员给了我
AZURE_CLIENT_ID
,
AZURE_CLIENT_SECRET
,
AZURE_TENANT_ID
和
VAULT_URL
让我将它们设置为环境凭据。
我在CMD中设置它们如下:;
SETX AZURE_CLIENT_ID "pppp"
SETX AZURE_CLIENT_SECRET "mmmm"
SETX AZURE_TENANT_ID "kkkk"
SETX VAULT_URL "xxxx"
当我检查系统环境设置时,我可以看到它们已经设置好了
我试着用这个密码找回我的秘密,
from azure.keyvault.secrets import SecretClient
VAULT_URL = os.environ["VAULT_URL"]
credential = EnvironmentCredential()
client = SecretClient(vault_url=VAULT_URL, credential=credential)
password = client.get_secret("testSecret").value
我遇到了这个错误
raise HttpResponseError(response=response, model=error)
azure.core.exceptions.HttpResponseError: (Forbidden) The user, group or application 'pppp;iss=https://sts.windows.net/kkkk/' does not have secrets get permission on key vault 'name of my vault-vault;location=australiasoutheast'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287
提问
系统管理员确认颁发的凭据是服务主体的正确详细信息。
-
如何纠正这一点,或者我做错了什么?
-
我是否有办法打印DefaultAzureCredentials,以便将其设置为与EnvironmentCredentials相同,因为我相信登录时恢复机密的原因是登录时缓存了凭据?
非常感谢您的帮助。