Skip to main content

Настройка OpenID Connect в JFrog

Используйте OpenID Connect в рабочих процессах для проверки подлинности с помощью JFrog.

Обзор

OpenID Connect (OIDC) позволяет вашим GitHub Actions рабочим процессам аутентифицироваться с помощью JFrog для скачивания и публикации артефактов без хранения паролей, токенов или API-ключей JFrog в GitHub.

В этом руководстве представлен обзор того, как настроить JFrog для доверия GitHubOIDC от 's as federated identity, а также демонстрируется, как использовать эту конфигурацию в рабочем GitHub Actions процессе.

Для примера GitHub Actions рабочего процесса см. раздел «Интеграция примеровGitHub Actions» в документации JFrog.

Пример GitHub Actions рабочего процесса с использованием JFrog CLI см. build-publish.yml в jfrog-github-oidc-example репозитории.

Необходимые компоненты

  • Основные понятия использования GitHub OpenID Connect (OIDC) и его архитектуры и преимуществ см. в статье OpenID Connect.

  • Прежде чем продолжить, необходимо спланировать стратегию безопасности, чтобы обеспечить выдачу маркеров доступа только предсказуемым способом. Чтобы управлять тем, как поставщик облачных служб выдает маркеры доступа, необходимо определить по крайней мере одно условие, запретив недоверенным репозиториям запрашивать маркеры доступа к облачным ресурсам. Дополнительные сведения см. в разделе AUTOTITLE AUTOTITLE.

  • Маркеры OIDC, запрошенные для Dependabot заданий event_name обновления, имеют утверждение dynamic. Если политика доверия предназначена для авторизации только GitHub Actions рабочих процессов, и поставщик облачных служб поддерживает условия event_name, разрешайте только имена событий, ожидаемые рабочими процессами. Дополнительные сведения см. в разделе AUTOTITLE AUTOTITLE.

  • Если вы используете это руководство GHE.com, понять, что необходимо заменить определенные значения в следующей документации. См . раздел AUTOTITLE.

  • Чтобы обеспечить безопасность, необходимо задать JSON утверждений в JFrog при настройке сопоставлений удостоверений. Дополнительные сведения см. в разделе [AUTOTITLE и AUTOTITLE](/actions/reference/security/oidc#customizing-the-token-claims).

    Например, можно задать iss``https://token.actions.githubusercontent.comзначение , а repository также что-то подобное octo-org/octo-repo. Сопоставления удостоверений JFrog соответствуют каждому утверждению с точным значением, поэтому для обеспечения доступа только GitHub Actions рабочих процессов из указанного репозитория к платформе JFrog также устанавливается event_name событие, которое активирует рабочий процесс, например push. Это предотвращает запрос маркеров OIDC для Dependabot заданий обновления, которые имеют event_name``dynamicсопоставление удостоверений. Если рабочие процессы активируются несколькими событиями, создайте отдельное сопоставление удостоверений для каждого имени события. Ниже приведен пример JSON утверждений при настройке сопоставлений удостоверений.

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

Добавление поставщика удостоверений в JFrog

Чтобы использовать OIDC с JFrog, установите доверительные отношения между GitHub Actions платформой JFrog. Дополнительные сведения об этом процессе см . в статье "Интеграция OpenID Connect" в документации по JFrog.

  1. Войдите на платформу JFrog.
  2. Настройте доверие между JFrog и вашими GitHub Actions рабочими процессами.
  3. Настройте сопоставления удостоверений.

Обновление вашего GitHub Actions рабочего процесса

Проверка подлинности с помощью JFrog с помощью OIDC

В файле GitHub Actions рабочего процесса убедитесь, что вы используете имя провайдера и аудиторию, настроенную на платформе JFrog.

В следующем примере используются заполнители YOUR_PROVIDER_NAME и YOUR_AUDIENCE.

# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
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/

Совет

При использовании setup-jfrog-cli проверки подлинности OIDC действие автоматически предоставляет oidc-user и oidc-token в качестве выходных данных шага. Их можно использовать для других интеграции, требующих проверки подлинности с помощью JFrog. Чтобы ссылаться на эти выходные данные, убедитесь, что на шаге определен явный id (например id: setup-jfrog-cli).

Использование учетных данных OIDC в других шагах

# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
      - 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 }}

Дополнительные материалы