Использование хранилища ключей Azure и Active Directory для получения секретов - PullRequest
2 голосов
/ 11 апреля 2019

Для базы кода Python я хотел бы, чтобы разработчики обращались к секретам приложений с помощью хранилища ключей Azure, полагая, что при развертывании приложение также сможет подключаться. Следовательно, я думаю, Active Directory.

Однако я не могу найти никаких примеров на веб-сайте, которые показывают это с помощью Python SDK. Первоначально, я думаю, чтобы получить пользователя CLI:

from azure.common.credentials import get_azure_cli_credentials

credentials, subscription_id, tenant_id = get_azure_cli_credentials(with_tenant=True)

, а затем используйте этот полученный набор учетных данных для доступа к хранилищу ключей:

from azure.keyvault import KeyVaultClient

vault_url = "https://########.vault.azure.net/"
secret_name = "########"
secret_version = "########"

client = KeyVaultClient(credentials)
secret = client.get_secret(vault_url, secret_name, secret_version)

print(secret)

Однако я получаю сообщение об ошибке:

azure.keyvault.v7_0.models.key_vault_error_py3.KeyVaultErrorException: Operation returned an invalid status code 'Unauthorized'

Я могу подтвердить, что credentials, subscription_id и tenant_id верны, и что, используя CLI, я могу успешно получить секретный контент. Так что это должно быть что-то специфичное для Python SDK.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 30 мая 2019

Похоже, что это ошибка в Python SDK.

https://github.com/Azure/azure-sdk-for-python/issues/5096

Вы можете использовать свое собственное имя пользователя и пароль AD с классом UserPassCredentials.Это не вошедший в систему пользователь, но, вероятно, он настолько близок, насколько вы сейчас можете.

EG:

from azure.common.credentials import UserPassCredentials
credentials = UserPassCredentials('username','password')

client = KeyVaultClient(credentials)
secret = client.get_secret(vault_url, secret_name, secret_version)

print(secret)
0 голосов
/ 12 апреля 2019

Вы хотите установить политику доступа для хранилища ключей, чтобы позволить аутентифицированному пользователю получать доступ к секретам. Это можно сделать на портале. Помните, что хранилище ключей имеет верхний предел в 16 определений доступа, поэтому вы, вероятно, захотите предоставить доступ группе и добавить пользователей в эту группу.

0 голосов
/ 11 апреля 2019

А как насчет этого фрагмента кода? Сравнивая ваш код с примером, я не вижу, где вы устанавливаете client_id или арендатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...