Crear asignaciones de roles de Azure
Esta página muestra cómo otorgar permisos a GKE en Azure para que pueda acceder a las API de Azure. Debe realizar estos pasos al configurar un nuevo clúster de GKE en Azure o al actualizar los permisos de un clúster existente. Estos permisos son necesarios para que GKE en Azure administre recursos de Azure en su nombre, como máquinas virtuales, componentes de red y almacenamiento.
Obtener identificadores de suscripción y de entidad de servicio
Para conceder permisos a GKE en Azure, debe obtener su entidad de servicio de Azure y el identificador de suscripción. Estos identificadores están asociados a la aplicación de Azure AD que creó para GKE en Azure. Para obtener más información, consulte "Crear una aplicación de Azure Active Directory" .
Una entidad de servicio es una identidad en Azure Active Directory (AD) que se usa para autenticarse en Azure y acceder a sus recursos. Una suscripción de Azure es un contenedor lógico que proporciona acceso autorizado a los productos y servicios de Azure. Un identificador de suscripción es un identificador único asociado a su suscripción de Azure.
Para guardar los ID de la entidad de servicio y de la suscripción para una referencia rápida, puede almacenarlos en variables de shell. Para crear estas variables de shell, ejecute el siguiente 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)
Reemplace APPLICATION_NAME
con el nombre de su aplicación de Azure AD.
Crea tres roles personalizados
Para otorgar a GKE en Azure los permisos necesarios para administrar sus recursos de Azure, debe crear tres roles personalizados y asignarlos a la entidad de servicio. En las siguientes instrucciones, solo se agregan los permisos mínimos. Puede agregar más permisos si lo necesita.
Necesita crear roles personalizados para los siguientes tipos de acceso:
- Acceso a nivel de suscripción : permisos que se aplican a toda la suscripción de Azure y permiten administrar todos los recursos de Azure dentro de esa suscripción.
- Acceso a nivel de grupo de recursos de clúster : permisos específicos para administrar recursos de Azure dentro de un grupo de recursos particular que contiene sus clústeres de GKE en Azure.
- Acceso a nivel de grupo de recursos de red virtual : permisos específicos para administrar recursos de Azure dentro de un grupo de recursos que contiene sus recursos de red virtual de Azure.
Crear un rol para acceso a nivel de suscripción
Cree un archivo llamado
GKEOnAzureAPISubscriptionScopedRole.json
.Abra
GKEOnAzureAPISubscriptionScopedRole.json
en un editor y agregue los siguientes permisos:{ "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}"] }
Crea el nuevo rol personalizado:
az role definition create --role-definition "GKEOnAzureAPISubscriptionScopedRole.json"
Asigne el rol a la entidad de servicio mediante el siguiente comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}
Crear un rol para el acceso a nivel de grupo de recursos del clúster
Cree un archivo llamado
GKEOnAzureClusterResourceGroupScopedRole.json
.Abra
GKEOnAzureClusterResourceGroupScopedRole.json
en un editor y agregue los siguientes permisos:{ "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}"] } ```
Crea el nuevo rol personalizado:
az role definition create --role-definition "GKEOnAzureClusterResourceGroupScopedRole.json"
Asigne el rol a la entidad de servicio mediante el siguiente 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}
Crear un rol para el acceso a nivel de grupo de recursos de red virtual
Cree un archivo llamado
GKEOnAzureAPIVNetResourceGroupScopedRole.json
.Abra
GKEOnAzureAPIVNetResourceGroupScopedRole.json
en un editor y agregue los siguientes permisos:{ "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}"] }
Crea el nuevo rol personalizado:
az role definition create --role-definition "GKEOnAzureAPIVNetResourceGroupScopedRole.json"
Asigne el rol a la entidad de servicio mediante el siguiente 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"