概述
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" }
{ "iss": "https://token.actions.githubusercontent.com", "repository": "octo-org/octo-repo" }
将标识提供者添加到 JFrog
若要将 OIDC 与 JFrog 配合使用,请在 GitHub Actions 与 JFrog 平台之间建立信任关系。 有关此过程的详细信息,请参阅 JFrog 文档中的 OpenID Connect 集成。
- 登录 JFrog 平台。
- 配置 JFrog 与 GitHub Actions 工作流之间的信任关系。
- 配置标识映射。
更新 GitHub Actions 工作流程
使用 OIDC 通过 JFrog 进行身份验证
在 GitHub Actions 工作流文件中,请确保使用在 JFrog 平台中配置的提供者名称和受众。
以下示例使用占位符 YOUR_PROVIDER_NAME
和 YOUR_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-user
和 oidc-token
作为步骤输出。
这些输出可用于需要通过 JFrog 进行身份验证的其他集成。
若要引用这些输出,请确保该步骤定义了显式 id
(例如 id: setup-jfrog-cli
)。
在其他步骤中使用 OIDC 凭据
- name: Sign in to Artifactory Docker registry
uses: docker/login-action@v3
with:
registry: $
username: $
password: $
其他阅读材料
- JFrog 文档中的 OpenID Connect 集成
- JFrog 文档中的标识映射
- 关于使用 OpenID Connect 进行安全强化