Skip to main content

在 JFrog 中配置 OpenID Connect

在工作流中使用 OpenID Connect 来完成 JFrog 身份验证。

概述

OpenID Connect (OIDC) 允许 GitHub Actions 工作流完成 JFrog 身份验证,无需在 GitHub 中存储 JFrog 密码、令牌或 API 密钥即可下载和发布项目。

本指南概述了如何将 JFrog 配置为信任 GitHub 的 OIDC 作为联合标识,并演示如何在 GitHub Actions 工作流中使用此配置。

有关示例 GitHub Actions 工作流,请参阅 JFrog 文档中的示例 GitHub Actions 集成

有关使用 JFrog CLI 的示例 GitHub Actions 工作流,请参阅 jfrog-github-oidc-example 存储库中的 build-publish.yml

先决条件

  • 若要了解 GitHub 如何使用 OpenID Connect (OIDC) 及其体系结构和优势的基本概念,请参阅“关于使用 OpenID Connect 进行安全强化”。

  • 在继续之前,必须规划安全策略,以确保仅以可预测的方式分配访问令牌。 要控制云提供商颁发访问令牌的方式,必须至少定义一个条件,以便不受信任的存储库无法为云资源请求访问令牌。 有关详细信息,请参阅“关于使用 OpenID Connect 进行安全强化”。

  • 为了确保安全,在配置标识映射时,需要在 JFrog 中设置 Claims JSON。 有关详细信息,请参阅 AUTOTITLE关于使用 OpenID Connect 进行安全强化

    例如,可以将 iss 设置为 https://token.actions.githubusercontent.com,将 repository 设置为类似“octo-org/octo-repo”的内容。 这将确保只有来自指定存储库的 Actions 工作流才有 JFrog 平台访问权限。 下面是配置标识映射时的 Claims JSON 示例。

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

将标识提供者添加到 JFrog

若要将 OIDC 与 JFrog 配合使用,请在 GitHub Actions 与 JFrog 平台之间建立信任关系。 有关此过程的详细信息,请参阅 JFrog 文档中的 OpenID Connect 集成

  1. 登录 JFrog 平台。
  2. 配置 JFrog 与 GitHub Actions 工作流之间的信任关系。
  3. 配置标识映射。

更新 GitHub Actions 工作流程

使用 OIDC 通过 JFrog 进行身份验证

在 GitHub Actions 工作流文件中,请确保使用在 JFrog 平台中配置的提供者名称和受众。

以下示例使用占位符 YOUR_PROVIDER_NAMEYOUR_AUDIENCE

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: $
          oidc-provider-name: 'YOUR_PROVIDER_NAME' 
          oidc-audience: 'YOUR_AUDIENCE' # This is optional

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

提示

使用 OIDC 身份验证时,setup-jfrog-cli 操作会自动提供 oidc-useroidc-token 作为步骤输出。 这些输出可用于需要通过 JFrog 进行身份验证的其他集成。 若要引用这些输出,请确保该步骤定义了显式 id(例如 id: setup-jfrog-cli)。

在其他步骤中使用 OIDC 凭据

      - name: Sign in to Artifactory Docker registry
        uses: docker/login-action@v3
        with:
          registry: $
          username: $
          password: $

其他阅读材料