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

  • To learn the basic concepts of how GitHub uses OpenID Connect (OIDC), and its architecture and benefits, see "About security hardening with OpenID Connect."

  • Before proceeding, you must plan your security strategy to ensure that access tokens are only allocated in a predictable way. To control how your cloud provider issues access tokens, you must define at least one condition, so that untrusted repositories can’t request access tokens for your cloud resources. For more information, see "Configuring the OIDC trust with the cloud."

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

O fluxo de trabalho exigirá uma configuração permissões com um valor de id-token definido. If you only need to fetch an OIDC token for a single job, then this permission can be set within that job. 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

Esse documento ajudou você?

Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.