Python SDK未经授权访问Key Vault

问题描述 投票:0回答:1
def auth_callback(server, resource, scope):
    credentials = ServicePrincipalCredentials(
        client_id = os.getenv('ARM_CLIENT_ID'),
        secret = os.getenv('ARM_CLIENT_SECRET'),
        tenant = os.getenv('ARM_TENANT_ID'),
        resource = "https://vault.azure.net/"
    )
    token = credentials.token
    return token['token_type'], token['access_token']  

kv_client = KeyVaultClient(KeyVaultAuthentication(auth_callback))
secret = kv_client.get_secret("https://xxx.vault.azure.net/", "CLIENT-SECRET", KeyVaultId.version_none).value.encode()

完全相同的代码适用于2个不同的租户(在第三个不起作用)。应用程序服务主体被授予订阅者的所有者权限(只是为了确定),给予特定的秘密权限,尝试了所有权限,尝试也启用了高级权限(只是抬头,我按下save按钮),使用两者进行访问portal和powershell(同样的最终结果)。

我看到了这些: How do I fix an "Operation 'set' not allowed" error when creating an Azure KeyVault secret programmatically? Azure key vault: access denied

确切的错误:

secret = kv_client.get_secret("https://xxx.vault.azure.net/", "CLIENT-SECRET", KeyVaultId.version_none).value.
File "/usr/local/lib/python3.6/site-packages/azure/keyvault/v7_0/key_vault_client.py", line 1846, in get_secret
raise models.KeyVaultErrorException(self._deserialize, response)
azure.keyvault.v7_0.models.key_vault_error_py3.KeyVaultErrorException: Operation returned an invalid status code 'Unauthorized'
python python-3.x azure azure-keyvault
1个回答
0
投票

它看起来像这样:

resource = "https://vault.azure.net/"

需要是这样的:

resource = "https://vault.azure.net"

别的没什么作用。

© www.soinside.com 2019 - 2024. All rights reserved.