Configurar a autenticação no Google Cloud a partir do GitHub Actions inclui considerações de segurança que fazem a recomendação aparentemente sensata de vincular usando IDs imutáveis|únicos do GitHub (proprietário|repositório) em vez de nomes.
Embora o Google recomende IDs, sua documentação faz referência a nomes:
gcloud iam workload-identity-pools providers create-oidc "my-repo" \
--project="${PROJECT_ID}" \
--location="global" \
--workload-identity-pool="github" \
--display-name="My GitHub repo Provider" \
--attribute-mapping="google.subject=assertion.sub,attribute.actor=assertion.actor,attribute.repository=assertion.repository,attribute.repository_owner=assertion.repository_owner" \
--attribute-condition="assertion.repository_owner == '${OWNER}'" \
--issuer-uri="https://token.actions.githubusercontent.com"
Entendo como revisar o --attribute-condition
para usar os IDs, mas como faço para alterá-los --attribute-mapping
para incorporá-los?
Revisar --attribute-mapping
valores ingenuamente para, por exemplo, attribute.repository_id=assertion.repository_id
corresponder --attribute-condition
a valores assertion.repository_owner_id=="{OWNER_ID}"
não funciona.
Sei que as declarações de ID estão incluÃdas graças ao GitHub OIDC Debugger :
{
...
"repository": "{OWNER}/{REPO}",
"repository_id": "{REPO_ID}",
"repository_owner": "{OWNER}",
"repository_owner_id": "{OWNER_ID}",
...
}
A solução parece ser:
--attribute-mapping
inalterado (deve conterrepository
erepository_owner
) ou adicionando (repository_id
erepository_owner_id
)--attribute-condition
(conforme considerações de segurança ) e opcionalmente/redundantemente (!?) incluindo/mantendo os predicados de nome.No mÃnimo:
Além do comentário de Azeem, você também precisa ter certeza de que aspas simples sejam preservadas. Acredito que você as tinha no bloco de código original.