概要
OpenID Connect (OIDC) を使用すると、 GitHub Actions ワークフローで JFrog を使用して認証を行い、 JFrog のパスワード、トークン、または API キーを GitHubに格納せずに成果物をダウンロードして発行できます。
このガイドでは、 GitHubの OIDC をフェデレーション ID として信頼するように JFrog を構成する方法の概要と、 GitHub Actions ワークフローでこの構成を使用する方法について説明します。
GitHub Actionsワークフローの例については、JFrog ドキュメントのサンプル GitHub Actions統合を参照してください。
JFrog CLI を使用GitHub Actionsワークフローの例については、build-publish.yml リポジトリのを参照してください。
前提条件
-
GitHub が OpenID Connect (OIDC) を使用する方法の基本的な概念とそのアーキテクチャと利点については、「OpenID Connect」を参照してください。
-
先に進む前に、アクセス トークンが予測可能な方法でのみ割り当てられるようにセキュリティ戦略を計画する必要があります。 クラウド プロバイダーがアクセス トークンを発行する方法を制御するには、少なくとも 1 つの条件を定義し、信頼できないリポジトリがクラウド リソースにアクセス トークンを要求できないようにする必要があります。 詳しくは、「OpenID Connect」をご覧ください。
-
セキュリティで保護するには、ID マッピングを構成するときに JFrog で Claims JSON を設定する必要があります。 詳細については、「AUTOTITLE」および「OpenID Connect」を参照してください。
たとえば、
issはhttps://token.actions.githubusercontent.comに、そしてrepositoryは "octo-org/octo-repo" などに設定できます。 これにより、指定されたリポジトリの Actions ワークフローのみが JFrog プラットフォームにアクセスできるようになります。 ID マッピングを構成するときの 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 への ID プロバイダーの追加
JFrog で OIDC を使用するには、 GitHub Actions と JFrog プラットフォームの間に信頼関係を確立します。 このプロセスの詳細については、JFrog 説明書の「OpenID Connect 統合」を参照してください。
- JFrog プラットフォームにサインインします。
- JFrog と GitHub Actions ワークフロー間の信頼を構成します。
- ID マッピングを構成します。
GitHub Actions ワークフローの更新
OIDC を使った JFrog での認証
GitHub Actions ワークフロー ファイルで、JFrog Platform で構成したプロバイダー名と対象ユーザーを使用していることを確認します。
次の例では、プレースホルダー 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 統合](https://docs.jfrog.com/administration/docs/openid-connect-integration)」 -
JFrog ドキュメントの「[ID マッピング](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings)」 - OpenID Connect