AzureKeyVault@2 - Azure Key Vault v2 タスク

このタスクを使用して、認証キー、ストレージ アカウント キー、データ暗号化キー、などのシークレットをダウンロードします。Azure Key Vault インスタンスからの PFX ファイルとパスワード。 タスクを使用して、コンテナーからシークレットのすべてまたはサブセットの最新の値をフェッチし、それらをパイプラインの後続のタスクで使用できる変数として設定できます。 タスクはノードベースであり、Linux、macOS、Windows 上のエージェントで動作します。

構文

# Azure Key Vault v2
# Download Azure Key Vault secrets.
- task: AzureKeyVault@2
  inputs:
    azureSubscription: # string. Alias: ConnectedServiceName. Required. Azure subscription. 
    KeyVaultName: # string. Required. Key vault. 
    SecretsFilter: '*' # string. Required. Secrets filter. Default: *.
    #RunAsPreJob: false # boolean. Make secrets available to whole job. Default: false.

入力

azureSubscription - Azure サブスクリプション
入力エイリアス: ConnectedServiceNamestring. 必須です。

Azure Key Vault インスタンスを含む Azure サブスクリプションのサービス接続を選択するか、新しい接続を作成します。 詳細については、こちらを参照してください


KeyVaultName - キー コンテナー
string. 必須です。

ダウンロードするシークレットを含む Azure Key Vaultの名前。


SecretsFilter - シークレット フィルター
string. 必須です。 既定値: *

入力した値に従ってシークレット名をダウンロードします。 この値には、選択したキー コンテナーからすべてのシークレットをダウンロードするための既定値、またはシークレット名のコンマ区切りのリストを指定できます。


RunAsPreJob - シークレットをジョブ全体で使用できるようにする
boolean. 既定値: false

ジョブの実行が開始される前にタスクを実行します。 このタスクに続くタスクだけでなく、ジョブ内のすべてのタスクにシークレットを公開します。


タスク コントロール のオプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

バージョン 2.0 の新機能: シークレットで %3B、%5D のサポートが追加されました。

このタスクを使用して、認証キー、ストレージ アカウント キー、データ暗号化キー、などのシークレットをダウンロードします。Azure Key Vault インスタンスからの PFX ファイルとパスワード。 タスクを使用して、コンテナーからシークレットのすべてまたはサブセットの最新の値をフェッチし、それらをパイプラインの後続のタスクで使用できる変数として設定できます。 タスクはノードベースであり、Linux、macOS、Windows 上のエージェントで動作します。

forbidden Azure Key Vault から資格情報を取得する時点でパイプラインでエラーが発生する

これは、Azure キー コンテナーに必要なアクセス許可がない場合に発生します。 この問題を解決するには、 正しいアクセス許可を持つアクセス ポリシーを追加します。

前提条件

タスクには、次の前提条件があります。

キー コンテナーを作成できます。

キー コンテナーにシークレットを追加します。

  • PowerShell コマンドレット Set-AzureKeyVaultSecret を使用します。 シークレットが存在しない場合は、このコマンドレットによって作成されます。 シークレットが既に存在する場合、このコマンドレットは、そのシークレットの新しいバージョンを作成します。

  • Azure CLI を使用する方法 キー コンテナーにシークレットを追加するには (たとえば、値 PlaceholderPassword を持つ SQLPassword という名前のシークレット)、次のように入力します。

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'PlaceholderPassword'
    

シークレットにアクセスする場合:

  • Azure サービス接続に、コンテナーに対 する少なくとも Get アクセス許可と List アクセス許可があることを確認します。 これらのアクセス許可は、Azure portalで設定できます。

    • コンテナーの [設定] ブレードを開き、[ アクセス ポリシー]、[ 新規追加] の順に選択します。
    • [ アクセス ポリシーの追加] ブレードで、[ プリンシパルの選択 ] を選択し、クライアント アカウントのサービス プリンシパルを選択します。
    • [ アクセス ポリシーの追加] ブレード で、[シークレットのアクセス許可 ] を選択し、[ 取得 ] と [ 一覧] がオン (チェック) になっていることを確認します。
    • [ OK] を選択 して変更を保存します。

Note

Microsoft ホステッド エージェントを使用している場合は、Microsoft ホステッド エージェントの IP 範囲をファイアウォールに追加する必要があります。 毎週水曜日に公開される週単位の JSON ファイルから、IP 範囲の週単位の一覧を取得できます。 新しい IP 範囲は、次の月曜日に有効になります。 詳細については、Microsoft ホステッド エージェントに関するページを参照してください。 ご自身の Azure DevOps 組織に必要な IP 範囲を見つけるには、Microsoft ホステッド エージェントの想定される IP 範囲を特定する方法を確認してください。

注意

値は文字列として取得されます。 たとえば、 connectionString という名前のシークレットがある場合は、Azure キー コンテナーからフェッチされたそれぞれのシークレットの最新の値を使用してタスク変数 connectionString が作成されます。 その後、この変数は後続のタスクで使用できます。

コンテナーからフェッチされた値が証明書 (PFX ファイルなど) の場合、タスク変数には PFX の内容が文字列形式で格納されます。 次の PowerShell コードを使用して、タスク変数から PFX ファイルを取得できます。

$kvSecretBytes = [System.Convert]::FromBase64String("$(PfxSecret)")
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

証明書ファイルがコンピューターにローカルに格納される場合は、パスワードで暗号化することをお勧めします。

 #Get the file created
$password = 'your password'
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\MyCert.pfx"
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

詳細については、「Azure Key Vault 証明書の概要」を参照してください。

必要条件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.182.1 以上
タスクのカテゴリ 配置