IBM Cloud Docs
Jenkins-Plug-in für Vault integrieren

Jenkins-Plug-in für Vault integrieren

Verwenden Sie bereits das Vault-Plug-in Jenkins ? Sie können dieses Tool in IBM Cloud® Secrets Manager integrieren und so die Änderungen in Ihrer Konfiguration minimieren.

Vorbereitende Schritte

  1. Vergewissern Sie sich, dass Sie über die erforderliche Zugriffsberechtigung verfügen. Sie benötigen die Servicerolle SecretsReader, um geheime Schlüssel anzuzeigen.
  2. Erstellen Sie einen IAM-API-Schlüssel mithilfe einer Service-ID, die über SecretsReader-Berechtigungen verfügt.

Jenkins-Vault-Plug-in-Integration einrichten

Durch die Ausführung dieser Schritte können Sie Secrets Manager in das Plug-in integrieren, das Sie in Ihrem Jenkins-Job oder -Projekt verwenden. Weitere Informationen zum Jenkins-Plug-in finden Sie unter Hashicorp Vault.

  1. Wählen Sie im Jenkins-Dashboard Ihren Job oder Projekt aus, in dem Sie das Plug-in verwenden.
  2. Klicken Sie im Konfigurationsabschnitt auf Umgebung erstellen.
  3. Wählen Sie Vault-Plug-in aus.
  4. Wählen Sie Vault Token Credentials im Feld Credential Authentication Kind aus.
  5. Erstellen Sie einen Platzhalterwert für das Feld Token (z. B. temp).
  6. Legen Sie eine ID fest (z. B. sm-vault-token).
  7. Klicken Sie auf Hinzufügen.
  8. Verweisen Sie im Feld Vault-URL auf die URL Ihrer Secrets Manager-Instanz.
  9. Klicken Sie auf Erweitert, um den Präfixpfad anzuzeigen.
  10. Setzen Sie Prefix Path auf ibmcloud/kv.
  11. Stellen Sie sicher, dass die K/V-Engineversion 2 ist.

Vault-Token des Plug-ins aktualisieren

Sie können einen vault-refresh-Job so konfigurieren, dass er regelmäßig ausgeführt wird, um das Vault-Token zu aktualisieren, bevor es abläuft.

  1. Erstellen Sie einen regelmäßig wiederholten Job, um das Token zu aktualisieren. Das Token verwendet den CLI-Befehl Jenkins update-credentials-by-xml, um den Wert des Tokenberechtigungsnachweises zu aktualisieren, den Sie in Schritt 2 des Abschnitts Einrichten als Platzhalterwert definiert haben.

  2. Erstellen Sie beispielsweise einen Jenkins-Job mit dem Namen vault-refresh.

  3. Fügen Sie im Abschnitt Buildumgebung den Namen des geheimen Schlüssels als Variable Text für geheimen Schlüssel hinzu. Es wird empfohlen, dass Sie einen API-Schlüssel aus einer Service-ID generieren. Weisen Sie der Service-ID den minimalen Zugriff zu, der zum Lesen der geheimen Schlüssel erforderlich ist, die Sie mithilfe des Jenkins-Plug-ins verarbeiten.

  4. Fügen Sie im Abschnitt Buildschritte Executive Shell hinzu und geben Sie das folgende Script ein.

    wget YOUR-TAAS-JENKINS-INSTANCE-NAME.swg-devops.com/jnlpJars/jenkins-cli.jar
    export IAM_TOKEN=$(curl -X POST 'https://iam.cloud.ibm.com/identity/token' -H 'Content-Type: application/x-www-form-urlencoded' -d "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=${IAM_API_KEY}" | jq --raw-output '.access_token')
    export NEW_VAULT_TOKEN=$(curl -X PUT -H "X-Vault-Request: true" -d "{\"token\":\"${IAM_TOKEN}\"}" ${VAULT_ADDR}/v1/auth/ibmcloud/login | jq --raw-output '.auth.client_token')
    
    printf "<com.datapipe.jenkins.vault.credentials.VaultTokenCredential plugin=\"hashicorp-vault-plugin@3.8.0\"><scope>GLOBAL</scope><id>sm-vault-token</id><description>Vault token for Secrets Manager</description><token>$NEW_VAULT_TOKEN</token></com.datapipe.jenkins.vault.credentials.VaultTokenCredential>" > creds.xml
    java -jar jenkins-cli.jar -s https://YOUR-TAAS-JENKINS-INSTANCE-NAME.swg-devops.com/ -auth <Jenkins user>:<user token> update-credentials-by-xml system::system::jenkins '(global)' sm-vault-token < creds.xml
    

    Jenkins user steht für den Benutzer oder die FID, die Sie zum Ausführen Ihrer Jenkins-Automatisierung verwenden. user token ist ein Token, das zum Benutzer gehört. Zum Abrufen eines Jenkins-API-Schlüssels oder -Tokens klicken Sie auf den Benutzernamen und wählen Konfigurieren > API-Token > Neues Token* aus.

    Geben Sie die Werte an, die Ihrer Umgebung zugeordnet sind. Die ID des Vault-Tokens in der XML entspricht der ID, die Sie in Schritt 2 zugeordnet haben. Nach der Ausführung des Jobs wird das Vault-Token mit dem tatsächlichen Wert aktualisiert.

Weitere Informationen zur Secrets Manager-Authentifizierung und zu Vault-Tokens finden Sie in der Vault-API-Referenz.

Nächste Schritte

Nachdem Sie nun Ihren Jenkins-Job mithilfe des Vault-Plug-ins integriert haben, können Sie geheime Schlüssel aus Secrets Manager abrufen und die Umgebungsvariablen wie gewohnt ohne weitere Codeänderungen hinzufügen.