Creazione di assegnazioni di ruoli Azure

In questa sezione, concederai a GKE su Azure le autorizzazioni per accedere alle API Azure.

Per salvare l'entità servizio e gli ID abbonamento in una variabile shell, esegui questo comando. Sostituisci APPLICATION_NAME con un nome per l'applicazione.

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)

Assegna le autorizzazioni all'entità di servizio. GKE su Azure richiede le autorizzazioni per eseguire il provisioning dei ruoli richiesti per le risorse Azure gestite a livello di abbonamento.

Per creare un ruolo personalizzato con autorizzazioni basate sugli abbonamenti richieste:

  1. Crea un nuovo file denominato RoleAssignmentCreator.json.

  2. Apri RoleAssignmentCreator.json in un editor e aggiungi le seguenti autorizzazioni:

    {
        "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. Crea il nuovo ruolo personalizzato con il comando seguente:

    az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
    
  4. Assegna il ruolo all'entità di servizio utilizzando il seguente comando:

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

Quando assegni le autorizzazioni, puoi definire l'ambito a livello di abbonamento Azure, che si applica a tutte le risorse all'interno dell'abbonamento, o a livello di gruppo di risorse, limitando le autorizzazioni a un gruppo di risorse specifico.

Abbonamento

Assegna i ruoli Collaboratore, Amministratore accesso utenti e Amministratore Key Vault al tuo abbonamento:

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

Gruppo di risorse

  1. Crea assegnazioni del ruolo con ambito a livello di gruppo di risorse del cluster. Sostituisci CLUSTER_RESOURCE_GROUP_NAME con il nome del gruppo di risorse per GKE su 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. Se la rete virtuale di Azure si trova in un gruppo di risorse diverso, crea assegnazioni di ruoli con ambito basato sul gruppo di risorse della rete virtuale.

    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"
    

    Sostituisci quanto segue:

    • VNET_RESOURCE_GROUP_NAME: il nome del gruppo di risorse per GKE su Azure VNet

Passaggi successivi