概要
OpenID Connect (OIDC) を使用すると、GitHub Actions ワークフローで JFrog で認証 を行い、JFrog パスワード、トークン、または API キーを GitHub に格納せずに成果物をダウンロードして発行できます。
このガイドでは、GitHub の OIDC をフェデレーション ID として信頼するように JFrog を構成する方法の概要と、GitHub Actions ワークフローでこの構成を使用する方法について説明します。
GitHub Actions ワークフローの例については、JFrog 説明書の「サンプル GitHub Actions 統合」を参照してください。
JFrog CLI を使用した GitHub Actions ワークフローの例については、jfrog-github-oidc-example
リポジトリの「build-publish.yml
」を参照してください。
前提条件
-
GitHub が OpenID Connect (OIDC) を使用する方法の基本的な概念とそのアーキテクチャと利点については、「OpenID Connect を使ったセキュリティ強化について」を参照してください。
-
先に進む前に、アクセス トークンが予測可能な方法でのみ割り当てられるようにセキュリティ戦略を計画する必要があります。 クラウド プロバイダーがアクセス トークンを発行する方法を制御するには、少なくとも 1 つの条件を定義し、信頼できないリポジトリがクラウド リソースにアクセス トークンを要求できないようにする必要があります。 詳しくは、「OpenID Connect を使ったセキュリティ強化について」をご覧ください。
-
GHE.com に関するこのガイドに従っている場合は、次のドキュメントの特定の値を置き換える必要があることを理解してください。 「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 プロバイダーの追加
OIDC と JFrog を使用するには、GitHub Actions と JFrog プラットフォームの間に信頼関係を確立します。 このプロセスの詳細については、JFrog 説明書の「OpenID Connect 統合」を参照してください。
- JFrog プラットフォームにサインインします。
- JFrog と GitHub Actions ワークフロー間の信頼を構成します。
- ID マッピングを構成します。
GitHub Actions ワークフローを更新する
OIDC を使った JFrog での認証
GitHub Actions ワークフロー ファイルで、JFrog Platform で構成したプロバイダー名とオーディエンスを使用していることを確認します。
次の例では、プレースホルダー 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 Integration」(OpenID Connect の統合)
- JFrog ドキュメントの「Identity Mappings」(ID マッピング)
- AUTOTITLE