En este tema se explica cómo configurar el control de acceso basado en funciones (Role-Based Access Control, RBAC) en Tanzu Kubernetes Grid.
Si pretende utilizar archivos estándar y no administrativos kubeconfig
para el acceso al clúster, debe configurar la autorización de RBAC después de habilitar y configurar la administración de identidades. Para obtener más información sobre los archivos kubeconfig
, consulte los Archivos kubeconfig
de administrador y no administrador a continuación.
Para configurar la autorización de RBAC, cree uno o varios enlaces de funciones para cada clúster de carga de trabajo y de administración en el que desee utilizar los archivos estándar de no administrador kubeconfig
:
Para obtener más información sobre los enlaces de funciones, consulte Funciones y enlaces de funciones a continuación.
kubeconfig
de administrador y no administradorPara proporcionar a los usuarios acceso a un clúster de carga de trabajo o de administración, genere un archivo kubeconfig
y, a continuación, comparta el archivo con esos usuarios. Si les proporciona el archivo kubeconfig
de administrador para el clúster, tendrán acceso completo al clúster y no es necesario autenticarse. Sin embargo, si proporciona a los usuarios el archivo kubeconfig
estándar de no administrador, deben tener una cuenta de usuario en el proveedor de identidad LDAP u OIDC, y debe configurar RBAC en el clúster para conceder permisos de acceso al usuario designado.
Para generar un archivo kubeconfig
para un clúster de carga de trabajo o de administración, ejecute tanzu mc kubeconfig get
en el clúster de administración o tanzu cluster kubeconfig get
en el clúster de carga de trabajo. Al ejecutar cualquiera de estos comandos con o sin la opción --admin
, el comando funciona de la siguiente manera:
--admin
, el comando genera un archivo kubeconfig
de administrador que contiene credenciales integradas. Con esta versión de admin
de kubeconfig
, todos los usuarios con los que lo comparta tendrán acceso completo al clúster y se omitirá la autenticación del proveedor de identidad (IdP).--admin
, el comando genera un archivo kubeconfig
estándar de no administrador que solicita a los usuarios que se autentiquen con un proveedor de identidad externo. A continuación, el proveedor de identidades comprueba la identidad del usuario antes de que el usuario pueda acceder a los recursos del clúster.Para obtener más información sobre estos comandos, consulte:
kubeconfig
kubeconfig
Una función define un conjunto de permisos. Para definir una función dentro de un espacio de nombres específico, cree una función Role
o en todo el clúster mediante la creación de un ClusterRole
. Para conceder los permisos definidos en esa función a un usuario o un grupo de usuarios, debe crear un enlace de función.
Recurso | Alcance | Descripción |
---|---|---|
Role |
Espacio de nombres | Define los permisos que se pueden utilizar en un espacio de nombres específico RoleBinding . |
ClusterRole |
Clúster | Define los permisos que se pueden utilizar en un ClusterRoleBinding o RoleBinding específico del espacio de nombres. |
RoleBinding |
Espacio de nombres | Concede permisos dentro de un espacio de nombres específico. Puede hacer referencia a un Role o ClusterRole . |
ClusterRoleBinding |
Clúster | Concede permisos en todos los espacios de nombres del clúster. Solo puede hacer referencia a un ClusterRole . |
Las funciones de usuario predeterminadas incluyen:
cluster-admin
: Acceso completo al clúster. Cuando se utiliza en un RoleBinding
, esta función proporciona acceso completo a cualquier recurso en el espacio de nombres especificado en el enlace.admin
: Acceso de administrador a la mayoría de recursos en un espacio de nombres. Puede crear y modificar funciones y enlaces de funciones dentro del espacio de nombres.edit
: Acceso de lectura y escritura a la mayoría de los objetos de un espacio de nombres, como implementaciones, servicios y pods. No se pueden ver, crear ni modificar funciones ni enlaces de funciones.view
: Acceso de solo lectura a la mayoría de los objetos de un espacio de nombres. No se pueden ver, crear ni modificar funciones ni enlaces de funciones.Para obtener más información sobre estas funciones, consulte Utilizar autorización de RBAC en la documentación de Kubernetes.
En esta sección se explica cómo:
kubeconfig
de no administrador para el clúster de administraciónkubeconfig
de no administrador para el clúster de administraciónEste procedimiento permite probar el paso de inicio de sesión del proceso de autenticación si hay un navegador presente en la máquina en la que se ejecutan los comandos tanzu
y kubectl
. Si la máquina no tiene un navegador, consulte Autenticar usuarios en una máquina sin navegador.
Exporte el archivo kubeconfig
estándar para el clúster de administración a un archivo local, por ejemplo, /tmp/id_mgmt_test_kubeconfig
. Tenga en cuenta que el comando no incluye la opción --admin
, por lo que el archivo kubeconfig
que se exporta es la versión estándar kubeconfig
y no la versión admin
.
tanzu mc kubeconfig get --export-file /tmp/id_mgmt_test_kubeconfig
Deberá ver la confirmación de You can now access the cluster by specifying '--kubeconfig /tmp/id_mgmt_test_kubeconfig' flag when using 'kubectl' command
.
Conéctese al clúster de administración mediante el archivo kubeconfig
recién creado:
kubectl get pods -A --kubeconfig /tmp/id_mgmt_test_kubeconfig
El proceso de autenticación requiere que haya un navegador en la máquina desde la cual los usuarios se conectan a los clústeres, ya que al ejecutar los comandos kubectl
se abre automáticamente la página de inicio de sesión de IdP para que los usuarios puedan iniciar sesión en el clúster. El navegador debe abrir y mostrar la página de inicio de sesión del proveedor de OIDC o una página de inicio de sesión de LDAPS.
LDAPS:
OIDC:
Introduzca las credenciales de una cuenta de usuario que exista en el servidor LDAP o OIDC. Después de iniciar sesión correctamente, el navegador debe mostrar lo siguiente:
Vuelva al terminal en el que ejecuta los comandos tanzu
y kubectl
:
Si ya configuró un enlace de función en el clúster para el usuario autenticado, aparece el resultado de kubectl get pods -A
y se muestra la información del pod.
Si no ha configurado un enlace de función en el clúster, verá un mensaje que deniega el acceso de la cuenta de usuario a los pods: Error from server (Forbidden): pods is forbidden: User "[email protected]" cannot list resource "pods" in API group "" at the cluster scope
. Esto sucede porque el usuario se autenticó correctamente, pero aún no tiene autorización para acceder a ningún recurso del clúster. Para autorizar al usuario a acceder a los recursos del clúster, debe Crear un enlace de función en el clúster de administración como se describe a continuación.
Para proporcionar a los usuarios que no son administradores acceso a un clúster de administración, genere y distribuya un archivo kubeconfig
como se describe en Generar y probar un archivo kubeconfig
de no administrador para el clúster de administración anteriormente. Para que este archivo kubeconfig
funcione, primero debe configurar RBAC creando un enlace de función en el clúster de administración. Este enlace de función asigna permisos basados en funciones a usuarios o grupos de usuarios autenticados individuales.
Para crear un enlace de función:
Asegúrese de utilizar el contexto admin
del clúster de administración:
kubectl config current-context
Si el contexto no es el contexto del clúster de administración admin
, establezca kubectl
para utilizar ese contexto. Por ejemplo:
kubectl config use-context id-mgmt-test-admin@id-mgmt-test
Enumere sus funciones existentes:
Para ver la lista completa de funciones con ámbito de espacio de nombres, ejecute:
kubectl get roles --all-namespaces
Para ver la lista completa de funciones del ámbito del clúster, ejecute:
kubectl get clusterroles
Para asociar un usuario determinado con una función, cree un enlace de función.
RoleBinding
puede hacer referencia a un Role
o ClusterRole
.ClusterRoleBinding
solo puede hacer referencia a un ClusterRole
.En el siguiente ejemplo, se crea un enlace de función de clúster denominado id-mgmt-test-rb
que enlaza la función de clúster cluster-admin
con [email protected]
del usuario:
kubectl create clusterrolebinding id-mgmt-test-rb --clusterrole cluster-admin --user [email protected]
Para --user
, especifique el nombre de usuario de LDAP u OIDC del usuario. Ha configurado el atributo de nombre de usuario y otros detalles del proveedor de identidades en la sección Administración de identidades de la interfaz del instalador de Tanzu Kubernetes Grid o configurando las variables LDAP_*
u OIDC_*
:
OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM
.LDAP_USER_SEARCH_NAME_ATTRIBUTE
.Por ejemplo, para OIDC, el nombre de usuario suele ser la dirección de correo electrónico del usuario. Para LDAPS, es el nombre de usuario de LDAP, no la dirección de correo electrónico.
Intente volver a conectarse al clúster de administración mediante el archivo kubeconfig
que creó en el procedimiento anterior:
kubectl get pods -A --kubeconfig /tmp/id_mgmt_test_kubeconfig
Esta vez, debido a que el usuario está enlazado a la función cluster-admin
en este clúster de administración, se debe mostrar la lista de pods. Puede compartir el archivo kubeconfig
generado con cualquier usuario para el que configure enlaces de función en el clúster de administración.
En esta sección se explica cómo:
kubeconfig
de no administrador para un clúster de carga de trabajokubeconfig
de no administrador para un clúster de carga de trabajoEste procedimiento permite probar el paso de inicio de sesión del proceso de autenticación si hay un navegador presente en la máquina en la que se ejecutan los comandos tanzu
y kubectl
. Si la máquina no tiene un navegador, consulte Autenticar usuarios en una máquina sin navegador.
Para autenticar usuarios en un clúster de carga de trabajo, realice los siguientes pasos:
Obtenga el archivo kubeconfig
estándar para el clúster de carga de trabajo y expórtelo a un archivo. En el siguiente ejemplo, se exporta el archivo kubeconfig
para el clúster my-cluster
al archivo my-cluster-kubeconfig
.
tanzu cluster kubeconfig get my-cluster --export-file /tmp/my-cluster-kubeconfig
Utilice el archivo generado para intentar ejecutar una operación en el clúster. Por ejemplo, ejecute:
kubectl get pods -A --kubeconfig /tmp/my-cluster-kubeconfig
Debe ser redirigido a la página de inicio de sesión del proveedor de identidad. Después de iniciar sesión correctamente con una cuenta de usuario del proveedor de identidad, si ya configuró un enlace de función en el clúster para el usuario autenticado, el resultado muestra la información del pod.
Si no ha configurado un enlace de funciones en el clúster, verá el mensaje Error from server (Forbidden): pods is forbidden: User "<user>" cannot list resource "pods" in API group "" at the cluster scope
. Esto sucede porque este usuario aún no tiene ningún permiso en el clúster. Para autorizar al usuario a acceder a los recursos del clúster, debe Crear un enlace de función en un clúster de carga de trabajo.
Para completar la configuración de administración de identidades del clúster de carga de trabajo, debe crear enlaces de funciones para los usuarios que utilicen el archivo kubeconfig
que generó en el paso anterior.
Establezca el contexto kubectl
en el admin
kubeconfig
del clúster de carga de trabajo. Debe cambiar al contexto admin
del clúster de carga de trabajo para poder crear un enlace de función. Por ejemplo, ejecute los dos comandos siguientes para cambiar al contexto admin
:
Obtenga el kubeconfig
:
tanzu cluster kubeconfig get my-cluster --admin
Cambie el contexto:
kubectl config use-context my-cluster-admin@my-cluster
Para ver sus funciones existentes:
Para ver la lista completa de funciones con ámbito de espacio de nombres, ejecute:
kubectl get roles --all-namespaces
Para ver la lista completa de funciones del ámbito del clúster, ejecute:
kubectl get clusterroles
Para asociar un usuario determinado con una función, cree un enlace de función.
RoleBinding
puede hacer referencia a un Role
o ClusterRole
.ClusterRoleBinding
solo puede hacer referencia a un ClusterRole
.En el siguiente ejemplo, se crea un enlace de función de clúster denominado workload-test-rb
que enlaza la función de clúster cluster-admin
con [email protected]
del usuario:
kubectl create clusterrolebinding workload-test-rb --clusterrole cluster-admin --user [email protected]
Para --user
, especifique el nombre de usuario de LDAP u OIDC del usuario. Ha configurado el atributo de nombre de usuario y otros detalles del proveedor de identidades en la sección Administración de identidades de la interfaz del instalador de Tanzu Kubernetes Grid o configurando las variables LDAP_*
u OIDC_*
:
OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM
.LDAP_USER_SEARCH_NAME_ATTRIBUTE
.Por ejemplo, para OIDC, el nombre de usuario suele ser la dirección de correo electrónico del usuario. Para LDAPS, es el nombre de usuario de LDAP, no la dirección de correo electrónico.
Utilice el archivo estándar kubeconfig
que generó anteriormente para intentar volver a ejecutar una operación en el clúster. Por ejemplo, ejecute:
kubectl get pods -A --kubeconfig /tmp/my-cluster-kubeconfig
Esta vez, debería ver la lista de pods que se ejecutan en el clúster de carga de trabajo. Esto se debe a que el usuario del archivo my-cluster-kubeconfig
ha sido autenticado por el proveedor de identidad y tiene los permisos necesarios en el clúster. Puede compartir el archivo my-cluster-kubeconfig
con cualquier usuario para el que configure enlaces de función en el clúster.
Comparta los archivos kubeconfig
generados con otros usuarios para permitirles acceder a los clústeres.