Visão Geral
O OpenID Connect (OIDC) permite aos seus fluxos de trabalho de GitHub Actions acessar recursos no Azure, sem precisar armazenar as credenciais do Azure como segredos de GitHub de longa duração.
Este guia fornece uma visão geral de como configurar o Azure para confiar no OIDC de GitHub como uma identidade federada, e inclui um exemplo de fluxo de trabalho para o azure/login
ação que usa tokens para efetuar a autenticação ao Azure 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 as credenciais federadas ao Azure
Provedor OIDC de GitHub funciona com a federação de identidade do Azure. Para uma visão geral, consulte a documentação da Microsoft em "Federação de identidade da carga".
Para configurar o provedor de identidade OIDC no Azure, você deverá definir a configuração a seguir. Para obter instruções sobre como fazer essas alterações, consulte a documentação do Azure.
- Cria um aplicativo Azure Active Directory e um diretor de serviço.
- Adicione ascredenciais federadas ao aplicativo Azure Active Directory.
- Crie segredos de GitHub para armazenar a configuração do Azure.
Orientação adicional para a configuração do provedor de identidade:
- Para aumentar a segurança, verifique se você revisou "Configurando a confiança do OIDC com a nuvem". Por exemplo, consulte "Configurar o assunto no seu provedor de nuvem".
- Para a configuração
audiência
,api://AzureADTokenExchange
é o valor recomendado, mas você também pode especificar outros valores aqui.
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
azure/login
para trocar o token OIDC (JWT) para um token de acesso da 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
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 azure/login
recebe um JWT do provedor OIDC GitHub e, em seguida, solicita um token de acesso do Azure. Para obter mais informações, consulte a documentação azure/login
.
O exemplo a seguir troca um token de ID do OIDC com o Azure para receber um token de acesso, que pode, em seguida, ser usado para acessar os recursos da nuvem.
name: Run Azure Login with OIDC
on: [push]
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Az CLI login'
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: 'Run az commands'
run: |
az account show
az group list