Configura las funciones de autorización

Esta página está destinada a operadores de infraestructura.

En esta página, se describen las funciones de autorización, las vinculaciones de funciones y los derechos de acceso a recursos para el modo privado de Anthos.

Funciones de autorización

El modo privado de Anthos tiene cuatro funciones de autorización predeterminadas:

Nombre de la función Nombre ClusterRole de Kubernetes (en el clúster de administrador) Permisos
Operador de infraestructura anthos-infrastructure-operator Tiene acceso completo de lectura y escritura a todos los recursos.
Operador de infraestructura (solo lectura) anthos-infrastructure-operator-read-only Acceso de solo lectura a la mayoría de los elementos de Anthos Management Center, ClusterRole/Role, vinculaciones de ClusterRole/Role, definiciones de recursos personalizados y acceso de lectura limitado a Secrets.

Los usuarios tienen acceso de escritura a Grafana para editar paneles.

Administrador de la plataforma anthos-platform-admin
  • Tiene acceso de lectura/escritura a los clústeres de usuario, a la administración de funciones de Anthos, a Anthos Identity Service y a Anthos Config Management.
  • Tiene acceso de lectura y eliminación a las máquinas.
  • Tiene acceso de solo lectura al servicio de arranque y a las definiciones de recursos personalizados.
Administrador de plataforma (solo lectura) anthos-platform-admin-read-only Tiene acceso de solo lectura a todo lo que un administrador de plataforma puede ver.

Los usuarios tienen acceso de escritura a Grafana para editar paneles.

Cualquier persona con acceso a ADMIN_KUBECONFIG se autentica como un miembro del grupo system:master de Kubernetes, lo que permite cualquier acción en el servidor de la API de Kubernetes. Por ejemplo, pueden enumerar todos los secretos si ejecutas el siguiente comando:

kubectl get secrets --all-namespaces --kubeconfig=${ADMIN_KUBECONFIG}

En el ejemplo anterior, ${ADMIN_KUBECONFIG} es la ruta de acceso del archivo kubeconfig del clúster de administrador.

El acceso mediante ADMIN_KUBECONFIG se autentica como el nombre de usuario genérico admin, lo que dificulta el seguimiento de la persona que ejecuta el comando. Por lo tanto, es importante mantener ADMIN_KUBECONFIG en un lugar seguro y solo usarlo cuando sea necesario (por ejemplo, cuando configuras vinculaciones de función inicial de administrador de la plataforma o cuando te recuperas de fallas de OIDC).

Centro de administración y acceso a métricas

El modo privado de Anthos sincroniza de forma automática todos los usuarios vinculados con estas cuatro funciones a la lista de entidades permitidas del centro de administración y el acceso a las métricas (Grafana).

Se denegarán las funciones con derechos de acceso de solo lectura si se intenta realizar una acción de escritura en el Centro de administración.

Vinculaciones de funciones

Cuando configuras OIDC en la consola del centro de administración, puedes establecer un usuario inicial vinculado a la función de administrador de la plataforma. Una vez que hayas accedido a kubeconfig para el usuario administrador de plataforma inicial, existen dos métodos para vincular otro usuario a la función de administrador de la plataforma:

(Recomendado) Configura GroupMembership en el proveedor de OIDC y crea vinculaciones de funciones basadas en grupos

Este enfoque vincula a uno de tus grupos con una función predeterminada para otorgar a todos los miembros del grupo los mismos derechos de acceso que la función predeterminada.

Antes de comenzar

Verifica lo siguiente antes de comenzar:

  • Determina el proveedor de OIDC del que proviene el grupo.
  • El campo Reclamación de grupos de la pestaña Perfil de OIDC debe ser el mismo que el nombre de la reclamación que contiene información de membresía del grupo en el lado del proveedor de OIDC. El modo privado de Anthos otorga a este campo un valor predeterminado de groups, pero si tu proveedor de OIDC tiene un valor diferente, asegúrate de haberlo configurado en la pestaña Perfil de OIDC.
  • Toma nota del Prefijo del grupo en la pestaña Perfil de OIDC. Debes incluir el prefijo de grupo antes de todos los nombres de grupos. Por ejemplo, si tienes gid- como prefijo de grupo y un grupo “admin-group” en tu proveedor de OIDC, debes usar gid-admin-group. Ten en cuenta que el separador - es la parte del prefijo del grupo y que el sistema no lo agrega por ti.

Administra vinculaciones mediante la consola del centro de administración

Puedes usar la pestaña Acceso en la consola del centro de administración para administrar tus vinculaciones de funciones según los grupos.Aplica el perfil de identidad durante la creación del clúster

No puedes agregar o actualizar una vinculación a una función con más privilegios que la cuenta con la que accediste en ese momento. Por ejemplo, si accediste como administrador de plataforma, no puedes vincular un grupo a una función de operador de infraestructura.

Administra vinculaciones con kubectl

También puedes ejecutar el siguiente comando para crear una vinculación de función basada en grupos. El valor que se pasa a group= debe ser el mismo que el nombre de tu grupo en el proveedor de OIDC con el prefijo del grupo:

kubectl create clusterrolebinding anthos-platform-admin-group-binding \
--kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin \
--group=gid-anthos-platform-admin-group

Cualquier usuario que hayas agregado a anthos-platform-admin-group en el proveedor de OIDC ahora tendrá todos los permisos de administrador de la plataforma.

Del mismo modo, puedes usar el siguiente comando para vincular un grupo a la función de administrador de la plataforma (solo lectura):

kubectl create clusterrolebinding anthos-platform-admin-read-only-group-binding \
  --kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin-read-only \
  --group=gid-anthos-platform-admin-read-only-group

Para evitar la elevación de privilegios, un administrador de plataforma no puede vincular un grupo a un operador de infraestructura o a una función de operador de infraestructura (solo lectura). Para inicializar el primer grupo de operador de infraestructura, necesitas ADMIN_KUBECONFIG:

kubectl create clusterrolebinding anthos-platform-operator-group-binding \
  --kubeconfig=${ADMIN_KUBECONFIG} --clusterrole=anthos-infrastructure-operator --group=gid-anthos-platform-operator-group

Después de eso, puedes usar un KUBECONFIG con una cuenta de operador de infraestructura que se use para acceder a fin de vincular otros grupos a cualquier función:

# Bind a group to infrastructure operator (read-only):
kubectl create clusterrolebinding anthos-platform-operator-read-only-binding \
  --clusterrole=anthos-infrastructure-operator-read-only --group=gid-anthos-platform-operator-read-only-group --kubeconfig=${ADMIN_OIDC_KUBECONFIG}

Crea vinculaciones de funciones según el usuario

También puedes crear vinculaciones de funciones según la función del usuario. Los comandos para crear vinculaciones de funciones son similares a usar el grupo. Reemplaza --group por --user.

También debes adjuntar el prefijo de usuario de tu perfil de OIDC a cada nombre de usuario. Por ejemplo, si tu proveedor de OIDC está configurado para tener un prefijo de usuario uid- y deseas vincular joedoe@example.com a una función, usa uid-joedoe@example.com.

También puedes usar la pestaña Acceso en la Consola del centro de administración para administrar las vinculaciones de funciones a usuarios.

Aquí hay un comando de muestra para crear una vinculación de función para charlie@example.com y otorgarle permisos de administrador de la plataforma:

kubectl create clusterrolebinding charlie-platform-admin-binding \
  --clusterrole=anthos-platform-admin --user=uid-charlie@example.com --kubeconfig=ADMIN_OIDC_KUBECONFIG

Para borrar una vinculación de función a fin de quitar los derechos de acceso de un usuario, puedes actualizar las vinculaciones existentes en lugar de borrarlas (p. ej., revocar el administrador de la plataforma de charlie@example.com):

kubectl patch clusterrolebinding charlie-platform-admin-binding \
  -p '{"subjects":[]}' --kubeconfig=${ADMIN_OIDC_KUBECONFIG}

También puedes pedirle al operador de infraestructura que borre la ClusterRoleBinding.

Notas

  • Obtén más información sobre la autorización en Usa la autorización de RBAC
  • No se establecieron funciones de autorización predeterminadas en los clústeres de usuarios. El acceso del servidor de la API de Kubernetes en el acceso de cada clúster de usuario está abierto para cualquier persona que tenga kubeconfig.
  • Los administradores de la plataforma no pueden borrar una vinculación de función si desean evitar que los administradores de plataformas borren vinculaciones para usuarios más privilegiados. Para revocar el acceso de un usuario, puedes actualizar la vinculación de función que vincula al usuario con una lista de sujetos vacía. La acción de eliminación en la página Identidad y acceso de la consola del centro de administración también actualiza las vinculaciones de funciones a una lista de temas vacía en lugar de borrar las vinculaciones por el mismo motivo.
  • El nombre del recurso ClusterRoleBinding debe ser único. Solo la última vinculación aplicada o creada se aplica cuando hay varias vinculaciones de funciones de clúster con el mismo nombre.

Derechos de acceso a los recursos de Kubernetes para cada función predeterminada

En esta sección, se proporcionan detalles de todos los derechos de acceso a los recursos de Kubernetes para cada función predeterminada.

Operador de infraestructura

La función de operador de infraestructura corresponde a la función anthos-infrastructure-operator de Kubernetes, que puede realizar cualquier verbo en cualquier recurso.

Operador de infraestructura (solo lectura)

La función de operador de infraestructura (de solo lectura) corresponde a la función anthos-infrastructure-operator-read-only de Kubernetes, que puede leer todos los recursos de los ApiGroups que se enumeran aquí con acceso de lectura limitado a Secret. El acceso de lectura a Secret solo se limita al token de acceso del clúster de administrador, el kubeconfig del clúster de usuario y los Secrets con una etiqueta logmon en kube-system para el registro y la supervisión.

ApiGroups Recurso Verbos
"" configmaps get, list, watch
"" endpoints get, list, watch
"" persistentvolumeclaims get, list, watch
"" persistentvolumeclaims/status get, list, watch
"" pods get, list, watch
"" replicationcontrollers get, list, watch
"" replicationcontrollers/scale get, list, watch
"" serviceaccounts get, list, watch
"" servicios get, list, watch
"" services/status get, list, watch
"" Vinculaciones get, list, watch
"" eventos get, list, watch
"" limitranges get, list, watch
"" namespaces/status get, list, watch
"" pods/log get, list, watch
"" pods/status get, list, watch
"" replicationcontrollers/status get, list, watch
"" resourcequotas get, list, watch
"" resourcequotas/status get, list, watch
"" namespaces get, list, watch
apiextensions.k8s.io customresourcedefinitions get, list, watch
apps * get, list, watch
ajuste de escala automático * get, list, watch
batch * get, list, watch
cert-manager.io * get, list, watch
extensions * get, list, watch
metrics.k8s.io * get, list, watch
networking.k8s.io * get, list, watch
política * get, list, watch
rbac.authorization.k8s.io * get, list, watch
addons.gke.io * get, list, watch
authentication.gke.io * get, list, watch
baremetal.cluster.gke.io * get, list, watch
cluster.x-k8s.io * get, list, watch
managementcenter.anthos.cloud.google.com * get, list, watch

Administrador de la plataforma

La función de administrador de la plataforma tiene los siguientes derechos de acceso:

Recurso Verbos
namespaces get, list, watch, create, update
pods get, list, watch
servicios get, list, watch
eventos get, list, watch
configmaps get, list, watch
deployments get, list, watch
daemonsets get, list, watch
replicasets get, list, watch
statefulsets get, list, watch
jobs get, list, watch
cronjobs get, list, watch
memberships.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
onpremuserclusters.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
clusters.baremetal.cluster.gke.io get, list, watch, create
nodepools.baremetal.cluster.gke.io get, list, watch, create
clusters.cluster.x-k8s.io get, list, watch
machines.baremetal.cluster.gke.io get, list, watch
inventorymachines.baremetal.cluster.gke.io get, list, watch
addresspools.managementcenter.anthos.cloud.google.com get, list, watch
bootstrapservicebindings.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
bootstrapservices.managementcenter.anthos.cloud.google.com get, list, watch
bootstrapservicebindingitems.managementcenter.anthos.cloud.google.com get, list, watch
adminoperators.managementcenter.anthos.cloud.google.com get, list, watch
clientconfigs.authentication.gke.io get, list, watch, create, update, delete
configmanagementbindings.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
configmanagementfeaturespecs.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
configmanagementbindingitems.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
servicemeshbindings.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
servicemeshfeaturespecs.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
servicemeshbindingitems.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
identityservicebindings.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
identityservicefeaturespecs.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
identityservicebindingitems.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
updatablecomponents.managementcenter.anthos.cloud.google.com get, list, watch
domainconfigs.managementcenter.anthos.cloud.google.com get, list, watch, create, update, delete
logmons.addons.gke.io get, list, watch, create, update, delete
clusterrolebindings.rbac.authorization.k8s.io get, list, watch, create, update
customresourcedefinitions.apiextensions.k8s.io get, list, watch

Los administradores de plataforma tienen acceso de lectura a secrets para permitirles obtener un kubeconfig que se autentica como una función de cluster-admin en un clúster de usuario.

Los administradores de la plataforma pueden leer y escribir secrets y configmaps con una etiqueta logmon en kube-system a fin de configurar Logmon.

Administrador de plataforma (solo lectura)

La función de administrador de la plataforma (solo lectura) tiene los mismos derechos de acceso que una función de administrador de la plataforma, excepto por lo siguiente:

  • No se otorga el acceso a todos los verbos relacionados con la escritura (create, update, y delete).
  • Para acceder a un clúster de usuario, el administrador de plataforma (solo lectura) solo puede leer un kubeconfig que se autentica como una función de view en el clúster de usuario.

¿Qué sigue?