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 サブスクリプション を
入力エイリアス: ConnectedServiceName
。
string
. 必須。
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
。
キー コンテナーを作成できます。
- Azure portal
- Azure PowerShell を使用する
- Azure CLI を使用する
キー コンテナーにシークレットを追加します。
Set-AzKeyVaultSecret
PowerShell コマンドレットを使用します。 シークレットが存在しない場合は、このコマンドレットによってシークレットが作成されます。 シークレットが既に存在する場合、このコマンドレットは、そのシークレットの新しいバージョンを作成します。 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という名前
コンテナーからフェッチされた値が証明書 (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 証明書の概要」を参照してください。
例
クイック スタート: Azure Key Vault (クラシック/YAML) のシークレットを使用する
チュートリアル: YAML パイプライン で Azure Key Vault シークレットを使用する