Используйте Azure Key Vault, чтобы получить секреты

Я хочу использовать Azure Key Vault в записной книжке машинного обучения для получения секретов. В руководстве, которое я использовал здесь, предлагается использовать

      from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

vault_url = 'https://<myvaulturl>.vault.azure.net'
az_credential = DefaultAzureCredential()
client = SecretClient(vault_url=vault_url, credential=az_credential)

client.get_secret('<mysecret>')

Однако я получаю эту ошибку ClientAuthenticationError: DefaultAzureCredential failed to retrieve a token from the included credentials. Attempted credentials: EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured. ManagedIdentityCredential: Unexpected response 'None'.
Я думаю, это зависит от того, что у меня не установлены переменные среды:

      AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID

Мне было интересно, есть ли другой способ получить доступ к хранилищу без использования DefaultAzureCredentialкласс.
У кого-нибудь есть идеи?

2 ответа

Чтобы получить и записать все секреты через azure cli на Mac, я вызываю следующий скрипт:sh keyvault-list.sh

      #!/usr/bin/env bash
 
echo "Enter the keyvault Name to be used for printing secrets:"
read keyvaultName
 
 
fileName=$keyvaultName+$(date "+%Y-%m-%d %H.%M.%S").txt
echo "Starting secret printing for $keyvaultName to fileName=$fileName"
echo "Starting secret printing for  $keyvaultName!" >> $fileName
 
 
keyvaultEntries=($(az keyvault secret list --vault-name $keyvaultName --query "[*].{name:name}" -o tsv))
 
for i in "${keyvaultEntries[@]}"
do
    # do whatever on "$i" here
    echo "$i"  ::  "$(az keyvault secret show --name $i --vault-name $keyvaultName -o tsv --query value)"
    echo "$i"  ::  "$(az keyvault secret show --name $i --vault-name $keyvaultName -o tsv --query value)" >> $fileName
done

Попробуйте использовать для этого:

      from azure.keyvault.secrets import SecretClient
from azure.identity import ClientSecretCredential

AZURE_TENANT_ID = ''
AZURE_CLIENT_ID = ''
AZURE_CLIENT_SECRET = ''


cred = ClientSecretCredential(
    client_id = AZURE_CLIENT_ID,
    client_secret = AZURE_CLIENT_SECRET,
    tenant_id = AZURE_TENANT_ID
)

keyVaultName = ''
KVUri = f"https://{keyVaultName}.vault.azure.net"

sc = SecretClient(vault_url=KVUri, credential=cred)
print(sc.get_secret('<secret name>').value)

Результат:

ОБНОВИТЬ:

  1. Вы можете найти свой идентификатор клиента здесь, на портале Azure:

  1. Следуйте этому документу, чтобы создать приложение Azure AD, и следуйте этому разделу, чтобы создать секрет приложения. чтобы у вас были все 3 параметра (идентификатор клиента, идентификатор клиента и секрет клиента) для ClientSecretCredential

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

Другие вопросы по тегам