Я бы не рекомендовал использовать управляемую идентификационную информацию виртуальной машины для доступа к KeyVault. Вам следует создать субъект-службу, если вы собираетесь запускать сценарии / код.
Лучший способ сделать это с помощью интерфейса командной строки Azure. См. здесь для получения инструкций по установке интерфейса командной строки и обратитесь к this или this для создания субъекта службы.
Лучший способуправлять ресурсами в Python можно с помощью ADAL, который задокументирован:
https://github.com/AzureAD/azure-activedirectory-library-for-python
В вашем случае, однако, управление KeyVault стало немного проще, поскольку библиотека KeyVault для Python также предоставляетозначает для вас аутентификацию без непосредственного использования ADAL для получения вашего токена доступа. См. Здесь:
https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python
from azure.keyvault import KeyVaultClient
from azure.common.credentials import ServicePrincipalCredentials
credentials = ServicePrincipalCredentials(
client_id = '...',
secret = '...',
tenant = '...'
)
client = KeyVaultClient(credentials)
# VAULT_URL must be in the format 'https://<vaultname>.vault.azure.net'
# KEY_VERSION is required, and can be obtained with the KeyVaultClient.get_key_versions(self, vault_url, key_name) API
key_bundle = client.get_key(VAULT_URL, KEY_NAME, KEY_VERSION)
key = key_bundle.key
В приведенном выше описании client_id, secret и tenant (id) являются выходами команды az ad sp create-for-rbac --name {APP-NAME}
CLI.
Не забудьте просмотреть и настроить назначения ролей для созданного вами sp. И ваш KeyVault безопасен только на тех устройствах, которые имеют доступ к учетным данным вашего sp.