結論、ここに書いてあるとおりやればできる。
google-github-actions/auth: A GitHub Action for authenticating to Google Cloud.
どこかのページで見たんだと思うんだけど、サービスアカウントのページから権限を付与で、こういう感じのプリンシパルを対象に roles/iam.workloadIdentityUser をつけていた。
principal://iam.googleapis.com/projects/{PROJECT_ID}/locations/global/workloadIdentityPools/{POOL_NAME}/subject/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}
で、たぶんこれが間違っていて、こうするのが正しいっぽい。
principalSet://iam.googleapis.com/projects/{PROJECT_ID}/locations/global/workloadIdentityPools/{POOL_NAME}/attribute.repository/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}
Workload Identityのプールのページから、アクセスを許可ってやると選べるサービスアカウントと属性名が出てきて、そこにrepositoryがあった(マッピングで設定しているからだろう)ので、これを使ったらできた。
出来たあとに、google-github-actions/authの説明を読み直していたら、同じ用にattribute.repositoryを使えって書いてあった。説明はちゃんと読もう…。