Partager via


Authentifier Azure Spring Apps avec Azure Key Vault dans GitHub Actions

Remarque

Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.

Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.

Cet article s’applique à : ✔️ Java ✔️ C#

Cet article s’applique au : Niveau ✔️ De base/Standard ✔️ Entreprise

Cet article vous explique comment utiliser Key Vault avec un workflow CI/CD pour Azure Spring Apps avec GitHub Actions.

Le coffre de clés est un emplacement sécurisé pour stocker les clés. Au sein des entreprises, les utilisateurs doivent stocker les informations d’identification des environnements CI/CD dans l’étendue qu’ils contrôlent. La clé permettant d’accéder aux informations d’identification dans le coffre de clés doit être limitée à l’étendue des ressources. Elle a uniquement accès à l’étendue du coffre de clés, et non à l’ensemble de l’étendue Azure. Elle est assimilable à une clé qui peut ouvrir uniquement un coffre-fort, non à une clé principale qui peut ouvrir toutes les portes d’un bâtiment. C’est un moyen d’obtenir une clé avec une autre clé, ce qui est utile dans un workflow CI/CD.

Générer les informations d’identification

Pour générer une clé d’accès au coffre de clés, exécutez la commande ci-dessous sur votre ordinateur local :

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth

L’étendue spécifiée par le paramètre --scopes limite l’accès de la clé à la ressource. Elle ne peut accéder qu’au coffre-fort.

Avec les résultats :

{
    "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/"
}

Enregistrez ensuite les résultats dans des secrets GitHub comme décrit dans Configurer votre dépôt GitHub et vous authentifier auprès d’Azure.

Ajouter des stratégies d’accès pour les informations d’identification

Les informations d’identification que vous avez créées ci-dessus peuvent obtenir uniquement des informations générales sur le coffre de clés, et non le contenu qu’il stocke. Pour obtenir les secrets stockés dans le coffre de clés, vous devez définir des stratégies d’accès pour les informations d’identification.

Accédez au tableau de bord Key Vault dans le portail Azure, sélectionnez le menu Contrôle d’accès, puis ouvrez l’onglet Attributions de rôles. Sélectionnez Applications pour Type, et This resource pour Étendue. Vous devez voir les informations d’identification que vous avez créées à l’étape précédente :

Capture d’écran du portail Azure montrant la page Contrôle d’accès avec l’onglet Attributions de rôles en surbrillance.

Copiez le nom des informations d’identification, par exemple, azure-cli-2020-01-19-04-39-02. Ouvrez le menu Stratégies d’accès puis sélectionnez le lien Ajouter une stratégie d’accès. Sélectionnez Secret Management comme Modèle, puis sélectionnez Principal. Collez le nom des informations d’identification dans la zone d’entrée Principal/Sélectionner :

Capture d’écran du portail Azure montrant la page Ajouter une politique d’accès avec le volet Principal ouvert.

Sélectionnez le bouton Ajouter dans la boîte de dialogue Ajouter une stratégie d’accès, puis sélectionnez Enregistrer.

Générer des informations d’identification Azure à étendue complète

Il s’agit de la clé principale pour ouvrir toutes les portes du bâtiment. La procédure est similaire à l’étape précédente, mais ici, nous changeons l’étendue pour générer la clé principale :

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth

Voici de nouveau les résultats :

{
    "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/"
}

Copiez la chaîne JSON entière. Retournez au tableau de bord Key Vault. Ouvrez le menu Secrets, puis sélectionnez le bouton Générer/Importer. Entrez le nom du secret, par exemple AZURE-CREDENTIALS-FOR-SPRING. Collez la chaîne d’informations d’identification JSON dans la zone d’entrée Valeur. Vous pouvez remarquer que la zone d’entrée Valeur est un champ de texte d’une ligne, plutôt qu’une zone de texte multiligne. Vous pouvez y coller la chaîne JSON complète.

Capture d’écran du portail Azure montrant la page Créer un secret.

Combiner les informations d’identification dans GitHub Actions

Définissez les informations d’identification utilisées quand le pipeline CI/CD s’exécute :

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

Étapes suivantes