Autenticar aplicativos do Azure Spring com o Azure Key Vault em ações do GitHub

Nota

Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

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:

Captura de ecrã do portal do Azure que mostra a página de controlo de acesso com o separador Atribuições de função realçado.

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/:

Captura de ecrã do portal do Azure que mostra a página Adicionar política de acesso com o painel Principal aberto.

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á.

Captura de ecrã do portal do Azure que mostra a página Criar um segredo.

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

Próximos passos