Skip to main content

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

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

Обзор

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

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

Пример рабочего процесса GitHub Actions см . в примере интеграции GitHub Actions в документации по JFrog.

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

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

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

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

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

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

    Например, можно задать iss https://token.actions.githubusercontent.comзначение , а repository также что-то вроде "octo-org/octo-repo". Это обеспечит доступ к платформе JFrog только рабочих процессов Actions из указанного репозитория. Ниже приведен пример JSON утверждений при настройке сопоставлений удостоверений.

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

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

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

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

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

После установления отношения доверия между GitHub Actions и платформой JFrog можно обновить файл рабочего процесса GitHub Actions.

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

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

- 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

В следующем примере показана часть файла рабочего процесса GitHub Actions с помощью 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

Кроме того, аудиторию можно задать в качестве переменной среды с помощью контекста env . Дополнительные сведения о контексте env см. в разделе "Доступ к контекстной информации о запусках рабочих процессов".

Note

Если среды используются в рабочих процессах или политиках OIDC, рекомендуется добавить правила защиты в среду для дополнительной безопасности. Например, можно настроить правила развертывания в среде, чтобы ограничить, какие ветви и теги могут развертываться в среде или получить доступ к секретам среды. Дополнительные сведения см. в разделе Управление средами для развертывания.

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

Затем в файле рабочего процесса извлеките значение переменных, хранящихся в контексте env . В следующем примере используется env контекст для получения аудитории OIDC.

- 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);