Utilizar GitHub Actions para ligar ao Azure
Saiba como utilizar o início de sessão do Azure com Azure PowerShell ou a CLI do Azure para interagir com os seus recursos do Azure.
Para utilizar Azure PowerShell ou a CLI do Azure num fluxo de trabalho GitHub Actions, primeiro tem de iniciar sessão com a ação de início de sessão 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 um principal de serviço do Azure com uma Credencial de Identidade Federada
Por predefinição, a ação de início de sessão inicia sessão com a CLI do Azure e configura o ambiente de GitHub Actions runner para a CLI do Azure. Pode utilizar Azure PowerShell com enable-AzPSSession
a propriedade da ação de início de sessão do Azure. Isto configura o ambiente GitHub Actions runner com o módulo Azure PowerShell.
Pode utilizar o início de sessão do Azure para ligar a clouds públicas ou soberanas, incluindo Azure Government e o Azure Stack Hub.
Utilizar a ação de início de sessão do Azure com o OpenID Connect
Para configurar um Início de Sessão do Azure com o OpenID Connect e utilizá-lo num fluxo de trabalho GitHub Actions, precisará de:
- Uma aplicação do Azure Active Directory, com um principal de serviço que tem acesso de contribuidor à sua subscrição
- Uma aplicação do Azure Active Directory configurada com uma credencial federada para confiar em tokens emitidos por GitHub Actions para o seu repositório do GitHub. Pode configurar esta opção no portal do Azure ou com as APIs REST do Microsoft Graph. A federação de identidade da carga de trabalho está em pré-visualização pública
- Um fluxo de trabalho GitHub Actions que pede tokens de problemas do GitHub ao fluxo de trabalho e utiliza a ação de início de sessão do Azure
Criar uma aplicação e um principal de serviço do Azure Active Directory
Terá de criar uma aplicação e um principal de serviço do Azure Active Directory e, em seguida, atribuir uma função na sua subscrição à sua aplicação para que o fluxo de trabalho tenha acesso à sua subscrição.
Se não tiver uma aplicação existente, registe uma nova aplicação e principal de serviço do Azure Active Directory que possa aceder aos recursos. Como parte deste processo, certifique-se de que:
- Registar a sua aplicação com Azure AD e criar um principal de serviço
- Atribuir uma função à aplicação
Abra Registos de aplicações no portal do Azure e localize a sua aplicação. Copie os valores do ID da Aplicação (cliente) e do ID do Diretório (inquilino) para utilizar no fluxo de trabalho GitHub Actions.
Abra Subscrições no portal do Azure e localize a sua subscrição. Copie o ID da Subscrição.
Adicionar credenciais federadas (pré-visualização)
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.
- Na aplicação, aceda a Certificados e segredos.
- No separador Credenciais federadas , selecione Adicionar credencial.
- Selecione o cenário de credenciais GitHub Actions implementar recursos do Azure. Gere a sua credencial ao introduzir os detalhes das credenciais.
Campo | Descrição | Exemplo |
---|---|---|
Organização | O nome da sua organização do GitHub ou o nome de utilizador do GitHub. | contoso |
Repositório | O seu nome do Repositório do GitHub. | contoso-app |
Tipo de entidade | O filtro utilizado para definir o âmbito dos pedidos OIDC dos fluxos de trabalho do GitHub. Este campo é utilizado para gerar a subject afirmação. |
Environment , Branch , Pull request , Tag |
Nome do GitHub | O nome do ambiente, ramo ou etiqueta. | main |
Name | Identificador da credencial federada. | contoso-deploy |
Para obter uma descrição geral mais detalhada, veja Configurar uma aplicação para confiar num repositório do GitHub.
Criar segredos do GitHub
Tem de fornecer o ID de Cliente da sua aplicação, o ID do Inquilino e o ID da Subscrição à ação de início de sessão. Estes valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados no fluxo de trabalho. Guardar os valores como segredos do GitHub é a opção mais segura.
Abra o seu repositório do GitHub e aceda a Definições.
Selecione Segredos de Segurança > e variáveis Ações>.
Criar segredos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
eAZURE_SUBSCRIPTION_ID
. Utilize estes valores da sua aplicação do Azure Active Directory para os seus segredos do GitHub:Segredo do GitHub Aplicação do Azure Active Directory AZURE_CLIENT_ID ID da Aplicação (cliente) AZURE_TENANT_ID ID do Diretório (inquilino) AZURE_SUBSCRIPTION_ID ID da subscrição Guarde cada segredo ao selecionar Adicionar segredo.
Configurar o Início de Sessão do Azure com a autenticação do OpenID Connect
O fluxo de trabalho GitHub Actions utiliza o OpenID Connect para autenticar com o Azure. Para saber mais sobre esta interação, veja a documentação do GitHub Actions.
Neste exemplo, irá utilizar a CLI do OpenID Connect do Azure para autenticar com o Azure com a ação de início de sessão do Azure . O exemplo utiliza segredos do GitHub para os client-id
valores , tenant-id
e subscription-id
. Também pode transmitir estes valores diretamente na ação de início de sessão.
A ação de início de sessão do Azure inclui um parâmetro de entrada opcional audience
que é predefinido para api://AzureADTokenExchange
. Pode atualizar este parâmetro para valores de audiência personalizados.
Este fluxo de trabalho autentica-se com o OpenID Connect e utiliza a CLI do Azure para obter os detalhes da subscrição ligada 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 início de sessão do Azure com êxito com o OpenID
Abra a ação Az CLI login
e verifique se foi executada com êxito. Deverá ver a mensagem Login successful
. Se o início de sessão não for bem-sucedido, verá a mensagem Az CLI Login failed.
.
Utilizar a ação de início de sessão do Azure com um segredo do principal de serviço
Para utilizar o início de sessão do Azure com um principal de serviço, primeiro tem de adicionar o principal de serviço do Azure como um segredo ao seu repositório do GitHub.
Criar um principal de serviço
Neste exemplo, irá criar um segredo com o nome AZURE_CREDENTIALS
que pode utilizar para autenticar com o Azure.
Abra o Azure Cloud Shell no portal do Azure ou na CLI do Azure localmente.
Nota
Se estiver a utilizar o Azure Stack Hub, terá de definir o ponto final da Gestão de SQL como
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Crie um novo principal de serviço no portal do Azure da sua aplicação. O principal de serviço tem de ter a função Contribuidor atribuída.
az ad sp create-for-rbac --name "myApp" --role contributor \ --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ --sdk-auth
Copie o objeto JSON para o principal de serviço.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
Adicionar o principal de serviço como um segredo do GitHub
No GitHub, aceda ao seu repositório.
Selecione Segredos de Segurança > e variáveis Ações>.
Selecione Novo segredo do repositório.
Cole toda a saída JSON do comando da CLI do Azure no campo de valor do segredo. Dê ao segredo o nome
AZURE_CREDENTIALS
.Selecione Add secret (Adicionar segredo).
Utilizar a ação de início de sessão do Azure
Utilize o segredo do principal de serviço com a ação de Início de Sessão do Azure para autenticar no Azure.
Neste fluxo de trabalho, vai autenticar com a ação de início de sessão do Azure com os detalhes do principal de serviço armazenados no secrets.AZURE_CREDENTIALS
. Em seguida, executa uma ação da CLI do Azure. Para obter mais informações sobre como referenciar segredos do GitHub num ficheiro de fluxo de trabalho, veja Utilizar segredos encriptados num fluxo de trabalho no GitHub Docs.
Assim que tiver um passo de início de sessão do Azure funcional, pode utilizar as ações Azure PowerShell ou da CLI do Azure. Também pode utilizar outras ações do Azure, como a implementação da aplicação 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 }}'
Utilizar a ação Azure PowerShell
Neste exemplo, inicia sessão com a ação de Início de Sessão do Azure e, em seguida, obtém um grupo de recursos com a ação 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"
Utilizar a ação da CLI do Azure
Neste exemplo, inicia sessão com a ação de Início de Sessão do Azure e, em seguida, obtém 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
Ligar a clouds do Azure Government e do Azure Stack Hub
Para iniciar sessão numa das clouds Azure Government, defina o ambiente de parâmetros opcional com nomes AzureUSGovernment
de cloud suportados ou AzureChinaCloud
. Se este parâmetro não for especificado, utiliza o valor AzureCloud
predefinido e liga-se à Cloud 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
Ligar a outros serviços do Azure
Os artigos seguintes fornecem detalhes sobre como ligar ao GitHub a partir do Azure e de outros serviços.