Хранение многострочных секретов в Azure Key Vault

В кратком руководстве по Azure CLI или Azure PowerShell кратком руководстве показано, как хранить однострочный секрет. Но вы можете использовать Key Vault и для хранения многострочного секрета, например JSON-файла или закрытого ключа RSA.

Многострочные секреты не могут быть переданы в команду Azure CLI az keyvault secret set или в командлет Azure PowerShell Set-AzKeyVaultSecret через командную строку. Вместо этого их нужно сохранять в виде текстового файла.

Например, вы можете создать текстовый файл с именем secretfile.txt, который содержит следующие строки:

This is my
multi-line
secret

Установка секрета с помощью Azure CLI

Затем этот файл можно передать в команду Azure CLI az keyvault secret set с помощью параметра --file.

az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "MultilineSecret" --file "secretfile.txt"

Затем вы можете просмотреть сохраненный секрет с помощью команды Azure CLI az keyvault secret show .

az keyvault secret show --name "MultilineSecret" --vault-name "<your-unique-keyvault-name>" --query "value"

Секрет будет возвращен с \n вместо newline:

"This is\nmy multi-line\nsecret"

Приведенный \n выше символ и n\, а не символ новой строки. Кавычки " включаются в строку.

Настройка секрета с помощью Azure PowerShell

При работе в Azure PowerShell следует сначала считать файл с помощью командлета Get-Content, а затем преобразовать его в защищенную строку с помощью ConvertTo-SecureString.

$RawSecret =  Get-Content "secretfile.txt" -Raw
$SecureSecret = ConvertTo-SecureString -String $RawSecret -AsPlainText -Force

И наконец, для сохранения секрета используйте командлет Set-AzKeyVaultSecret.

$secret = Set-AzKeyVaultSecret -VaultName "<your-unique-keyvault-name>" -Name "MultilineSecret" -SecretValue $SecureSecret

Затем вы можете просмотреть сохраненный секрет с помощью команды Azure CLI az keyvault secret show или командлета Azure PowerShell Get-AzKeyVaultSecret.

az keyvault secret show --name "MultilineSecret" --vault-name "<your-unique-keyvault-name>" --query "value"

Секрет будет возвращен с \n вместо newline:

"This is\nmy multi-line\nsecret"

Приведенный \n выше символ и n\, а не символ новой строки. Кавычки " включаются в строку.

Дальнейшие действия