GitHub ActionsからGCPへOIDCで接続する検証
GitHub Actions上でGCPにアクセスしたい時、認証キーを発行せずにOIDC認証することができる。
下記を使う
Setting up Workload Identity Federation
上記に記載されている通り、サービスアカウント、Workload Identity Pool、Workload identity Providerを作成する。
コマンドで書かれているがGUIでも実施できた。
サービスアカウントに適切なロールをつけて、WiPに接続する。
roles/iam.workloadIdentityUserロールは必須
Workload Identity Poolに設定するGitHubのOIDC情報はこちらに書かれている
google-github-actions/authは正常に動いた。
GitHub Actionsのyamlはこんな感じ。のちにファイルを使いたいのでcreate_credentials_file
を指定。
- id: auth
name: Authenticate to Google Cloud
uses: google-github-actions/auth@v0.4.3
with:
create_credentials_file: 'true'
workload_identity_provider: 'projects/{id}/locations/global/workloadIdentityPools/{repo}/providers/{provider}'
service_account: 'hoge@fuga.iam.gserviceaccount.com'``
OIDCを有効にするために、permissionsを追加しておく必要がある。
jobs:
test:
permissions:
contents: 'read'
id-token: 'write'
環境変数GOOGLE_APPLICATION_CREDENTIALSにキーを設定
- name: set GOOGLE_APPLICATION_CREDENTIALS
run: |-
echo "GOOGLE_APPLICATION_CREDENTIALS=${{ steps.auth.outputs.credentials_file_path }}" >> $GITHUB_ENV
認証も通って、環境変数にも設定できたぽいが何故かgcloudコマンドがエラーになる。
ファイルが見つからないぽい。。
下記はpathは伏せているが実際にはそれぽいパスが表示されている。
ERROR: (gcloud.config.config-helper) Failed to load credential file: [{path}]. File{path} was not found.
解決!!
auth → set ENV -> checkout -> set python -> gcloud
とやっていたため、checkoutでキーが消えていたぽい。
checkout -> set python -> auth → set ENV -> gcloud
にしたらうまくいった。
参考になった記事
環境変数GOOGLE_APPLICATION_CREDENTIALSにキーを設定
authの時点でGOOGLE_APPLICATION_CREDENTIALSは設定されているぽいのでやらなくても大丈夫だった。