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 を使用してシークレットを設定する

その後、--file パラメーターを使用して、このファイルを Azure CLI の az keyvault secret set コマンドに渡すことができます。

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 で返されます。

"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 で返されます。

"This is\nmy multi-line\nsecret"

上記の \n は、\n 文字であり、改行文字ではありません。 文字列には引用符 " が含まれています。

次のステップ