Skip to main content

Konfigurieren von OpenID Connect in JFrog

Verwenden Sie OpenID Connect in Ihren Workflows zum Authentifizieren bei JFrog.

Übersicht

OpenID Connect (OIDC) ermöglicht es Ihren GitHub Actions-Workflows, sich bei JFrog zu authentifizieren, um Artefakte herunterzuladen und zu veröffentlichen, ohne JFrog-Passwörter, Token oder API-Schlüssel in GitHub zu speichern.

In diesem Handbuch finden Sie eine Übersicht darüber, wie Sie JFrog so konfigurieren, dass das OIDC von GitHub als Verbundidentität als vertrauenswürdig angesehen wird. Außerdem erfahren Sie, wie Sie diese Konfiguration in einem GitHub Actions-Workflow nutzen können.

Ein Beispiel für einen GitHub Actions-Workflow finden Sie unter Beispiel für GitHub Actions-Integration in der JFrog-Dokumentation.

Ein Beispiel für einen GitHub Actions-Workflow mit Nutzung der JFrog CLI finden Sie unter build-publish.yml im jfrog-github-oidc-example-Repository.

Voraussetzungen

  • Informationen zu den grundlegenden Konzepten, nach denen GitHub OpenID Connect (OIDC) sowie die Architektur und Vorteile des Protokolls verwendet, findest du unter Informationen zur Sicherheitshärtung mit OpenID Connect.

  • Bevor du fortfährst, musst du deine Sicherheitsstrategie planen, um sicherzustellen, dass Zugriffs-Token nur auf vorhersehbare Weise zugewiesen werden. Zur Steuerung, wie dein Cloud-Anbieter Zugriffs-Token ausgibt, musst du mindestens eine Bedingung definieren, damit nicht vertrauenswürdige Repositorys keine Zugriffs-Token für deine Cloud-Ressourcen anfordern können. Weitere Informationen findest du unter Informationen zur Sicherheitshärtung mit OpenID Connect.

  • Beachte, dass du bestimmte Werte in der folgenden Dokumentation ersetzen musst, wenn du den Leitfaden auf GHE.com verwendest. Weitere Informationen finden Sie unter Informationen zur Sicherheitshärtung mit OpenID Connect.

  • Um sicher zu sein, müssen Sie beim Konfigurieren von Identitätszuordnungen ein „Claims JSON“ in JFrog festlegen. Weitere Informationen finden Sie unter AUTOTITLE und unter Informationen zur Sicherheitshärtung mit OpenID Connect.

    Sie können z. B. iss auf https://token.actions.githubusercontent.com und repository auf etwas in der Art von „octo-org/octo-repo“ festlegen. Dadurch wird gewährleistet, dass nur Aktionen-Workflows aus dem angegebenen Repository Zugriff auf Ihre JFrog-Plattform haben. Im Folgenden finden Sie ein Beispiel für „Claims JSON“ beim Konfigurieren von Identitätszuordnungen.

    JSON
    {
      "iss": "https://token.actions.githubusercontent.com",
      "repository": "octo-org/octo-repo"
    }
    

Hinzufügen des Identitätsanbieters zu JFrog

Um OIDC mit JFrog zu verwenden, richten Sie eine Vertrauensstellung zwischen GitHub Actions und der JFrog-Plattform ein. Weitere Informationen zu diesem Prozess finden Sie unter Integration von OpenID Connect in der JFrog-Dokumentation.

  1. Melden Sie sich bei Ihrer JFrog-Plattform an.
  2. Konfigurieren Sie die Vertrauensstellung zwischen JFrog und Ihren GitHub Actions-Workflows.
  3. Konfigurieren von Identitätszuordnungen

Aktualisieren deines GitHub Actions-Workflows

Nachdem Sie eine Vertrauensstellung zwischen GitHub Actions und der JFrog-Plattform hergestellt haben, können Sie Ihre GitHub Actions-Workflowdatei aktualisieren.

Achten Sie bei Ihrer GitHub Actions-Workflowdatei darauf, den Anbieternamen und die Zielgruppe zu verwenden, die Sie in der JFrog-Plattform konfiguriert haben.

Im folgenden Beispiel wird der Platzhalter YOUR_PROVIDER_NAME verwendet.

- name: Fetch Access Token from Artifactory
        id: fetch_access_token
        env:
          ID_TOKEN: $
        run: |
          ACCESS_TOKEN=$(curl \
          -X POST \
          -H "Content-type: application/json" \
          https://example.jfrog.io/access/api/v1/oidc/token \
          -d \
          "{\"grant_type\": \"urn:ietf:params:oauth:grant-type:token-exchange\", \"subject_token_type\":\"urn:ietf:params:oauth:token-type:id_token\", \"subject_token\": \"$ID_TOKEN\", \"provider_name\": \"YOUR_PROVIDER_NAME\"}" | jq .access_token | tr -d '"')
          echo ACCESS_TOKEN=$ACCESS_TOKEN >> $GITHUB_OUTPUT

Das folgende Beispiel zeigt einen Teil einer GitHub Actions-Workflowdatei mit cURL.

- name: Get ID Token (cURL method)
        id: idtoken
        run: |
          ID_TOKEN=$(curl -sLS -H "User-Agent: actions/oidc-client" -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
          "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=jfrog-github" | jq .value | tr -d '"')
          echo "ID_TOKEN=${ID_TOKEN}" >> $GITHUB_OUTPUT

Alternativ können Sie die Zielgruppe mithilfe des env-Kontexts als Umgebungsvariable festlegen. Weitere Informationen zum env-Kontext findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen.

Hinweis: Wenn Umgebungen in Workflows oder in OIDC-Richtlinien verwendet werden, empfehlen wir, der Umgebung Schutzregeln für zusätzliche Sicherheit hinzuzufügen. Du kannst z. B. Bereitstellungsregeln für eine Umgebung konfigurieren, um einzuschränken, welche Verzweigungen und Tags in der Umgebung oder in geheimen Umgebungsschlüsseln bereitgestellt werden können. Weitere Informationen findest du unter Verwalten von Umgebungen für die Bereitstellung.

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      OIDC_AUDIENCE: 'YOUR_AUDIENCE'

In Ihrer Workflowdatei können Sie anschließend die Werte von Variablen abrufen, die im env-Kontext gespeichert sind. Im folgenden Beispiel wird der env-Kontext verwendet, um die OIDC-Zielgruppe abzurufen.

- name: Get ID Token (using env context)
        uses: actions/github-script@v6
        id: idtoken
        with:
          script: |
            const coredemo = require('@actions/core');
            let id_token = await coredemo.getIDToken(process.env.OIDC_AUDIENCE);
            coredemo.setOutput('id_token', id_token);