Azure-Rollenzuweisungen erstellen

Auf dieser Seite erfahren Sie, wie Sie GKE on Azure Berechtigungen erteilen, damit es auf Azure APIs zugreifen kann. Sie müssen diese Schritte ausführen, wenn Sie einen neuen GKE on Azure-Cluster einrichten oder die Berechtigungen für einen vorhandenen Cluster aktualisieren. Diese Berechtigungen sind erforderlich, damit GKE on Azure Azure-Ressourcen wie virtuelle Maschinen, Netzwerkkomponenten und Speicher in Ihrem Namen verwalten kann.

Diensthaupt- und Abo-IDs abrufen

Wenn Sie GKE on Azure Berechtigungen erteilen möchten, müssen Sie Ihr Azure-Diensthauptkonto und die Abo-ID abrufen. Das Azure-Diensthauptkonto und die Abo-ID sind mit der Azure AD-Anwendung verknüpft, die Sie für GKE in Azure erstellt haben. Weitere Informationen finden Sie unter Azure Active Directory-Anwendung erstellen.

Ein Dienstprinzipal ist eine Identität in Azure Active Directory (AD), die zur Authentifizierung bei Azure und zum Zugriff auf die Ressourcen von Azure verwendet wird. Ein Azure-Abo ist ein logischer Container, der Ihnen autorisierten Zugriff auf Azure-Produkte und ‑Dienste bietet. Eine Abo-ID ist eine eindeutige Kennung, die mit Ihrem Azure-Abo verknüpft ist.

Sie können die Diensthauptkonto- und Abo-IDs zur schnellen Referenz in Shell-Variablen speichern. Führen Sie den folgenden Befehl aus, um diese Shell-Variablen zu erstellen:

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)

Ersetzen Sie APPLICATION_NAME durch den Namen Ihrer Azure AD-Anwendung.

Drei benutzerdefinierte Rollen erstellen

Wenn Sie GKE in Azure die Berechtigungen zum Verwalten Ihrer Azure-Ressourcen erteilen möchten, müssen Sie drei benutzerdefinierte Rollen erstellen und dem Diensthauptkonto zuweisen. In der folgenden Anleitung werden nur die Mindestberechtigungen hinzugefügt. Sie können bei Bedarf weitere Berechtigungen hinzufügen.

Sie müssen benutzerdefinierte Rollen für die folgenden Zugriffstypen erstellen:

  • Zugriff auf Aboebene: Berechtigungen, die für das gesamte Azure-Abo gelten und die Verwaltung aller Azure-Ressourcen innerhalb dieses Abos ermöglichen.
  • Zugriff auf Clusterebene: Berechtigungen speziell für die Verwaltung von Azure-Ressourcen in einer bestimmten Ressourcengruppe, die Ihre GKE on Azure-Cluster enthält.
  • Zugriff auf Ressourcengruppenebene für virtuelle Netzwerke: Berechtigungen speziell zum Verwalten von Azure-Ressourcen in einer Ressourcengruppe, die Ihre Azure-Ressourcen für virtuelle Netzwerke enthält.

Rolle für den Zugriff auf Aboebene erstellen

  1. Erstellen Sie eine Datei mit dem Namen GKEOnAzureAPISubscriptionScopedRole.json.

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

    {
    "Name": "GKE on-Azure API Subscription Scoped Role",
    "IsCustom": true,
    "Description": "Allow GKE on-Azure service manage resources in subscription scope.",
    "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. So erstellen Sie die neue benutzerdefinierte Rolle:

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

    az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}
    

Rolle für den Zugriff auf Clusterressourcengruppenebene erstellen

  1. Erstellen Sie eine Datei mit dem Namen GKEOnAzureClusterResourceGroupScopedRole.json.

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

    {
    "Name": "GKE on-Azure API Cluster Resource Group Scoped Role",
    "IsCustom": true,
    "Description": "Allow GKE on-Azure service manage resources in cluster resource group scope.",
    "Actions": [
        "Microsoft.Resources/subscriptions/resourcegroups/read",
        "Microsoft.Authorization/roleDefinitions/write",
        "Microsoft.Authorization/roleDefinitions/delete",
        "Microsoft.ManagedIdentity/userAssignedIdentities/write",
        "Microsoft.ManagedIdentity/userAssignedIdentities/read",
        "Microsoft.ManagedIdentity/userAssignedIdentities/delete",
        "Microsoft.Network/applicationSecurityGroups/write",
        "Microsoft.Network/applicationSecurityGroups/read",
        "Microsoft.Network/applicationSecurityGroups/delete",
        "Microsoft.Network/applicationSecurityGroups/joinIpConfiguration/action",
        "Microsoft.Authorization/roleAssignments/write",
        "Microsoft.Authorization/roleAssignments/read",
        "Microsoft.Authorization/roleAssignments/delete",
        "Microsoft.Network/loadBalancers/write",
        "Microsoft.Network/loadBalancers/read",
        "Microsoft.Network/loadBalancers/delete",
        "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
        "Microsoft.Network/networkSecurityGroups/write",
        "Microsoft.Network/networkSecurityGroups/read",
        "Microsoft.Network/networkSecurityGroups/delete",
        "Microsoft.Network/networkSecurityGroups/join/action",
        "Microsoft.KeyVault/vaults/write",
        "Microsoft.KeyVault/vaults/read",
        "Microsoft.KeyVault/vaults/delete",
        "Microsoft.Compute/disks/read",
        "Microsoft.Compute/disks/write",
        "Microsoft.Compute/disks/delete",
        "Microsoft.Network/networkInterfaces/read",
        "Microsoft.Network/networkInterfaces/write",
        "Microsoft.Network/networkInterfaces/delete",
        "Microsoft.Network/networkInterfaces/join/action",
        "Microsoft.Compute/virtualMachines/read",
        "Microsoft.Compute/virtualMachines/write",
        "Microsoft.Compute/virtualMachines/delete",
        "Microsoft.Compute/virtualMachineScaleSets/write",
        "Microsoft.Compute/virtualMachineScaleSets/read",
        "Microsoft.Compute/virtualMachineScaleSets/delete",
        "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action",
        "Microsoft.Compute/virtualMachines/retrieveBootDiagnosticsData/action",
        "Microsoft.Insights/Metrics/Read"
    ],
    "NotActions": [],
    "DataActions": [
        "Microsoft.KeyVault/vaults/keys/create/action",
        "Microsoft.KeyVault/vaults/keys/delete",
        "Microsoft.KeyVault/vaults/keys/read",
        "Microsoft.KeyVault/vaults/keys/encrypt/action"
    ],
    "NotDataActions": [],
    "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"]
     }
     ```
    
  3. So erstellen Sie die neue benutzerdefinierte Rolle:

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

    az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Cluster Resource Group Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${CLUSTER_RESOURCE_GROUP_ID}
    

Rolle für den Zugriff auf Ressourcengruppenebene des virtuellen Netzwerks erstellen

  1. Erstellen Sie eine Datei mit dem Namen GKEOnAzureAPIVNetResourceGroupScopedRole.json.

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

    {
    "Name": "GKE on-Azure API VNet Resource Group Scoped Role",
    "IsCustom": true,
    "Description": "Allow GKE on-Azure service manage resources in virtual network resource group scope.",
    "Actions": [
        "Microsoft.Network/virtualNetworks/read",
        "Microsoft.Network/virtualNetworks/subnets/read",
        "Microsoft.Network/virtualNetworks/subnets/join/action",
        "Microsoft.Authorization/roleDefinitions/write",
        "Microsoft.Authorization/roleDefinitions/delete"
    ],
    "NotActions": [],
    "DataActions": [],
    "NotDataActions": [],
    "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"]
    }
    
  3. So erstellen Sie die neue benutzerdefinierte Rolle:

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

    az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_ID"
    

Nächste Schritte