LoginSignup
1
0

More than 1 year has passed since last update.

Azure Key VaultのシークレットをJenkinsから自動的に取得する

Posted at

JenkinsのパイプラインでAzureの管理をする時に、Azure Key Vaultにあるシークレットにアクセスできると、デプロイの自動化などを簡単に行えます。

使用するもの

Pluginの実装

プラグインをインストール

jenkins-helm.yaml
InstallPlugins:
    - configuration-as-code:latest
    - azure-keyvault:latest

Azure Key Vaultにアクセスするための設定。

jenkins-jcasc.yaml
  JCasC:
    enabled: true
    .
    .
    .
    ConfigScripts:
      welcome-message: |
        jenkins:
        credentials:
          system:
            domainCredentials:
            - credentials:
              - azure:
                  azureEnvironmentName: "Azure"
                  clientId: "1234567-89123-....."
                  clientSecret: "**********************"
                  description: "Azure SP"
                  id: "service-principal-myapp"
                  scope: SYSTEM
                  subscriptionId: "987654-321987....."
                  tenant: "654321-654321..."
        unclassified:
          azureKeyVault:
            keyVaultURL: https://myapp-keyvault.vault.azure.net
            credentialID: service-principal-myapp

上で設定した使用するサービスプリンシパルにKey VaultのGetList権限を付与します。Terraformを使う場合は以下のような感じです。


resource "azurerm_key_vault" "my_keys" {
.
.
.
 access_policy {
    secret_permissions      = [
        "Get",
        "List",
    ]
    object_id               = var.azure_spn_id 
    tenant_id               = var.azure_tenant_id
 }   
}

Jenkinsからシークレットを取得

設定後、Azure Key ValutのシークレットをJenkinsからアクセスできるようになります。

image.png

パイプラインからシークレットを取得する場合は、このような感じでできます。

    environment {
        AZ_MY_SECRET = credentials('az-my-secret')
    }

これを使うと、システムの自動化などで必要なシークレットはAzure Key Valutで一元管理し、JenkinsのCredentialsに作る必要はなくなります。

この記事は

"3000文字Tips - 知ると便利なTipsをみんなへ届けよう"の投稿記事です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0