Azure-Rollenzuweisungen erstellen

In diesem Abschnitt gewähren Sie GKE on Azure Berechtigungen für den Zugriff auf Azure APIs.

Führen Sie den folgenden Befehl aus, um Ihre Diensthauptkonto- und Abo-IDs in einer Shell-Variablen zu speichern. Ersetzen Sie APPLICATION_NAME durch einen Namen für die Anwendung.

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)

Weisen Sie dem Hauptkonto Berechtigungen zu. GKE on Azure benötigt Berechtigungen, um die erforderlichen Rollen für die verwalteten Azure-Ressourcen auf Aboebene bereitzustellen.

So erstellen Sie eine benutzerdefinierte Rolle mit den erforderlichen Berechtigungen auf Aboebene:

  1. Erstellen Sie eine neue Datei mit dem Namen RoleAssignmentCreator.json.

  2. Öffnen Sie RoleAssignmentCreator.json in einem Editor und fügen Sie die folgenden Berechtigungen hinzu:

    {
        "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. Erstellen Sie mit dem folgenden Befehl die neue benutzerdefinierte Rolle:

    az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
    
  4. Weisen Sie dem Dienstprinzipal die Rolle mit dem folgenden Befehl zu:

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

Wenn Sie Berechtigungen zuweisen, können Sie sie entweder auf der Azure-Aboebene, die für alle Ressourcen im Abo gilt, oder auf der Ressourcengruppenebene, die die Berechtigungen auf eine bestimmte Ressourcengruppe beschränkt, einschränken.

Abo

Weisen Sie Ihrem Abo die Rollen "Mitwirkender", "Nutzerzugriffsadministrator" und "Key Vault-Administrator" zu.

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

Ressourcengruppe

  1. Erstellen Sie Rollenzuweisungen für die Clusterressourcengruppe. Ersetzen Sie CLUSTER_RESOURCE_GROUP_NAME durch den Namen der Ressourcengruppe für GKE on 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. Wenn sich Ihr virtuelles Azure-Netzwerk in einer anderen Ressourcengruppe befindet, erstellen Sie Rollenzuweisungen, die der virtuellen Netzwerkressourcengruppe zugeordnet sind.

    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"
    

    Ersetzen Sie Folgendes:

    • VNET_RESOURCE_GROUP_NAME: der Name der Ressourcengruppe für Ihre GKE in Azure VNet

Nächste Schritte