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
, usehttps://token.actions.githubusercontent.com
- Para
bound_issuer
, usehttps://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" ehashicorp/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:
- Adicionar configurações de permissões para o token.
- 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 valorid-token
definido comowrite
. Isso permite obter o token do OIDC de cada trabalho do fluxo de trabalho.
- O fluxo de trabalho precisa de configurações de
- 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.
- Você pode usar o kit de ferramentas Actions para buscar os tokens para o seu trabalho, ou você pode usar a ação
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
eACTIONS_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:
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
.
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.