Crie atribuições de funções do Azure
Esta página mostra como conceder autorizações ao GKE no Azure para que possa aceder às APIs Azure. Tem de realizar estes passos quando configurar um novo cluster do GKE no Azure ou quando atualizar as autorizações de um cluster existente. Estas autorizações são necessárias para o GKE on Azure gerir recursos do Azure em seu nome, como máquinas virtuais, componentes de rede e armazenamento.
Obtenha os IDs da subscrição e do principal de serviço
Para conceder autorizações ao GKE no Azure, tem de obter a sua conta principal de serviço e o ID da subscrição do Azure. O principal de serviço e o ID da subscrição do Azure estão associados à aplicação do Azure AD que criou para o GKE no Azure. Para ver detalhes, consulte o artigo Crie uma aplicação do Azure Active Directory.
Um principal de serviço é uma identidade no Azure Active Directory (AD) que é usada para autenticar no Azure e aceder aos respetivos recursos. Uma subscrição do Azure é um contentor lógico que lhe dá acesso autorizado a produtos e serviços do Azure. Um ID de subscrição é um identificador exclusivo associado à sua subscrição do Azure.
Para guardar os IDs do principal de serviço e da subscrição para referência rápida, pode armazená-los em variáveis de shell. Para criar estas variáveis de shell, execute o seguinte comando:
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)
Substitua APPLICATION_NAME
pelo nome
da sua aplicação do Azure AD.
Crie três funções personalizadas
Para conceder ao GKE no Azure as autorizações para gerir os seus recursos do Azure, tem de criar três funções personalizadas e atribuí-las à conta principal de serviço. Nas instruções seguintes, apenas são adicionadas as autorizações mínimas. Pode adicionar mais autorizações se precisar.
Tem de criar funções personalizadas para os seguintes tipos de acesso:
- Acesso ao nível da subscrição: autorizações que se aplicam a toda a subscrição do Azure, o que permite a gestão de todos os recursos do Azure nessa subscrição.
- Acesso ao nível do grupo de recursos do cluster: autorizações específicas para gerir recursos do Azure num grupo de recursos específico que contém os seus clusters do GKE no Azure.
- Acesso ao nível do grupo de recursos da rede virtual: autorizações específicas para gerir recursos do Azure num grupo de recursos que contém os seus recursos de rede virtual do Azure.
Crie uma função para acesso ao nível da subscrição
Cria um ficheiro com o nome
GKEOnAzureAPISubscriptionScopedRole.json
.Abra
GKEOnAzureAPISubscriptionScopedRole.json
num editor e adicione as seguintes autorizações:{ "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}"] }
Crie a nova função personalizada:
az role definition create --role-definition "GKEOnAzureAPISubscriptionScopedRole.json"
Atribua a função ao principal do serviço através do seguinte comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}
Crie uma função para o acesso ao nível do grupo de recursos do cluster
Cria um ficheiro com o nome
GKEOnAzureClusterResourceGroupScopedRole.json
.Abra
GKEOnAzureClusterResourceGroupScopedRole.json
num editor e adicione as seguintes autorizações:{ "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}"] } ```
Crie a nova função personalizada:
az role definition create --role-definition "GKEOnAzureClusterResourceGroupScopedRole.json"
Atribua a função ao principal do serviço através do seguinte comando:
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}
Crie uma função para acesso ao nível do grupo de recursos da rede virtual
Cria um ficheiro com o nome
GKEOnAzureAPIVNetResourceGroupScopedRole.json
.Abra
GKEOnAzureAPIVNetResourceGroupScopedRole.json
num editor e adicione as seguintes autorizações:{ "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}"] }
Crie a nova função personalizada:
az role definition create --role-definition "GKEOnAzureAPIVNetResourceGroupScopedRole.json"
Atribua a função ao principal do serviço através do seguinte comando:
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"