Observação
No momento, não há suporte para executores hospedados no GitHub no GitHub Enterprise Server.
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 do GitHub como uma identidade federada e inclui um exemplo de fluxo de trabalho para a ação azure/login, que utiliza tokens para autenticar no Azure e acessar recursos.
Pré-requisitos
-
Para saber os conceitos básicos de como o GitHub usa o OIDC (OpenID Connect), além da arquitetura e dos benefícios, confira 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 o provedor de nuvem emite os tokens de acesso, você precisa definir, pelo menos, uma condição, para que os repositórios não confiáveis não possam solicitar tokens de acesso aos seus recursos de nuvem. Para saber mais, confira OpenID Connect.
-
Você deve garantir que os seguintes pontos de extremidade OIDC sejam acessíveis pelo seu provedor de nuvem:
https://HOSTNAME/_services/token/.well-known/openid-configurationhttps://HOSTNAME/_services/token/.well-known/jwks
Observação
Microsoft Entra ID (anteriormente conhecido como Azure AD) não tem intervalos de IP fixos definidos para esses pontos de extremidade.
- Certifique-se de que o valor da declaração do emissor incluído no JSON Web Token (JWT) esteja configurado como uma URL roteável publicamente. Para saber mais, confira OpenID Connect.
Adicionando as credenciais federadas a Azure
O provedor OIDC do GitHub funciona com a federação de identidade de carga de trabalho do Azure. Para ter uma visão geral, confira a documentação da Microsoft em Federação de identidade de carga de trabalho.
Para configurar o provedor de identidade OIDC no Azure, você precisará executar a configuração a seguir. Para obter instruções sobre como fazer essas alterações, consulte a documentação Azure.
- Crie um aplicativo Entra ID e uma entidade de serviço.
- Adicione credenciais federadas para o aplicativo do Entra ID.
- Crie segredos de GitHub para armazenar a configuração do Azure.
Orientação adicional para a configuração do provedor de identidade:
- Para reforçar a segurança, verifique se você examinou OpenID Connect. Para ver um exemplo, confira OpenID Connect.
- Para a configuração
audience,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/loginpara trocar o token OIDC (JWT) por um token de acesso à nuvem.
Observação
Quando os ambientes são usados em fluxos de trabalho ou em políticas OIDC, recomendamos adicionar regras de proteção ao ambiente para segurança adicional. Por exemplo, você pode configurar regras de implantação em um ambiente para restringir quais ramificações e tags podem ser implantadas no ambiente ou acessar segredos de ambiente. Para saber mais, confira Gerenciar ambientes para implantação.
Adicionando configurações de permissões
A execução do trabalho ou do fluxo de trabalho requer uma configuração permissions com id-token: write para permitir que o provedor OIDC do GitHub crie um JSON Web Token para cada execução.
Observação
A configuração de id-token: write nas permissões do fluxo de trabalho não concede ao fluxo de trabalho permissão para modificar ou gravar em qualquer recurso. Em vez disso, só permite que o fluxo de trabalho solicite (busque) e use (defina) um token OIDC para uma ação ou etapa. Esse token é então utilizado para autenticar com serviços externos, utilizando um token de acesso de curta duração.
Para obter informações detalhadas sobre permissões necessárias, exemplos de configuração e cenários avançados, confira Referência do OpenID Connect.
Solicitando o token de acesso
A ação azure/login recebe um JWT do provedor GitHub OIDC e solicita um token de acesso de Azure. Para obter mais informações, consulte a documentação azure/login.
O exemplo a seguir troca um token de ID OIDC com Azure para receber um token de acesso, que pode ser usado para acessar recursos de nuvem.
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
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@8c334a195cbb38e46038007b304988d888bf676a
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
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
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@8c334a195cbb38e46038007b304988d888bf676a
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