Azure-Rollenzuweisungen erstellen
Auf dieser Seite wird beschrieben, wie Sie GKE on Azure Berechtigungen für den Zugriff auf Azure APIs erteilen. Sie müssen diese Schritte ausführen, wenn Sie einen neuen GKE on Azure-Cluster einrichten oder Berechtigungen für einen vorhandenen Cluster aktualisieren. Diese Berechtigungen sind erforderlich, damit GKE on Azure Azure-Ressourcen in Ihrem Namen verwalten kann, z. B. virtuelle Maschinen, Netzwerkkomponenten und Speicher.
Dienstprinzipal- und Abo-IDs abrufen
Wenn Sie GKE on Azure Berechtigungen erteilen möchten, müssen Sie Ihr Azure-Diensthauptkonto und Ihre Abo-ID abrufen. Das Azure-Diensthauptkonto und die Abo-ID sind der Azure AD-Anwendung zugeordnet, die Sie für GKE on 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 zugehörigen Ressourcen 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 Ihrem Azure-Abo zugeordnet ist.
Sie können Ihre Diensthauptkonto- und Abo-IDs in Shell-Variablen speichern, um schnell darauf zugreifen zu können. 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
Damit GKE in Azure die Berechtigungen zum Verwalten Ihrer Azure-Ressourcen erhält, müssen Sie drei benutzerdefinierte Rollen erstellen und dem Diensthauptkonto zuweisen. In der folgenden Anleitung werden nur die Mindestberechtigungen hinzugefügt. Bei Bedarf können Sie weitere Berechtigungen hinzufügen.
Sie müssen benutzerdefinierte Rollen für die folgenden Arten von Zugriff erstellen:
- Zugriff auf Aboebene: Berechtigungen, die für das gesamte Azure-Abo gelten und die Verwaltung aller Azure-Ressourcen in diesem Abo ermöglichen.
- Zugriff auf Ressourcengruppenebene für Cluster: Berechtigungen, die speziell für die Verwaltung von Azure-Ressourcen in einer bestimmten Ressourcengruppe mit Ihren GKE on Azure-Clustern gelten.
- Zugriff auf Ressourcengruppenebene des virtuellen Netzwerks: Berechtigungen, die speziell für die Verwaltung von Azure-Ressourcen in einer Ressourcengruppe gelten, die Ihre Azure-Ressourcen für virtuelle Netzwerke enthält.
Rolle für Zugriff auf Aboebene erstellen
Erstellen Sie eine Datei mit dem Namen
GKEOnAzureAPISubscriptionScopedRole.json
.Ö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}"] }
So erstellen Sie die neue benutzerdefinierte Rolle:
az role definition create --role-definition "GKEOnAzureAPISubscriptionScopedRole.json"
Weisen Sie dem Dienstprinzipal mit dem folgenden Befehl die Rolle 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 Clusterebene erstellen
Erstellen Sie eine Datei mit dem Namen
GKEOnAzureClusterResourceGroupScopedRole.json
.Ö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}"] } ```
So erstellen Sie die neue benutzerdefinierte Rolle:
az role definition create --role-definition "GKEOnAzureClusterResourceGroupScopedRole.json"
Weisen Sie dem Dienstprinzipal mit dem folgenden Befehl die Rolle 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 für virtuelle Netzwerke erstellen
Erstellen Sie eine Datei mit dem Namen
GKEOnAzureAPIVNetResourceGroupScopedRole.json
.Ö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}"] }
So erstellen Sie die neue benutzerdefinierte Rolle:
az role definition create --role-definition "GKEOnAzureAPIVNetResourceGroupScopedRole.json"
Weisen Sie dem Dienstprinzipal mit dem folgenden Befehl die Rolle 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"