Skip to main content
Skip to content

Konfigurieren von OpenID Connect in JFrog

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

Überblick

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

Dieser Leitfaden bietet einen Überblick darüber, wie JFrog so konfiguriert wird, dass es dem OIDC von GitHub als föderierter Identität vertraut, und zeigt, wie diese Konfiguration in einem GitHub Actions-Workflow verwendet wird.

Ein Beispielworkflow GitHub Actions finden Sie in der JFrog-Dokumentation unter "BeispielintegrationGitHub Actions".

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

Voraussetzungen

  • Informationen zu den grundlegenden Konzepten der Verwendung von GitHub OpenID Connect (OIDC) und deren Architektur und Vorteile finden Sie unter 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 finden Sie unter OpenID Connect.

  • Für Aktualisierungsaufträge angeforderte Dependabot OIDC-Token haben einen event_name Anspruch von dynamic. Wenn Ihre Vertrauensrichtlinie nur GitHub Actions Workflows autorisieren soll und Ihr Cloudanbieter Bedingungen für event_name unterstützt, lassen Sie nur die Ereignisnamen zu, die von Ihren Workflows erwartet werden. Weitere Informationen finden Sie unter OpenID Connect.

  • Wenn Sie dieser Anleitung auf GHE.com folgen, beachten Sie, dass Sie in der folgenden Dokumentation bestimmte Werte ersetzen müssen. Weitere Informationen findest du unter OpenID Connect.

  • Um sicher zu sein, müssen Sie beim Konfigurieren von Identitätszuordnungen ein „Claims JSON“ in JFrog festlegen. Weitere Informationen findest du unter AUTOTITLE und OpenID Connect-Referenz.

    Beispielsweise können Sie https://token.actions.githubusercontent.com auf repository und octo-org/octo-repo auf etwas wie iss festlegen. JFrog-Identitätszuordnungen gleichen jeden Claim mit einem exakten Wert ab. Um sicherzustellen, dass nur GitHub Actions-Workflows aus dem angegebenen Repository Zugriff auf Ihre JFrog-Plattform haben, legen Sie event_name ebenfalls auf das Ereignis fest, das Ihren Workflow auslöst, z. B. push. Dadurch wird verhindert, dass für Dependabot Update-Jobs angeforderte OIDC-Token, die ein event_name von dynamic haben, mit der Identitätszuordnung übereinstimmen. Wenn Ihre Workflows durch mehrere Ereignisse ausgelöst werden, erstellen Sie eine separate Identitätszuordnung für jeden Ereignisnamen. 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",
        "event_name": "push"
    }
    

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 des GitHub Actions Workflows

Authentifizieren bei JFrog mit OIDC

Stellen Sie in Ihrer GitHub Actions Workflowdatei sicher, dass Sie den Anbieternamen und die Zielgruppe verwenden, die Sie in der JFrog-Plattform konfiguriert haben.

Im folgenden Beispiel werden die Platzhalter YOUR_PROVIDER_NAME und YOUR_AUDIENCE verwendet.

# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
permissions:
  id-token: write
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Set up JFrog CLI with OIDC
        id: setup-jfrog-cli
        uses: jfrog/setup-jfrog-cli@29fa5190a4123350e81e2a2e8d803b2a27fed15e
        with:
          JF_URL: ${{ env.JF_URL }}
          oidc-provider-name: 'YOUR_PROVIDER_NAME'
          oidc-audience: 'YOUR_AUDIENCE' # This is optional

      - name: Upload artifact
        run: jf rt upload "dist/*.zip" my-repo/

Tipp

Wenn die OIDC-Authentifizierung verwendet wird, gibt die setup-jfrog-cli-Aktion automatisch oidc-user und oidc-token als Schrittausgabe zurück. Diese können für andere Integrationen verwendet werden, die eine Authentifizierung mit JFrog erfordern. Um auf diese Ausgaben zu verweisen, muss für den Schritt explizit ein id-Wert definiert sein (z. B. id: setup-jfrog-cli).

Verwenden von OIDC-Anmeldeinformationen in anderen Schritten

# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
      - name: Sign in to Artifactory Docker registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.JF_URL }}
          username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }}
          password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }}

Weiterführende Themen