Créer des attributions de rôles Azure

Dans cette section, vous allez accorder des autorisations à GKE sur Azure pour accéder aux API Azure.

Pour enregistrer vos ID d'entité principale de service et d'abonnement dans une variable d'interface système, exécutez la commande suivante. Remplacez APPLICATION_NAME par le nom de votre application.

APPLICATION_ID=$(az ad app list --all \
    --query "[?displayName=='APPLICATION_NAME'].appId" \
    --output tsv)
SERVICE_PRINCIPAL_ID=$(az ad sp list --all  --output tsv \
      --query "[?appId=='$APPLICATION_ID'].id")
SUBSCRIPTION_ID=$(az account show --query "id" --output tsv)

Attribuez des autorisations à l'entité principale de service. GKE sur Azure nécessite des autorisations pour provisionner les rôles requis pour les ressources Azure gérées au niveau de l'abonnement.

Pour créer un rôle personnalisé avec les autorisations requises au niveau de l'abonnement :

  1. Créez un fichier nommé RoleAssignmentCreator.json :

  2. Ouvrez RoleAssignmentCreator.json dans un éditeur et ajoutez les autorisations suivantes :

    {
        "Name": "Role Assignment Creator",
        "IsCustom": true,
        "Description": "Can create Azure role assignments.",
        "Actions": [
            "Microsoft.Authorization/roleAssignments/read",
            "Microsoft.Authorization/roleAssignments/write",
            "Microsoft.Authorization/roleAssignments/delete",
            "Microsoft.Authorization/roleDefinitions/read"
        ],
        "NotActions": [],
        "DataActions": [],
        "NotDataActions": [],
        "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"]
    }
    
  3. Créez le nouveau rôle personnalisé à l'aide de la commande suivante :

    az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
    
  4. Attribuez le rôle au compte principal de service à l'aide de la commande suivante :

    az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "Role Assignment Creator" --scope /subscriptions/${SUBSCRIPTION_ID}
    

Lorsque vous attribuez des autorisations, vous pouvez les limiter au niveau de l'abonnement Azure, ce qui s'applique à toutes les ressources de l'abonnement, ou au niveau du groupe de ressources, ce qui limite les autorisations à un groupe de ressources spécifique.

Abonnement

Attribuez à votre abonnement les rôles Contributor (Contributeur), User Access Administrator (Administrateur des accès utilisateur), Key Vault Administrator (Administrateur Key Vault) :

az role assignment create \
    --role "Contributor" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

az role assignment create \
    --role "User Access Administrator" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

az role assignment create \
    --role "Key Vault Administrator" \
    --assignee "${SERVICE_PRINCIPAL_ID}" \
    --scope "/subscriptions/${SUBSCRIPTION_ID}"

Groupe de ressources

  1. Créer des attributions de rôles limitées au groupe de ressources du cluster. Remplacez CLUSTER_RESOURCE_GROUP_NAME par le nom du groupe de ressources pour votre environnement GKE sur Azure.

    az role assignment create \
      --role "Contributor" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "User Access Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "Key Vault Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/CLUSTER_RESOURCE_GROUP_NAME"
    
  2. Si votre réseau virtuel Azure se trouve dans un groupe de ressources différent, créez des attributions de rôles appliquées au groupe de ressources du réseau virtuel.

    az role assignment create \
      --role "Virtual Machine Contributor" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_NAME"
    
    az role assignment create \
      --role "User Access Administrator" \
      --assignee "${SERVICE_PRINCIPAL_ID}" \
      --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_NAME"
    

    Remplacez les éléments suivants :

    • VNET_RESOURCE_GROUP_NAME : nom du groupe de ressources de votre cluster GKE sur Azure VNet

Étapes suivantes