Permisos de clúster (basados en IAM)
Los permisos a nivel de clúster de CCE se asignan según las IAM system policies y custom policies. Puede utilizar grupos de usuarios para asignar permisos a los usuarios de IAM.
Cluster permissions se configuran solo para recursos relacionados con clústeres (como clústeres y nodos). También debe configurar los permisos de espacio de nombres para operar los recursos de Kubernetes (como cargas de trabajo y Services).
Requisitos previos
- Antes de conceder permisos a grupos de usuarios, familiarícese con las políticas del sistema que aparecen en Gestión de permisos. Para ver las políticas del sistema de otros servicios, consulte Permisos del sistema.
- Un usuario con el rol de Security Administrator (por ejemplo, su cuenta) tiene todos los permisos de IAM excepto el cambio de rol. Solo estos usuarios pueden ver los grupos de usuarios y sus permisos en la página Permissions de la consola de CCE.
Configuración
En la consola de CCE, cuando elija Permissions > Cluster-Level Permissions para crear un grupo de usuarios, se le dirigirá a la consola de IAM para completar el proceso. Después de crear el grupo de usuarios y configurar sus permisos, puede ver la información en la página de ficha Cluster-Level Permissions. Esta sección describe las operaciones en IAM.
Flujo del proceso
- Cree un grupo de usuarios y asígnele los permisos.
Cree un grupo de usuarios en la consola de IAM y asigne los permisos de CCE, por ejemplo, la política CCEReadOnlyAccess al grupo.
CCE se despliega por región. En la consola de IAM, seleccione Region-specific projects al asignar permisos de CCE.
- Cree un usuario y agréguelo a un grupo de usuarios.
Cree un usuario en la consola de IAM y agregue el usuario al grupo creado en 1.
- Inicie sesión y verifique los permisos.
Inicie sesión en la consola de gestión como el usuario que creó y compruebe que el usuario tiene los permisos asignados.
- Inicie sesión en la consola de gestión, cambie a la consola de CCE y compre un clúster. Si no lo hace (suponiendo que solo se asigna el permiso CCEReadOnlyAccess), la política CCEReadOnlyAccess entra en vigor.
- Cambie a la consola de cualquier otro servicio. Si aparece un mensaje que indica que no tiene los permisos necesarios para acceder al servicio, la política CCEReadOnlyAccess entra en vigor.
Roles definidos por el sistema
Los roles son un tipo de mecanismo de autorización de grano grueso que define permisos de nivel de servicio en función de las responsabilidades del usuario. Solo un número limitado de roles de nivel de servicio están disponibles para autorización. Los roles no son ideales para la autorización detallada y el acceso con privilegios mínimos.
El rol de sistema preestablecido para CCE en IAM es CCEAdministrator. Al asignar este rol a un grupo de usuarios, también debe seleccionar otros roles y políticas de los que depende este rol, como Tenant Guest, Server Administrator, ELB Administrator, OBS Administrator, SFS Administrator, SWR Admin y APM FullAccess. Para obtener más información acerca de las dependencias, vea Permisos del sistema.
Políticas definidas por el sistema
Las políticas de sistema preestablecidas para CCE en IAM son CCEFullAccess y CCEReadOnlyAccess.
- CCE FullAccess: permisos de operación comunes en los recursos de clúster de CCE, excluidos los permisos de espacio de nombres para los clústeres (con Kubernetes RBAC habilitado) y las operaciones de administrador con privilegios, como la configuración de delegación y la generación de certificados de clúster
- CCE ReadOnlyAccess: permisos para ver los recursos del clúster de CCE, excluidos los permisos a nivel de espacio de nombres de los clústeres (con Kubernetes RBAC habilitado)
Acción |
Acción específica |
Descripción |
---|---|---|
cce:*:* |
cce:cluster:create |
Crear un clúster. |
cce:cluster:delete |
Eliminar un clúster. |
|
cce:cluster:update |
Actualizar un clúster, por ejemplo, actualizar los parámetros de programación de nodos de clúster y proporcionar soporte RBAC a los clústeres. |
|
cce:cluster:upgrade |
Actualizar un clúster. |
|
cce:cluster:start |
Despertar un grupo. |
|
cce:cluster:stop |
Hibernar un clúster. |
|
cce:cluster:list |
Enumerar todos los clústeres. |
|
cce:cluster:get |
Consultar detalles del clúster. |
|
cce:node:create |
Agregar un nodo de clúster. |
|
cce:node:delete |
Eliminar uno o más nodos. |
|
cce:node:update |
Actualizar un nodo de clúster, por ejemplo, actualizar el nombre del nodo. |
|
cce:node:get |
Consultar detalles del nodo. |
|
cce:node:list |
Listar todos los nodos. |
|
cce:nodepool:create |
Crear un grupo de nodos. |
|
cce:nodepool:delete |
Eliminar un grupo de nodos. |
|
cce:nodepool:update |
Actualizar información acerca de un grupo de nodos. |
|
cce:nodepool:get |
Obtener información acerca de un grupo de nodos. |
|
cce:nodepool:list |
Enumerar todos los grupos de nodos de un clúster. |
|
cce:release:create |
Crear una versión. |
|
cce:release:delete |
Eliminar una versión. |
|
cce:release:update |
Actualizar una versión. |
|
cce:job:list |
Enumerar todos los trabajos de clúster. |
|
cce:job:delete |
Eliminar uno o más trabajos de clúster. |
|
cce:job:get |
Consultar un trabajo de clúster especificado. |
|
cce:storage:create |
Crear un volumen de almacenamiento. |
|
cce:storage:delete |
Eliminar un volumen de almacenamiento. |
|
cce:storage:list |
Listar todos los volúmenes. |
|
cce:addonInstance:create |
Crear una instancia de complemento. |
|
cce:addonInstance:delete |
Eliminar una instancia de complemento. |
|
cce:addonInstance:update |
Actualizar una instancia de complemento. |
|
cce:addonInstance:get |
Consultar detalles de la instancia del complemento. |
|
cce:addonTemplate:get |
Consultar detalles de plantilla adicional. |
|
cce:addonInstance:list |
Enumerar todas las instancias de complemento. |
|
cce:addonTemplate:list |
Enumerar todas las plantillas adicionales. |
|
cce:chart:list |
Listar todos los gráficos. |
|
cce:chart:delete |
Eliminar un gráfico. |
|
cce:chart:update |
Actualizar un gráfico. |
|
cce:chart:upload |
Subir un gráfico. |
|
cce:chart:get |
Obtener información sobre un gráfico. |
|
cce:release:get |
Obtener información acerca de un comunicado de prensa. |
|
cce:release:list |
Listar todos los lanzamientos. |
|
cce:userAuthorization:get |
Obtener la autorización del usuario de CCE. |
|
cce:userAuthorization:create |
Crear la autorización de usuario de CCE. |
|
ecs:*:* |
- |
Realizar todas las operaciones en Elastic Cloud Server (ECS). |
evs:*:* |
- |
Realizar todas las operaciones en Elastic Volume Service (EVS). Los discos de EVS se pueden conectar a servidores en la nube y ampliarlos a una mayor capacidad cuando sea necesario. |
vpc:*:* |
- |
Realizar todas las operaciones en Virtual Private Cloud (VPC), incluidos los ELB. Un clúster debe ejecutarse en una VPC. Al crear un espacio de nombres, debe crear o asociar una VPC para el espacio de nombres de modo que todos los contenedores del espacio de nombres se ejecuten en la VPC. |
sfs:*:get* |
- |
Consultar los detalles de recursos del Scalable File Service (SFS). |
sfs:shares:ShareAction |
- |
Compartir recursos de SFS para escalar. |
aom:*:get |
- |
Ver detalles de recursos de Application Operations Management (AOM). |
aom:*:list |
- |
Enumerar los recursos de AOM. |
aom:autoScalingRule:* |
- |
Realizar todas las operaciones en las reglas de ajuste automático de AOM. |
apm:icmgr:* |
- |
Realizar operaciones en el ICAgent en Application Performance Management (APM). |
lts:*:* |
- |
Realizar todas las operaciones en Log Tank Service (LTS). |
Acción |
Acción específica |
Descripción |
---|---|---|
cce:*:get |
cce:cluster:get |
Consultar detalles del clúster. |
cce:node:get |
Consultar detalles del nodo. |
|
cce:job:get |
Consultar un trabajo de clúster especificado. |
|
cce:addonInstance:get |
Consultar detalles de la instancia del complemento. |
|
cce:addonTemplate:get |
Consultar detalles de plantilla adicional. |
|
cce:chart:get |
Obtener información sobre un gráfico. |
|
cce:nodepool:get |
Obtener información acerca de un grupo de nodos. |
|
cce:release:get |
Obtener información acerca de un comunicado de prensa. |
|
cce:userAuthorization:get |
Obtener la autorización del usuario de CCE. |
|
cce:*:list |
cce:cluster:list |
Enumerar todos los clústeres. |
cce:node:list |
Listar todos los nodos. |
|
cce:job:list |
Enumerar todos los trabajos de clúster. |
|
cce:addonInstance:list |
Enumerar todas las instancias de complemento. |
|
cce:addonTemplate:list |
Enumerar todas las plantillas adicionales. |
|
cce:chart:list |
Listar todos los gráficos. |
|
cce:nodepool:list |
Enumerar todos los grupos de nodos de un clúster. |
|
cce:release:list |
Listar todos los lanzamientos. |
|
cce:storage:list |
Listar todos los volúmenes. |
|
cce:kubernetes:* |
- |
Realizar las operaciones en todos los recursos de Kubernetes. Para obtener más información, consulte Permisos de espacio de nombres. |
ecs:*:get |
- |
Ver detalles sobre todos los recursos de ECS. Un ECS con varios discos de EVS es un nodo de clúster en CCE. |
ecs:*:list |
- |
Enumerar todos los recursos de ECS. |
bms:*:get* |
- |
Ver detalles sobre todos los recursos de BMS. |
bms:*:list |
- |
Listar todos los recursos de BMS. |
evs:*:get |
- |
Ver detalles de todos los recursos de disco de EVS. Los discos de EVS se pueden conectar a servidores en la nube y ampliarlos a una mayor capacidad cuando sea necesario. |
evs:*:list |
- |
Listar todos los recursos de EVS. |
evs:*:count |
- |
- |
vpc:*:get |
- |
Ver detalles de todos los recursos de VPC (incluidos los ELB). Un clúster debe ejecutarse en una VPC. Al crear un espacio de nombres, debe crear o asociar una VPC para el espacio de nombres de modo que todos los contenedores del espacio de nombres se ejecuten en la VPC. |
vpc:*:list |
- |
Enumerar todos los recursos de VPC (incluidos los ELB). |
sfs:*:get* |
- |
Ver detalles de recursos de SFS. |
sfs:shares:ShareAction |
- |
Compartir recursos de SFS para escalar. |
aom:*:get |
- |
Ver detalles de recursos de AOM. |
aom:*:list |
- |
Listar todos los recursos de AOM. |
aom:autoScalingRule:* |
- |
Realizar todas las operaciones en las reglas de ajuste automático de AOM. |
lts:*:get |
- |
Ver detalles sobre todos los recursos de LTS. |
lts:*:list |
- |
Listar todos los recursos de LTS. |
Políticas personalizadas
Las políticas personalizadas se pueden crear como un suplemento a las políticas definidas por el sistema de CCE. Para ver las acciones que se pueden agregar a las políticas personalizadas, consulte Políticas de permisos y acciones admitidas.
Puede crear las políticas personalizadas de cualquiera de las siguientes maneras:
- Visual editor: Seleccione servicios en la nube, acciones, recursos y condiciones de solicitud. Esto no requiere conocimiento de la sintaxis de políticas.
- JSON: Edite las políticas de JSON desde cero o basándose en una política existente.
Para obtener más información, consulte Creación de una política personalizada. Esta sección proporciona ejemplos de políticas de CCE personalizadas comunes.
Ejemplo de políticas personalizadas:
- Ejemplo 1: Creación de un clúster denominado test
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cce:cluster:create" ] } ] }
- Ejemplo 2: Detención de la eliminación de nodos
Una política con solo los permisos "Deny" debe usarse junto con otras políticas para que surtan efecto. Si los permisos asignados a un usuario contienen tanto "Allow" como "Deny", los permisos "Deny" tienen prioridad sobre los permisos "Allow".
El siguiente método se puede utilizar si necesita asignar permisos de la política CCEFullAccess a un usuario pero desea evitar que el usuario elimine nodos (cce:node:delete). Cree una política personalizada para denegar la eliminación de nodos y adjunte ambas políticas al grupo al que pertenece el usuario. A continuación, el usuario puede realizar todas las operaciones en CCE excepto la eliminación de nodos. A continuación se muestra un ejemplo de una política de denegación:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "cce:node:delete" ] } ] }
- Ejemplo 3: Definición de permisos para varios servicios en una política
Una política personalizada puede contener las acciones de varios servicios que son de tipo global o de nivel de proyecto. A continuación se muestra una política de ejemplo que contiene acciones de varios servicios:
{ "Version": "1.1", "Statement": [ { "Action": [ "ecs:cloudServers:resize", "ecs:cloudServers:delete", "ecs:cloudServers:delete", "ims:images:list", "ims:serverImages:create" ], "Effect": "Allow" } ] }
Permisos de clúster de CCE y proyectos empresariales
CCE admite la gestión de recursos y la asignación de permisos por clúster y proyecto empresarial.
Tenga en cuenta que:
- Los proyectos de IAM se basan en el aislamiento físico de los recursos, mientras que los proyectos empresariales proporcionan los grupos lógicos globales de recursos que satisfacen mejor las necesidades reales de las empresas. Además, las políticas de IAM se pueden gestionar en función de proyectos empresariales. Por lo tanto, se recomienda utilizar proyectos de empresa para la gestión de permisos. Para obtener más información, consulte Creación de un proyecto de empresa.
- Cuando hay proyectos de IAM y proyectos empresariales, IAM coincide preferentemente con las políticas de proyecto de IAM.
- Al crear un clúster o nodo con recursos de nube comprados, asegúrese de que los usuarios de IAM tienen los permisos necesarios en el proyecto empresarial para usar estos recursos. De lo contrario, es posible que no se cree el clúster o el nodo.
- Si un recurso no admite proyectos de empresa, los permisos concedidos al recurso no tendrán efecto.
Tipo de recurso
Nombre del recurso
Descripción
Apoyo a proyectos empresariales
cluster
Clúster
node
Nodo
nodepool
Grupo de nodos
job
Trabajo
tag
Etiqueta de clúster
addonInstance
Instancia de complementos
release
Versión de Helm
storage
Almacenamiento
No admite proyectos empresariales
quota
Cuota de clúster
chart
Gráfico
addonTemplate
Plantilla de complemento
Permisos de clúster de CCE y IAM RBAC
CCE es compatible con los roles del sistema de IAM para la gestión de permisos. Se recomienda utilizar las políticas detalladas proporcionadas por IAM para simplificar la gestión de permisos.
CCE admite las siguientes funciones:
- Funciones básicas de IAM:
- te_admin (Tenant Administrator): Los usuarios con este rol pueden invocar a todas las API de todos los servicios excepto IAM.
- readonly (Tenant Guest): los usuarios con este rol pueden invocar a las API con los permisos de solo lectura de todos los servicios excepto IAM.
- Rol de administrador de CCE personalizado: CCE Administrator
- Las API de CCE están diseñadas para ser compatibles con tres roles de sistema heredados de ServiceStage (SvcStg Administrator, SvcStg Developer y SvcStg Operator). Actualmente, CCE y ServiceStage se han adaptado completamente a las políticas detalladas de IAM para la gestión de permisos. Por lo tanto, no se recomienda utilizar estas funciones heredadas para la gestión de permisos. Estas funciones de ServiceStage se describen de la siguiente manera:
- SvcStg Administrator: este rol tiene los mismos permisos que el rol CCE Administrator, excepto que los usuarios con este rol no tienen los permisos de nivel de espacio de nombres de forma predeterminada (Kubernetes RBAC).
- SvcStg Developer: Este rol tiene los mismos permisos que el rol CCE Administrator, excepto que el usuario con este rol no tiene el permiso de nivel de espacio de nombres de forma predeterminada (Kubernetes RBAC).
- SvcStg Operator: este rol tiene los permisos de solo lectura en CCE, excluidos los permisos de nivel de espacio de nombres de los clústeres de forma predeterminada.
- Tenant Administrator y Tenant Guest son los roles especiales del sistema de IAM. Después de configurar cualquier sistema o política personalizada, Tenant Administrator y Tenant Guest entran en vigor como políticas del sistema para lograr la compatibilidad con escenarios IAM RBAC y ABAC.
- Si un usuario tiene el rol de sistema de Tenant Administrator o de CCE Administrator, el usuario tiene los permisos de cluster-admin en Kubernetes RBAC y los permisos no se pueden quitar después de crear el clúster.
Si el usuario es el creador del clúster, los permisos de cluster-admin en Kubernetes RBAC se otorgan al usuario de forma predeterminada. Los permisos se pueden quitar manualmente después de crear el clúster.
- Método 1: Elija Permissions Management > Namespace-Level Permissions > Delete con el mismo rol que el creador de clústeres en la consola de CCE.
- Método 2: Elimine ClusterRoleBinding: cluster-creator con la API o kubectl.
Cuando las políticas RBAC e IAM coexisten, la lógica de autenticación de back-end para las API abiertas o las operaciones de consola en CCE es la siguiente:
Ciertas API de CCE implican permisos a nivel de espacio de nombres u operaciones de clave y, por lo tanto, requieren los permisos especiales:
Uso de clusterCert para obtener el clúster de kubeconfig: cceadm/teadmin