Skip to main content

Configurando o OpenID Connect no HashiCorp Vault

Use o OpenID Connect nos seus fluxos de trabalho para efetuar a autenticação com o HashiCorp Vault.

Visão Geral

O OpenID Connect (OIDC) permite aos seus fluxos de trabalho de GitHub Actions efetuar a autenticação com um HashiCorp Vault para recuperar segredos.

Este guia fornece uma visão geral sobre como configurar o cofre HashiCorp para confiar no OIDC de GitHub como uma identidade federada e mostra como usar essa configuração na ação hashicorp/vault-action para recuperar segredos do cofre HashiCorp.

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 o provedor de identidade ao HashiCorp Vault

Para usar OIDC com oHashiCorp Vault, você deverá adicionar uma configuração de confiança ao provedor do OIDC de GitHub. Para obter mais informações, consulte a documentação do HashiCorp Vault.

Configure o cofre para aceitar tokens web do JSON (JWT) para a autenticação:

  • Para o oidc_discovery_url, use https://token.actions.githubusercontent.com
  • Para bound_issuer, use https://token.actions.githubusercontent.com
  • Certifique-se de que bound_subject esteja corretamente definido para seus requisitos de segurança. Para obter mais informações, consulte "Configurar a confiança do OIDC com a nuvem" e hashicorp/vault-action.

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 hashicorp/vault-ação para trocar o token do OIDC (JWT) por um token de acesso na nuvem.

Para adicionar a integração do OIDC a seus fluxos de trabalho que lhes permitem acessar os segredos no Vault, você deverá adicionar as seguintes alterações de código:

  • Conceder permissão para obter o token do provedor do OIDC de GitHub:
    • O fluxo de trabalho precisa de configurações de permissions: com o valor id-token definido como write. Isso permite obter o token do OIDC de cada trabalho do fluxo de trabalho.
  • Solicite o JWT do provedor do OIDC GitHub e apresente-o ao HashiCorp Vault para receber um token de acesso:
    • Você pode usar o kit de ferramentas Actions para buscar os tokens para o seu trabalho, ou você pode usar a ação hashicorp/vault-action para buscar o JWT e receber o token de acesso do Vault.

Este exemplo demonstra como usar o OIDC com a ação oficial para solicitar um segredo ao HashiCorp Vault.

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 hashicorp/vault-ação recebe um JWT do provedor de OIDC de GitHub e, em seguida, solicita um token de acesso da sua instância do HashiCorp Vault para recuperar segredos. Para obter mais informações, consulte a documentação do HashiCorp Vault.

Este exemplo demonstra como criar um trabalho que solicita um segredo para o HashiCorp Vault.

  • <Vault URL>: Substitua isso pela URL do seu HashiCorp Vault.
  • <Role name>: Substitua isso pela função que você definiu no relacionamento de confiança do HashiCorp Vault.
  • <Audience>: Substitua isso pela audiência que você definiu no relacionamento de confiança do HashiCorp Vault.
  • <Secret-Path>: Substitua isso pelo caminho para o segredo que você está recuperando do HashiCorp Vault. Por exemplo: secret/data/ci npmToken.
YAML
jobs:
    retrieve-secret:
        steps:
            - name: Retrieve secret from Vault
              uses: hashicorp/vault-action@v2.4.0
              with:
                url: <Vault URL>
                role: <Role name>
                method: jwt
                jwtGithubAudience: <Audience>
                secrets: <Secret-Path>

            - name: Use secret from Vault
               run: |
                 # This step has access to the secret retrieved above; see hashicorp/vault-action for more details.