Crea asignaciones de funciones de Azure
En esta sección, otorgarás permisos a GKE en Azure para acceder a las API de Azure.
Para guardar los ID de suscripción y principal de servicio en una variable de shell, ejecuta el siguiente comando. Reemplaza APPLICATION_NAME
por un nombre para la aplicación.
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)
Asigna permisos al principal del servicio. GKE en Azure requiere permisos a fin de aprovisionar los roles necesarios para los recursos administrados de Azure a nivel de suscripción.
Para crear una función personalizada con los permisos necesarios de alcance de suscripción, haz lo siguiente:
Crea un archivo nuevo llamado
RoleAssignmentCreator.json
.Abre
RoleAssignmentCreator.json
en un editor y agrega los siguientes permisos:{ "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}"] }
Crea el nuevo rol personalizado con el siguiente comando:
az role definition create --role-definition "~/CustomRoles/RoleAssignmentCreator.json"
Asigna el rol al miembro del servicio con el siguiente comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "Role Assignment Creator" --scope /subscriptions/${SUBSCRIPTION_ID}
Cuando asignas permisos, puedes definirlos a nivel de suscripción de Azure, que se aplica a todos los recursos dentro de la suscripción, o a nivel de grupo de recursos, lo que limita los permisos a un grupo de recursos específico.
Suscripción
Asigna las funciones de Colaborador, Administrador de acceso de usuario y Administrador de Key Vault a tu suscripción:
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}"
Grupo de recursos
Crea asignaciones de funciones para el grupo de recursos del clúster. Reemplaza
CLUSTER_RESOURCE_GROUP_NAME
por el nombre del grupo de recursos para GKE en 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"
Si tu red virtual de Azure está en un grupo de recursos diferente, crea asignaciones de funciones con alcance al grupo de recursos de red virtual.
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"
Reemplaza lo siguiente:
VNET_RESOURCE_GROUP_NAME
: Es el nombre del grupo de recursos para GKE en Azure VNet.