次の方法で共有


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.

入力

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

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


キー コンテナーの を する
string. 必須。

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


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

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


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

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


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

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

出力変数

何一つ。

備考

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

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

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

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

前提 条件

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

  • Azure Resource Manager サービス接続を使用して Azure Pipelines または Team Foundation Server にリンクされた Azure サブスクリプション。
  • シークレットを含む Azure Key Vault

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

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

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

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

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

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

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

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

手記

Microsoft でホストされるエージェントを使用している場合は、Microsoft がホストするエージェントの IP 範囲をファイアウォールに追加する必要があります。 毎週水曜日に公開される、週単位の JSON ファイルから、IP 範囲の週単位の一覧を取得します。 新しい IP 範囲は、次の月曜日に有効になります。 詳細については、「Microsoft でホストされるエージェントの」を参照してください。 Azure DevOps 組織に必要な IP 範囲を見つけるには、Microsoft ホスト型エージェントに対して使用可能な IP 範囲を 識別する方法について説明します。

手記

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

コンテナーからフェッチされた値が証明書 (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
の需要 何一つ
機能の このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 任意
設定可能な変数 任意
エージェントのバージョン 2.182.1 以上
タスク カテゴリ 展開