メモ
現在、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です。 -
[続行] をクリックします。
-
-
[プロバイダー属性の構成] で、次のようにします。
-
[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 の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
[設定] サイドバーで [Actions] をクリックします。
-
[GitHub Actions] で、 [GitHub Actions を有効にする] を選びます。
-
[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」のように入力します。
-
-
[ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[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.listPartsstorage.multipartUploads.list1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ 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 キーを管理する」をご覧ください。
- [サービス URL] : バケットのサービス URL。 通常、これは
-
[ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
次のステップ
設定の実行が正常に完了すると、GitHub Actions は GitHub 上で有効になります。 GitHub Actions のアクセス許可の管理や自己ホストランナーの追加など、次の手順を実行するには、「GitHub Enterprise Server の GitHub Actions を使い始める」に戻ります。