Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Configurando OpenID Connect na Google Cloud Platform

Use OpenID Connect nos seus fluxos de trabalho para efetuar a autenticação com a Google Cloud Platform.

Visão Geral

O OpenID Connect (OIDC) permite que seus fluxos de trabalho de GitHub Actions acessem os recursos na Google Cloud Platform (GCP), sem precisar armazenar as credenciais do GCP como segredos de GitHub de longa duração.

Este guia fornece uma visão geral de como configurar o GCP para confiar no OIDC de GitHub como uma identidade federada, e inclui um exemplo de fluxo de trabalho para a ação google-github-actions/auth que usa tokens para efetuar a autenticação no GCP e acessar recursos.

Pré-requisitos

  • Para aprender os conceitos básicos de como GitHub usa o OpenID Connect (OIDC) e sua arquitetura e benefícios, consulte "Sobre o fortalecimento da segurança com o OpenID Connect."

  • Antes de prosseguir, você deve planejar sua estratégia de segurança para garantir que os tokens de acesso sejam atribuídos apenas de forma previsível. Para controlar como seu provedor de nuvem emite tokens de acesso, você deve definir pelo menos uma condição, para que os repositórios não confiáveis não possam solicitar tokens de acesso para seus recursos na nuvem. Para obter mais informações, consulte "Configurar a confiança do OIDC com a nuvem".

Adicionando um provedor de identidade de carga do Google Cloud

Para configurar o provedor de identidade OIDC no GCP, você deverá definir a configuração a seguir. Para obter instruções sobre como fazer essas alterações, consulte a documentação do GCP.

  1. Crie um novo conjunto de identidades.
  2. Configure o mapeamento e adicione condições.
  3. Conecte o novo grupo a uma conta de serviço.

Orientação adicional para a configuração do provedor de identidade:

Atualizar o seu fluxo de trabalho de GitHub Actions

Para atualizar seus fluxos de trabalho para o OIDC, você deverá fazer duas alterações no seu YAML:

  1. Adicionar configurações de permissões para o token.
  2. Use a ação google-github-actions/auth para trocar o token do OIDC (JWT) por um token de acesso na nuvem.

Adicionando configurações de permissões

 A execução do trabalho ou fluxo de trabalho exige uma configuração de permissões com id-token: write. Você não poderá o token de ID OIDC JWT se a configuração das permissões para id-token estiverem definidas como leitura ou nenhum.

A configuração id-token: write permite que o JWT seja solicitado do provedor OIDC de GitHub usando uma dessas abordagens:

  • Usando variáveis de ambiente no executor (ACTIONS_ID_TOKEN_REQUEST_URL e ACTIONS_ID_TOKEN_REQUEST_TOKEN).
  • Usando getIDToken() do conjunto de ferramentas de ações.

Se você só precisa obter um token OIDC para um único trabalho, essa permissão poderá ser definida dentro desse trabalho. Por exemplo:

YAML
permissions:
  id-token: write

Você pode precisar especificar permissões adicionais aqui, dependendo das necessidades do seu fluxo de trabalho.

Solicitando o token de acesso

A ação do google-github-actions/auth recebe um JWT do provedor OIDC de GitHub e, em seguida, solicita um token de acesso do GCP. Para obter mais informações, consulte a documentação do GCP.

Este exemplo tem um trabalho denominado Get_OIDC_ID_token que usa ações para solicitar uma lista de serviços do GCP.

  • <example-workload-identity-provider>: Substitua isso pelo caminho para o seu provedor de identidade no GCP. Por exemplo, projetos/<example-project-id>/locations/global/workloadIdentityPools/<name-of-pool/providers/<name-of-provider>
  • <example-service-account>: Substitua isso pelo nome da sua conta de serviço no GCP.
  • <project-id>: Substitua isso pelo ID do seu projeto do GCP.

Esta ação troca um token do OIDC do GitHub por um token de acesso do Google Cloud, usando a Federação de Identidade de Carga.

YAML
name: List services in GCP
on:
  pull_request:
    branches:
      - main

permissions:
  id-token: write

jobs:
  Get_OIDC_ID_token:
    runs-on: ubuntu-latest
    steps:
    - id: 'auth'
      name: 'Authenticate to GCP'
      uses: 'google-github-actions/auth@v0.3.1'
      with:
          create_credentials_file: 'true'
          workload_identity_provider: '<example-workload-identity-provider>'
          service_account: '<example-service-account>'
    - id: 'gcloud'
      name: 'gcloud'
      run: |-
        gcloud auth login --brief --cred-file="${{ steps.auth.outputs.credentials_file_path }}"
        gcloud services list