Autenticar aplicativos do Azure Spring com o Azure Key Vault em ações do GitHub
Nota
Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.
Este artigo aplica-se a: ✔️ Java ✔️ C#
Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise
Este artigo mostra como usar o Cofre da Chave com um fluxo de trabalho de CI/CD para o Azure Spring Apps com Ações do GitHub.
O cofre de chaves é um local seguro para armazenar chaves. Os usuários corporativos precisam armazenar credenciais para ambientes de CI/CD no escopo que eles controlam. A chave para obter credenciais no cofre de chaves deve ser limitada ao escopo do recurso. Ele tem acesso apenas ao escopo do cofre de chaves, não a todo o escopo do Azure. É como uma chave que só pode abrir uma caixa forte, não uma chave mestra que pode abrir todas as portas de um edifício. É uma maneira de obter uma chave com outra chave, o que é útil em um fluxo de trabalho CICD.
Gerar credencial
Para gerar uma chave para acessar o cofre de chaves, execute o comando abaixo em sua máquina local:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth
O escopo especificado pelo parâmetro limita --scopes
o acesso da chave ao recurso. Ele só pode acessar a caixa forte.
Com resultados:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Em seguida, salve os resultados nos segredos do GitHub , conforme descrito em Configurar seu repositório do GitHub e autentique-se com o Azure.
Adicionar políticas de acesso para a credencial
A credencial criada acima pode obter apenas informações gerais sobre o Cofre de Chaves, não o conteúdo que ele armazena. Para obter segredos armazenados no Cofre da Chave, você precisa definir políticas de acesso para a credencial.
Vá para o painel do Cofre da Chave no portal do Azure, selecione o menu Controle de acesso e abra a guia Atribuições de função. Selecione Aplicativos para Tipo e This resource
para escopo. Você deve ver a credencial criada na etapa anterior:
Copie o nome da credencial, por exemplo, azure-cli-2020-01-19-04-39-02
. Abra o menu Políticas de acesso e, em seguida, selecione o link Adicionar política de acesso. Selecione Secret Management
Modelo e, em seguida, selecione Principal. Cole o nome da credencial na caixa de entrada Seleção Principal/:
Selecione o botão Adicionar na caixa de diálogo Adicionar política de acesso e, em seguida, selecione Guardar.
Gerar Credencial do Azure de escopo completo
Esta é a chave mestra para abrir todas as portas do edifício. O procedimento é semelhante à etapa anterior, mas aqui alteramos o escopo para gerar a chave mestra:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth
Mais uma vez, os resultados:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Copie toda a cadeia de caracteres JSON. Volte ao painel do Cofre da Chave . Abra o menu Segredos e, em seguida, selecione o botão Gerar/Importar . Insira o nome secreto, como AZURE-CREDENTIALS-FOR-SPRING
. Cole a cadeia de caracteres de credenciais JSON na caixa Entrada de valor . Você pode notar que a caixa de entrada de valor é um campo de texto de uma linha, em vez de uma área de texto de várias linhas. Você pode colar a cadeia de caracteres JSON completa lá.
Combinar credenciais em ações do GitHub
Defina as credenciais usadas quando o pipeline CICD é executado:
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # Strong box key you generated in the first step
- uses: Azure/get-keyvault-secrets@v1.0
with:
keyvault: "<Your Key Vault Name>"
secrets: "AZURE-CREDENTIALS-FOR-SPRING" # Master key to open all doors in the building
id: keyvaultaction
- uses: azure/login@v1
with:
creds: ${{ steps.keyvaultaction.outputs.AZURE-CREDENTIALS-FOR-SPRING }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.75
inlineScript: |
az extension add --name spring # Spring CLI commands from here
az spring list