Хранение учетных данных участника службы в Azure для проверки подлинности хранилища ключей с помощью Python - PullRequest
0 голосов
/ 05 апреля 2019

В настоящее время я использую Python для чтения файла из хранилища BLOB-объектов Azure и сохранения его в кадре данных.Для проверки подлинности хранилища больших двоичных объектов я извлекаю ключ учетной записи хранилища из хранилища ключей Azure, используя учетные данные участника службы.

Мой код выглядит следующим образом:

from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials

def auth_callback(server, resource, scope):
    credentials = ServicePrincipalCredentials(
        client_id = '',
        client_secret='',
        tenant = '',
        resource = "https://samplename.vault.azure.net/"
    )
    token = credentials.token
    return token['token_type'], token['access_token']

client = KeyVaultClient(KeyVaultAuthentication(auth_callback))

key_bundle = client.get_key('https://samplename.vault.azure.net/', '','')
json_key = key_bundle.key 

Однако я должен сохранить ключ участника службы внутри кода, что, на мой взгляд, не лучшая практика.

Как мне избежать этого?

Я также думал о том, чтобы сохранить учетные данные участника службы в отдельном файле конфигурации, хранящемся в хранилище больших двоичных объектов, и затем прочитать его из Python.Но это также предполагает, в конечном итоге, сохранение учетных данных субъекта службы tee в текстовом файле.

Я запускаю Python из пакета Azure.

Ответы [ 2 ]

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

В настоящее время рекомендуется использовать пакет Azure для проверки подлинности на основе сертификата для своего участника службы. Для этого добавьте свой сертификат в пакетную службу с помощью «API сертификатов» (https://docs.microsoft.com/en-us/python/api/azure-batch/azure.batch.operations.certificate_operations.certificateoperations?view=azure-python#add-certificate--certificate-add-options-none--custom-headers-none--raw-false----operation-config-).. Затем при создании пула вы можете указать «certificate_references», чтобы эти сертификаты устанавливались на каждый узел в вашем пуле (* 1004). *

Если вы предпочитаете использовать аутентификацию на основе ключей, вы можете дополнительно указать ключи в качестве переменных среды в пуле, которые будут зашифрованы в REST

Мы получаем довольно много запросов на добавление поддержки MSI, но в настоящее время я не знаю сроки, когда планируется добавление.

(раскрытие: я работаю в MS в группе Azure Batch)

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

Лучший ответ будет зависеть от того, где вы выполняете свой код.

Если вы выполняете его на виртуальной машине Azure, в контейнере Azure или в любом другом объекте внутри Azure, то ваш сценарий - это именно то, почему существует MSI (удостоверения управляемой системы):).Я настоятельно рекомендую вам взглянуть на документацию MSI: https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview

Это полностью поддерживается в Python SDK.

Если вы выполняете в своей среде вне, тогда вопрос не в том,действительно специфичны для Azure, и вы можете использовать библиотеку типа «связка ключей» для хранения такого секрета:

https://pypi.org/project/keyring/#what-is-python-keyring-lib

(раскрытие: я работаю в MS в Python SDKкоманда)

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