Note
現在、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の設定」を参照してください。
Note
信頼された認証局によって署名された証明書で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"
Note
ここで使用する お使いの 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 の管理アカウントから、任意のページの右上隅で をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ サイト管理者] サイドバーで [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
」のように入力します。
-
-
[ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
Note
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
HMAC キーを使用する Google Cloud Storage での GitHub Actions の有効化
-
バケットにアクセスできる Google Cloud サービス アカウントを作成し、サービス アカウントのハッシュベースのメッセージ認証コード (HMAC) キーを作成します。 詳細については、Google Cloud ドキュメントの「サービス アカウントの HMAC キーの管理」を参照してください。
サービス アカウントには、バケットに対する次の ID およびアクセス管理 (IAM) アクセス許可が必要です。
storage.objects.create
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.delete
storage.multipartUploads.create
storage.multipartUploads.abort
storage.multipartUploads.listParts
storage.multipartUploads.list
1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ サイト管理者] サイドバーで [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。 通常、これは
-
[ストレージ設定のテスト] ボタンをクリックして、ストレージ設定を検証します。
ストレージ設定の検証でエラーが発生した場合は、ストレージ プロバイダーで設定を確認し、もう一度やり直してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
Note
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
次のステップ
設定の実行が正常に完了すると、GitHub Actions は GitHub 上で有効になります。 次の手順 (GitHub Actionsのアクセス許可の管理、セルフホステッド ランナーの追加など) については、「GitHub Enterprise Server の GitHub Actions を使い始める」に戻ります。