メモ
現在、GitHub Actions の Google Cloud Storage のサポートは パブリック プレビュー であり、変更される可能性があります。
GitHub Actions
の外部ストレージについて
GitHub Actions は、外部 BLOB ストレージを使って、ワークフローの実行によって生成されたデータを格納します。 格納されるデータには、ワークフローのログ、キャッシュ、およびユーザーがアップロードしたビルド成果物が含まれます。詳細については、「GitHub Enterprise Server で GitHub Actions を開始する方法」を参照してください。
外部ストレージ プロバイダーに接続するように GitHub Enterprise Server を構成するには、次の 2 つのオプションがあります。
- OpenID Connect (OIDC)
- シークレットを使った従来の資格情報ベースの認証
機密性が高く有効期間が長い資格情報シークレットを作成または管理したり、公開してリスクを発生させたりする必要がないため、可能であれば OIDC を使うことをお勧めします。 OIDC で信頼を定義すると、クラウド ストレージ プロバイダーによって、お使いの GitHub Enterprise Server インスタンス へのアクセス トークンが自動的に発行されます。このアクセス トークンは、有効期間が短く、自動的に期限が切れます。
前提条件
GitHub Actions を有効化する前に、次のステップを完了していることを確認してください。
-
ワークフローの実行によって生成されるデータを保存するための Google Cloud Storage バケットを作成します。
-
GitHub Actionsのためのハードウェア要件をレビューしてください。 詳しくは、「GitHub Enterprise Server で GitHub Actions を開始する方法」をご覧ください。
-
TLS は、GitHub Enterprise Server のドメインに構成されている必要があります。 詳しくは、「TLSの設定」をご覧ください。
メモ
信頼された認証局によって署名された証明書でGitHub Enterprise Server上のTLSを設定することを強くおすすめします。 自己署名証明書でも動作はしますが、セルフホストランナーに追加の設定が必要になり、プロダクションの環境では推奨されません。
-
GitHub に HTTP プロキシ サーバーが構成されている場合
-
HTTP プロキシ除外リストに
.localhost、127.0.0.1、::1を追加 (この順序で) する必要があります。 -
ご利用の外部ストレージの場所がルーティング不可能である場合は、該当する外部ストレージ URL も、除外リストに追加する必要があります。
プロキシ設定の変更の詳細については、「アウトバウンドの Web プロキシ サーバーの設定」を参照してください。* ストレージ プロバイダーへの接続に OIDC を使っている場合は、お使いの GitHub Enterprise Server インスタンス 上の次の OIDC トークン サービス URL をパブリック インターネットに公開する必要があります。
https://HOSTNAME/_services/token/.well-known/openid-configuration
https://HOSTNAME/_services/token/.well-known/jwks
これにより、ストレージ プロバイダーは、認証のために お使いの GitHub Enterprise Server インスタンス に接続できるようになります。
OIDC を使用する Google Cloud Storage での GitHub Actions の有効化 (推奨)
Google Cloud Storage で OIDC を使用するように GitHub Enterprise Server を構成するには、まず Google Cloud サービス アカウントを作成してから、Google Cloud ID プールと ID プロバイダーを作成し、最後にプロバイダーとサービス アカウントを使用して Google Cloud Storage バケットにアクセスするように GitHub Enterprise Server を構成する必要があります。
1. サービス アカウントを作成する
-
OIDC を使用してバケットにアクセスできるサービス アカウントを作成します。 詳細については、Google Cloud のドキュメント「サービス アカウントの作成と管理」を参照してください。
サービス アカウントを作成するときは、必ず次のことを行ってください。
- 「サービス アカウントの作成と管理」の冒頭で説明されているように、IAM API を有効にします。
- サービス アカウントに次のロールを追加します。
- サービス アカウント トークン作成者
- ストレージ オブジェクト管理者
-
サービス アカウントを作成した後、後で必要になるため、そのメール アドレスをメモします。 サービス アカウントのメール アドレスの形式は
SERVICE-ACCOUNT-NAME@PROJECT-NAME.iam.gserviceaccount.comです。
2. ID プールと ID プロバイダーを作成する
-
Google Cloud コンソールで、[新しいワークロード プロバイダーとプール] ページに移動します。
-
[ID プールの作成] で、ID プールの名前を入力し、 [続行] をクリックします。
-
[プールにプロバイダーを追加する] で、次のようにします。
-
[プロバイダーの選択] で、 [OpenID Connect (OIDC)] を選びます。
-
[プロバイダー名] に、プロバイダーの名前を入力します。
-
[発行者 (URL)] に次の URL を入力し、
HOSTNAMEを お使いの GitHub Enterprise Server インスタンス のパブリック ホスト名に置き換えます。https://HOSTNAME/_services/token次に例を示します。
https://my-ghes-host.example.com/_services/token -
[対象ユーザー] では、 [既定の対象ユーザー] を選択したままにしますが、後で必要になるため、ID プロバイダーの URL をメモしておきます。 ID プロバイダーの URL の形式は
https://iam.googleapis.com/projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAMEです。 -
**[Continue]** をクリックします。
-
-
[プロバイダー属性の構成] で、次のようにします。
-
[OIDC 1] マッピングでは、「
assertion.sub」と入力します。 -
[属性条件] で、 [条件の追加] をクリックします。
-
[条件 CEL] に次の条件を入力し、
HOSTNAMEを お使いの GitHub Enterprise Server インスタンス のパブリック ホスト名に置き換えます。google.subject == "HOSTNAME"次に例を示します。
google.subject == "my-ghes-host.example.com"メモ
ここで使用する お使いの GitHub Enterprise Server インスタンス のホスト名には、プロトコルを "含めないでください"。__
-
**[保存]** をクリックします。
-
-
ID プールを作成した後、ID プールのページの上部にある [アクセス権の付与] をクリックします。
- [サービス アカウントの選択] で、前の手順で作成したサービス アカウントを選びます。
- [プリンシパルの選択 (サービス アカウントにアクセスできる ID)] で、 [フィルターに一致する ID のみ] を選びます。
- [属性名] で、 [subject] を選びます。
- [属性値] には、プロトコルなしで GitHub Enterprise Server ホスト名を入力します。 たとえば、「
my-ghes-host.example.com」のように入力します。 -
**[保存]** をクリックします。 - 構成ファイルは必要ないので、[アプリケーションの構成] ダイアログは閉じてかまいません。
3. OIDC を使用して Google Cloud Storage に接続するように GitHub Enterprise Server を構成する
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。1. [設定] サイドバーで [Actions] をクリックします。1. [GitHub Actions] で、 [GitHub Actions を有効にする] を選びます。1. [Google Cloud Storage] の横にある [成果物とログ ストレージ] で、 [セットアップ] をクリックします。
-
[認証] で、 [OpenID Connect (OIDC)] を選び、ストレージの値を入力します。 * [サービス URL] : バケットのサービス URL。 通常、これは
https://storage.googleapis.comになります。 * バケット名: バケットの名前。 * ワークロード ID プロバイダー ID: ID プールの ID プロバイダー ID。これは
projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAMEの形式です。 前の手順でメモした値からhttps://iam.googleapis.com/プレフィックスを削除する必要があることに注意してください。たとえば、「
projects/1234567890/locations/global/workloadIdentityPools/my-pool/providers/my-provider」のように入力します。 * サービス アカウント: 前の手順でメモしたサービス アカウントのメール アドレス。 たとえば、「ghes-oidc-service-account@my-project.iam.gserviceaccount.com」のように入力します。 -
[ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。1. [設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
HMAC キーを使って Google Cloud Storage で GitHub Actions を有効にする
-
バケットにアクセスできる Google Cloud サービス アカウントを作成し、サービス アカウントのハッシュベースのメッセージ認証コード (HMAC) キーを作成します。 詳しくは、Google Cloud のドキュメントの「サービス アカウントの HMAC キーを管理する」をご覧ください。
サービス アカウントには、バケットに対する次の ID およびアクセス管理 (IAM) アクセス許可が必要です。
storage.objects.createstorage.objects.getstorage.objects.liststorage.objects.updatestorage.objects.deletestorage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listParts-
`storage.multipartUploads.list` 1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-rocket" aria-label="Site admin" role="img"><path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
[設定] サイドバーで [Actions] をクリックします。
-
[GitHub Actions] で、 [GitHub Actions を有効にする] を選びます。
-
[Google Cloud Storage] の横にある [成果物とログ ストレージ] で、 [セットアップ] をクリックします。
-
[認証] で、 [資格情報ベース] を選び、次のようにストレージ バケットの詳細を入力します。
- [サービス URL] : バケットのサービス URL。 通常、これは
https://storage.googleapis.comになります。 - [バケット名] : バケットの名前。
- HMAC Access Id and HMAC Secret: ストレージ アカウントの Google Cloud アクセス ID とシークレット。 詳しくは、Google Cloud のドキュメントの「サービス アカウントの HMAC キーを管理する」をご覧ください。1. [ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。1. [設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
- [サービス URL] : バケットのサービス URL。 通常、これは
-
設定の実行が完了するのを待ってください。
次のステップ
設定の実行が正常に完了すると、GitHub Actions は GitHub 上で有効になります。 GitHub Actions のアクセス許可の管理や自己ホストランナーの追加など、次の手順を実行するには、「GitHub Enterprise Server で GitHub Actions を開始する方法」に戻ります。