Usar o GitHub Actions para conectar-se ao Azure
Saiba como usar o logon do Azure com o Azure PowerShell ou a CLI do Azure para interagir com seus recursos do Azure.
Para usar o Azure PowerShell ou a CLI do Azure e um fluxo de trabalho do GitHub Actions, primeiro você precisa fazer logon com a ação do logon do Azure.
A ação de logon do Azure dá suporte a duas maneiras diferentes de autenticação com o Azure:
- Entidade de serviço com segredos
- OpenID Connect (OIDC) com uma entidade de serviço do Azure usando uma Credencial de Identidade Federada
Por padrão, a ação de logon faz logon com a CLI do Azure e configura o ambiente de execução de Ações do GitHub para a CLI do Azure. Você pode usar o Azure PowerShell com a propriedade enable-AzPSSession
da ação de logon do Azure. Isso configura o ambiente de execução de Ações do GitHub com o módulo PowerShell do Azure.
Você pode usar o logon do Azure para se conectar a nuvens públicas ou soberanas, incluindo o Azure Government e o Azure Stack Hub.
Usar a ação de logon do Azure com OpenID Connect
Para configurar um logon do Azure com o OpenID Connect e usá-lo em um fluxo de trabalho do GitHub Actions, você precisará de:
- Um aplicativo Microsoft Entra, com uma entidade de serviço que foi atribuída com uma função apropriada à sua assinatura.
- Um aplicativo Microsoft Entra configurado com uma credencial federada para confiar em tokens emitidos por Ações do GitHub para seu repositório do GitHub. Você pode configurar isso no portal do Azure ou com APIs REST do Microsoft Graph.
- Um fluxo de trabalho de Ações do GitHub que solicita tokens de emissão do GitHub para o fluxo de trabalho e usa a ação de logon do Azure.
Criar um aplicativo e uma entidade de serviço do Microsoft Entra
Você precisará criar um aplicativo e uma entidade de serviço do Microsoft Entra e, em seguida, atribuir uma função em sua assinatura ao seu aplicativo para que seu fluxo de trabalho tenha acesso à sua assinatura.
Se você não tiver um aplicativo existente, registre um novo aplicativo e entidade de serviço do Microsoft Entra que possa acessar recursos. Como parte desse processo, é necessário:
- Registre seu aplicativo com o Microsoft Entra ID e crie uma entidade de serviço
- Atribuir uma função ao aplicativo
Selecionar o aplicativo em Registros de aplicativo no portal do Azure e encontrar o aplicativo. Copiar os valores de ID do Aplicativo (cliente) e de ID do Diretório (locatário) para serem usados no fluxo de trabalho do GitHub Actions.
Abrir Assinaturas no portal do Azure e encontrar sua assinatura. Copie a ID da assinatura.
Adicionar credenciais federadas
Você pode adicionar credenciais federadas no portal do Azure ou com a API REST do Microsoft Graph.
- Acesse Registros de aplicativo no portal do Azure e abra o aplicativo que você deseja configurar.
- No aplicativo, acesse Certificados e segredos.
- Na guia Credenciais federadas, selecione Adicionar credencial.
- Selecione o cenário de credencial GitHub Actions implantando recursos do Azure. Gere sua credencial inserindo os detalhes dela.
Campo | Descrição | Exemplo |
---|---|---|
Organização | O nome da organização do GitHub ou do nome de usuário do GitHub. | contoso |
Repositório | O seu nome do repositório GitHub. | contoso-app |
Tipo de entidade | O filtro usado para delimitar as solicitações OIDC de fluxos de trabalho do GitHub. Esse campo é usado para gerar a declaração subject . |
Environment , , , Branch Pull request Tag |
Nome do GitHub | O nome do ambiente, do branch ou da marca. | main |
Nome | Identificador para a credencial federada. | contoso-deploy |
Para obter uma visão geral mais detalhada, confira Configurar um aplicativo para confiar em um repositório GitHub.
Criar segredos do GitHub
Você precisa fornecer a ID do cliente, a ID do locatário e a ID da assinatura do seu aplicativo para a ação de logon. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados em seu fluxo de trabalho. Salvar os valores como segredos do GitHub é a opção mais segura.
Abra o repositório do GitHub e vá para Configurações.
Selecione Segurança > Segredos e variáveis > Ações.
Crie segredos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
eAZURE_SUBSCRIPTION_ID
. Use esses valores do seu aplicativo do Azure Active Directory para seus segredos do GitHub:Segredo do GitHub Aplicativo do Azure Active Directory AZURE_CLIENT_ID ID do aplicativo (cliente) AZURE_TENANT_ID ID do diretório (locatário) AZURE_SUBSCRIPTION_ID ID da assinatura Salve cada segredo selecionando Adicionar segredo.
Configurar o logon do Azure com a autenticação OpenID Connect
O fluxo de trabalho do GitHub Actions usa o OpenID Connect para autenticar com o Azure. Para saber mais sobre essa interação, confira a documentação do GitHub Actions.
Neste exemplo, você usará a CLI do Azure do OpenID Connect para autenticar com o Azure com a ação de logon do Azure. O exemplo usa segredos do GitHub para os valores client-id
, tenant-id
e subscription-id
. Você também pode passar esses valores diretamente na ação de logon.
A ação de logon do Azure inclui um parâmetro de entrada opcional audience
que tem api://AzureADTokenExchange
como padrão . Você pode atualizar esse parâmetro para valores de audiência personalizados.
Esse fluxo de trabalho autentica com o OpenID Connect e usa a CLI do Azure para obter os detalhes da assinatura conectada e do grupo de recursos de lista.
name: Run Azure Login with OpenID Connect
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 Azure CLI commands'
run: |
az account show
az group list
pwd
Verificar o logon bem-sucedido do Azure com OpenID
Abra a ação Az CLI login
e verifique se ela foi executada com êxito. Você deve ver a mensagem Login successful
. Se o seu logon não for bem-sucedido, você verá a mensagem Az CLI Login failed.
.
Usar a ação de logon do Azure com um segredo de entidade de serviço
Para usar o logon do Azure com uma entidade de serviço, primeiro você precisa adicionar sua entidade de serviço do Azure como um segredo ao repositório GitHub.
Criar uma entidade de serviço
Neste exemplo, você criará um segredo chamado AZURE_CREDENTIALS
que pode ser usado para fazer a autenticação com o Azure.
Abra o Azure Cloud Shell no portal do Azure ou na CLI do Azure localmente.
Observação
Se estiver usando o Azure Stack Hub, você precisará definir o ponto de extremidade de gerenciamento do SQL como
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Crie uma entidade de serviço no portal do Azure para seu aplicativo. A entidade de serviço deve ser atribuída com uma função apropriada.
az ad sp create-for-rbac --name "myApp" --role contributor \ --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ --json-auth
O parâmetro
--json-auth
gera o dicionário de resultados aceito pela ação de logon, acessível nas versões >da CLI do Azure = 2.51.0. Versões anteriores a essa usam--sdk-auth
com um aviso de substituição.Copie o objeto JSON da entidade de serviço.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
Adicionar a entidade de serviço como um segredo do GitHub
No GitHub, acesse seu repositório.
Acesse Configurações no menu de navegação.
Selecione Segurança > Segredos e variáveis > Ações.
Selecione Novo segredo de repositório.
Cole toda a saída JSON do comando da CLI do Azure no campo valor do segredo. Dê ao segredo o nome
AZURE_CREDENTIALS
.Selecione Adicionar segredo.
Usar a ação de logon do Azure
Use o segredo da entidade de serviço com a ação de Logon do Azure para autenticar no Azure.
Neste fluxo de trabalho, você autentica usando a ação de logon do Azure com os detalhes da entidade de serviço armazenados em secrets.AZURE_CREDENTIALS
. Em seguida, você executa uma ação da CLI do Azure. Para obter mais informações sobre como consultar os segredos do GitHub em um arquivo do fluxo de trabalho, confira Usando segredos criptografados em um fluxo de trabalho, nos Documentos do GitHub.
Quando tiver uma etapa de logon do Azure em funcionamento, você poderá usar as ações do Azure PowerShell ou da CLI do Azure. Você também pode usar outras ações do Azure, como implantar aplicativo Web do Azure e as funções do Azure.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
Usar a ação do Azure PowerShell
Neste exemplo, você faz logon com a ação de Logon do Azure e depois recupera um grupo de recursos com a ação do Azure PowerShell.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
enable-AzPSSession: true
- name: Azure PowerShell Action
uses: Azure/powershell@v1
with:
inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
azPSVersion: "latest"
Usar a ação da CLI do Azure
Neste exemplo, você faz logon com a ação de logon do Azure e, em seguida, recupera um grupo de recursos com a ação da CLI do Azure.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az account show
az storage -h
Conectar-se às nuvens do Azure Government e do Azure Stack Hub
Para fazer logon em uma das nuvens do Azure Government, defina o ambiente do parâmetro opcional com os nomes de nuvem com suporte AzureUSGovernment
ou AzureChinaCloud
. Se esse parâmetro não for especificado, ele usará o valor padrão AzureCloud
e se conectará à nuvem pública do Azure.
- name: Login to Azure US Gov Cloud with CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: false
- name: Login to Azure US Gov Cloud with Az Powershell
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: true
Conectar-se com outros serviços do Azure
Os artigos a seguir fornecem detalhes sobre como se conectar ao GitHub por meio do Azure e de outros serviços.