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 la ejecución de Anthos en modo desconectado.
Funciones de autorización
La ejecución de Anthos en modo desconectado 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 en Anthos Management Center, ClusterRole/Role, vinculaciones de ClusterRole/Role, definiciones de recursos personalizados y acceso de lectura limitado a los secretos.
Los usuarios tienen acceso de escritura a Grafana para editar paneles. |
Administrador de la plataforma | anthos-platform-admin |
|
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
La ejecución de Anthos en modo desconectado sincroniza de forma automática cualquier usuario vinculado a estas cuatro funciones en la lista de anunciantes permitidos del acceso al centro de administración y 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
- Crea vinculaciones de funciones según el usuario
(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. La ejecución de Anthos en modo desconectado 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 usargid-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.
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?
- Configura la identidad y la seguridad en clústeres de usuario.
- Obtén información sobre la autenticación con Keycloak o el SSO de Google.