概述
OpenID Connect(OIDC)允许 GitHub Actions 工作流使用 JFrog 进行身份验证,以下载和发布项目,而无需将 JFrog 密码、令牌或 API 密钥存储在其中 GitHub。
本指南概述了如何将 JFrog 配置为信任 GitHub的 OIDC 作为联合标识,并演示如何在工作流中使用 GitHub Actions 此配置。
有关一个示例 GitHub Actions 工作流,请参阅 JFrog 文档中的 示例 GitHub Actions 集成。
有关使用 JFrog CLI 的示例GitHub Actions工作流,请参阅 build-publish.yml 存储库中的 。
先决条件
-
若要了解 GitHub 如何使用 OpenID Connect (OIDC) 及其体系结构和优势的基本概念,请参阅“OpenID Connect”。
-
在继续之前,必须规划安全策略,以确保仅以可预测的方式分配访问令牌。 要控制云提供商颁发访问令牌的方式,必须至少定义一个条件,以便不受信任的存储库无法为云资源请求访问令牌。 有关详细信息,请参阅“OpenID Connect”。
-
如果按照 GHE.com 上的指南进行操作,需要了解的是,必须替换以下文档中的某些值。 请参阅“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" }{ "iss": "https://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }
将标识提供者添加到 JFrog
若要将 OIDC 与 JFrog 配合使用,请建立与 JFrog 平台之间的 GitHub Actions 信任关系。 有关此过程的详细信息,请参阅 JFrog 文档中的 OpenID Connect 集成。
- 登录 JFrog 平台。
- 在 JFrog 和 GitHub Actions 工作流之间配置信任。
- 配置标识映射。
更新 GitHub Actions 工作流
使用 OIDC 在 JFrog 中进行身份验证
在您的 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/
提示
使用 OIDC 身份验证时,setup-jfrog-cli 操作会自动提供 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 }}
其他阅读材料
- JFrog 文档中的 OpenID Connect 集成
- JFrog 文档中的身份映射
- OpenID Connect