Usar ações do GitHub para se conectar 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 em um fluxo de trabalho de Ações do GitHub, você precisa primeiro fazer logon com a ação de logon do Azure.
A ação de início de sessão do Azure suporta duas formas diferentes de autenticação com o Azure:
- Principal 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 runner do GitHub Actions para a CLI do Azure. Você pode usar o Azure PowerShell com enable-AzPSSession
a propriedade da ação de logon do Azure. Isso configura o ambiente runner do GitHub Actions com o módulo do Azure PowerShell.
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 o OpenID Connect
Para configurar um Logon do Azure com o OpenID Connect e usá-lo em um fluxo de trabalho de Ações do GitHub, você precisará:
- 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 tokens emitidos pelo GitHub Actions ao seu repositório 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 uma entidade de serviço e aplicativo 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 Microsoft Entra e uma entidade de serviço que possa acessar recursos. Como parte desse processo, certifique-se de:
- Registe a sua aplicação com o Microsoft Entra ID e crie uma entidade de serviço
- Atribuir uma função ao aplicativo
Abra os registos de aplicações no portal do Azure e localize a sua aplicação. Copie os valores para ID de aplicativo (cliente) e ID de diretório (locatário) para usar em seu fluxo de trabalho de ações do GitHub.
Abra Subscrições no portal do Azure e localize a sua subscrição. Copie o ID da Subscrição.
Adicionar credenciais federadas
Você pode adicionar credenciais federadas no portal do Azure ou com a API REST do Microsoft Graph.
- Aceda a Registos de aplicações no portal do Azure e abra a aplicação que pretende configurar.
- Dentro do aplicativo, vá para Certificados e segredos.
- Na guia Credenciais federadas, selecione Adicionar credencial.
- Selecione o cenário de credencial Ações do GitHub implantando recursos do Azure. Gere sua credencial inserindo seus detalhes.
Campo | Description | Exemplo |
---|---|---|
Organization | Seu nome de organização do GitHub ou nome de usuário do GitHub. | contoso |
Repositório | Seu nome de repositório GitHub. | contoso-app |
Tipo de entidade | O filtro usado para definir o escopo das solicitações OIDC dos fluxos de trabalho do GitHub. Este campo é usado para gerar a subject declaração. |
Environment , , , Branch Pull request Tag |
Nome do GitHub | O nome do ambiente, ramificação ou tag. | main |
Nome | Identificador da credencial federada. | contoso-deploy |
Para obter uma visão geral mais detalhada, consulte 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 aplicativo para a ação de login. 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 GitHub e vá para Configurações.
Selecione Segredos de Segurança > e Ações de variáveis>.
Crie segredos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
eAZURE_SUBSCRIPTION_ID
. Use estes valores do seu aplicativo Azure Ative Directory para seus segredos do GitHub:Segredo do GitHub Aplicativo Azure Ative Directory AZURE_CLIENT_ID ID da aplicação (cliente) AZURE_TENANT_ID ID do Diretório (inquilino) AZURE_SUBSCRIPTION_ID ID de Subscrição Salve cada segredo selecionando Adicionar segredo.
Configurar o Login do Azure com autenticação OpenID Connect
Seu fluxo de trabalho de Ações do GitHub usa o OpenID Connect para autenticar com o Azure. Para saber mais sobre essa interação, consulte a documentação de Ações do GitHub.
Neste exemplo, você usará a CLI do Azure OpenID Connect para autenticar com o Azure com a ação de logon do Azure. O exemplo usa segredos do GitHub para os client-id
valores , tenant-id
e subscription-id
. Você também pode passar esses valores diretamente na ação de login.
A ação de logon do Azure inclui um parâmetro de entrada opcional audience
que assume como padrão .api://AzureADTokenExchange
Você pode atualizar esse parâmetro para valores de audiência personalizados.
Esse fluxo de trabalho é autenticado 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 Login do Azure bem-sucedido com OpenID
Abra a ação e verifique se ela foi executada Az CLI login
com êxito. Deverá ver a mensagem Login successful
. Se o seu login não for bem-sucedido, você verá a mensagem Az CLI Login failed.
.
Usar a ação de logon do Azure com um segredo da 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 seu repositório GitHub.
Criar um principal de serviço
Neste exemplo, você criará um segredo chamado AZURE_CREDENTIALS
que pode ser usado para autenticar com o Azure.
Abra o Azure Cloud Shell no portal do Azure ou na CLI do Azure localmente.
Nota
Se você estiver usando o Azure Stack Hub, precisará definir seu ponto de extremidade de Gerenciamento SQL como
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Crie uma nova 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 este uso--sdk-auth
com um aviso de descontinuação.Copie o objeto JSON para sua 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, vá para o seu repositório.
Vá para Configurações no menu de navegação.
Selecione Segredos de Segurança > e Ações de variáveis>.
Selecione Novo segredo do repositório.
Cole toda a saída JSON do comando CLI do Azure no campo de valor do segredo. Dê o nome
AZURE_CREDENTIALS
ao segredo .Selecione Add secret (Adicionar segredo).
Usar a ação de logon do Azure
Use o segredo da entidade de serviço com a ação Logon do Azure para autenticar no Azure.
Neste fluxo de trabalho, você se autentica usando a ação de logon do Azure com os detalhes da entidade de serviço armazenados no secrets.AZURE_CREDENTIALS
. Em seguida, execute uma ação da CLI do Azure. Para obter mais informações sobre como fazer referência a segredos do GitHub em um arquivo de fluxo de trabalho, consulte Usando segredos criptografados em um fluxo de trabalho no GitHub Docs.
Depois de ter uma etapa de logon do Azure em funcionamento, você pode usar as ações do Azure PowerShell ou da CLI do Azure. Você também pode usar outras ações do Azure, como a implantação do 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 Logon do Azure e 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 Logon do Azure e recupera um grupo de recursos com a ação 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 ao Azure Government e às nuvens do Azure Stack Hub
Para iniciar sessão numa das nuvens do Azure Government, defina o ambiente de parâmetros opcionais com nomes AzureUSGovernment
de nuvem suportados ou AzureChinaCloud
. Se esse parâmetro não for especificado, ele usará o valor AzureCloud
padrão 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
Conecte-se com outros serviços do Azure
Os artigos a seguir fornecem detalhes sobre como se conectar ao GitHub a partir do Azure e de outros serviços.