El sistema de autorización de Container Compute Service (ACS) incluye la autorización de Resource Access Management (RAM) para los recursos de cómputo subyacentes y la autorización de control de acceso basado en roles (RBAC) para los clústeres de Container Service for Kubernetes (ACK) de tipo ACS. Cada rol de usuario requiere permisos distintos en ambas capas. Este tema describe las mejores prácticas de autorización para administradores de recursos empresariales, administradores de clústeres de Kubernetes, ingenieros de operación y mantenimiento (O&M) de clústeres y aplicaciones, desarrolladores de aplicaciones y administradores de permisos.
Sistema de autorización de ACS
Cómo funcionan las dos capas en conjunto
Los clústeres de ACS son un tipo de clúster serverless de Container Service for Kubernetes (ACK). Todas las llamadas de administración del clúster invocan API de ACK, por lo que se requieren tanto los permisos a nivel de nube (RAM) como los permisos a nivel de clúster (RBAC).
|
Capa |
Alcance |
Controles |
Se otorga mediante |
|
Autorización de RAM |
Recursos de la nube (plano de control) |
Ciclo de vida del clúster, gestión de RBAC, monitoreo, registros y eventos |
Políticas de sistema o políticas personalizadas de RAM |
|
Autorización de RBAC |
Recursos de Kubernetes (plano de datos) |
Cargas de trabajo, red, almacenamiento, espacios de nombres, ConfigMaps y Secrets |
ClusterRoles predefinidos o personalizados en la consola de ACS |
Complete la autorización de RAM antes de otorgar permisos de RBAC.
Qué abarca la autorización de RAM
La autorización de RAM otorga permisos para las operaciones de O&M del clúster:
Crear, consultar y eliminar clústeres
Gestionar la autorización de RBAC
Monitorear clústeres y gestionar registros y eventos
Qué abarca la autorización de RBAC
La autorización de RBAC otorga permisos a nivel de espacio de nombres o en todo el clúster sobre los recursos de Kubernetes:
Recursos de carga de trabajo: Deployment, StatefulSet, Job, CronJob, pod, ReplicaSet y HorizontalPodAutoscaler (HPA)
Recursos de red: Service, Ingress y NetworkPolicy
Recursos de almacenamiento: volumen persistente (PV), solicitud de volumen persistente (PVC) y StorageClass
Otros recursos: Namespace, ConfigMap y Secret
Políticas de sistema predeterminadas
ACS proporciona las siguientes políticas de sistema predeterminadas. Puede adjuntar estas políticas a usuarios o roles de RAM para otorgar permisos rápidamente.
Las políticas de sistema predeterminadas otorgan permisos amplios. Estos pueden incluir acceso de lectura o escritura a todas las operaciones de OpenAPI de ACK y ACS. Otorgue estas políticas con precaución.
Política de sistema predeterminada | Descripción |
AliyunAccFullAccess | Permisos para gestionar ACS. |
AliyunAccReadOnlyAccess | Permisos de solo lectura en ACS. |
AliyunCSFullAccess | Permisos para gestionar ACK. Importante Otorga permisos de lectura y escritura en todos los clústeres de ACK, incluidos los de tipo ACS. Otorgue estos permisos con precaución. |
AliyunCSReadOnlyAccess | Permisos de solo lectura en ACK. Importante Otorga permisos de lectura en todos los clústeres de ACK, incluidos los de tipo ACS. Otorgue estos permisos con precaución. |
Política AliyunAccFullAccess
{
"Statement": [
{
"Effect": "Allow",
"Action": "acc:*",
"Resource": "*"
}
],
"Version": "1"
}
Política AliyunAccReadOnlyAccess
{
"Version": "1",
"Statement": [
{
"Action": [
"acc:Describe*",
"acc:CheckServiceRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Política AliyunCSFullAccess
{
"Version": "1",
"Statement": [
{
"Action": "cs:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:PassRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:Service": "cs.aliyuncs.com"
}
}
}
]
}
Política AliyunCSReadOnlyAccess
{
"Version": "1",
"Statement": [
{
"Action": [
"cs:CheckServiceRole",
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Mejores prácticas de autorización
Cuando un usuario o rol de RAM necesita permisos para el O&M de clústeres y aplicaciones, debe otorgarle permisos tanto de RAM como de RBAC. Otorgue primero los permisos de RAM y después los de RBAC. A continuación se describen los procedimientos de autorización para tres escenarios comunes:
Si el usuario es un ingeniero de O&M de clústeres y aplicaciones, consulte Scenario 1: O&M engineer for clusters and applications.
Si el usuario es un desarrollador de aplicaciones dentro del clúster, consulte Scenario 2: Developer for in-cluster applications.
Si el usuario es un administrador de permisos de aplicaciones dentro del clúster, consulte Scenario 3: Permission administrator for in-cluster applications.
Escenario 1: Ingeniero de O&M de clústeres y aplicaciones
Este escenario está diseñado para usuarios que gestionan y mantienen clústeres de ACS y las aplicaciones que contienen. El proceso de autorización implica otorgar permisos de RAM y de RBAC.
-
Autorización de RAM
ACK proporciona dos políticas de sistema para RAM: AliyunCSFullAccess y AliyunCSReadOnlyAccess.
AliyunCSFullAccess otorga permisos de lectura y escritura para todas las operaciones de OpenAPI de ACK.
-
AliyunCSReadOnlyAccess otorga permisos de solo lectura para todas las operaciones de OpenAPI de ACK.
ImportanteEstas dos políticas de sistema otorgan permisos sobre todos los clústeres de ACK, incluidos los de tipo ACS. Otorgue estos permisos con precaución.
Inicie sesión en la consola de RAM y adjunte una de las políticas de sistema según sus necesidades. Para obtener más información, consulte Manage permissions for a RAM user y Manage permissions for a RAM role.
Si requiere un control de acceso detallado, cree una política personalizada. Para obtener más información, consulte Grant RAM permissions to a RAM user or RAM role.
El siguiente código muestra un ejemplo de política de autorización de RAM para este escenario.
{ "Statement": [ { "Effect": "Allow", "Action": [ "acc:DescribeCommodityStatus", "acc:CheckServiceRole", "acc:DescribeCloudProducts", "acc:DescribeRegions", "acc:DescribeZones", "acc:GetInstancePrice", "acc:RecommendZones", "acc:DescribeGpuModelSeries" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "bssapi:GetPayAsYouGoPrice", "bssapi:QueryAccountBalance" ], "Resource": "*" }, { "Action": [ "ecs:DescribePrice", "ecs:DescribeAccountAttributes" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ram:GetRole", "ram:CreateRole" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "cs:CreateCluster", "cs:DescribeAddons", "cs:DescribeUserQuota", "cs:DescribeTasks", "cs:ListClusterAddonInstances" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "cs:GetClusters", "cs:DescribeClustersV1", "cs:DescribeClusterUserKubeconfig", "cs:DescribeClusterResources", "cs:DescribeUserQuota", "cs:DescribeClusterLogs", "cs:ModifyCluster", "cs:UpgradeCluster", "cs:GetUpgradeStatus", "cs:ResumeUpgradeCluster", "cs:PauseClusterUpgrade", "cs:CancelClusterUpgrade", "cs:InstallClusterAddons", "cs:UpgradeClusterAddons", "cs:DescribeClusterAddonsUpgradeStatus", "cs:UnInstallClusterAddons", "cs:DeleteCluster", "cs:DescribeClusterDetail", "cs:GetClusterAuditProject", "cs:DescribeClusterAddonsVersion", "cs:DescribeClusterTasks", "cs:DescribeClusterEvents", "cs:DescribeEvents", "cs:ListClusterReportSummary", "cs:GetClusterBasicInfo", "cs:ListReportTaskRule", "cs:CreateReportTaskRule", "cs:CheckControlPlaneLogEnable", "cs:CreateClusterCheck" ], "Effect": "Allow", "Resource": "acs:cs:*:*:cluster/<yourclusterID>" }, { "Action": [ "cs:CheckServiceRole", "cs:DescribeKubernetesVersionMetadata" ], "Effect": "Allow", "Resource": "acs:cs:*:*:cluster/*" }, { "Action": [ "log:ListProject", "log:DescribeService", "log:GetSlsService" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "vpc:ListEnhanhcedNatGatewayAvailableZones", "vpc:DescribeEipAddresses", "vpc:DescribeVSwitches", "vpc:DescribeVpcs" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }En el ejemplo anterior, reemplace
<yourclusterID>con el ID real del clúster de ACS. Para obtener más información sobre la OpenAPI de ACK, consulte [[Product Change] Notice on ACK OpenAPI Authentication Optimization](t2103012.dita#task_2103012) y API overview.
-
Autorización de RBAC
Después de otorgar los permisos de RAM, también debe conceder al usuario o rol de RAM los permisos de RBAC correspondientes al clúster. ACK proporciona cuatro roles predefinidos a nivel de clúster.
Rol
Permisos de RBAC dentro del clúster
Administrator
Permisos de lectura y escritura sobre todos los recursos en todos los espacios de nombres.
O&M Engineer
Permisos de lectura y escritura sobre los recursos de Kubernetes visibles en la consola en todos los espacios de nombres. También incluye permisos de solo lectura sobre nodos del clúster, volúmenes persistentes (PV), espacios de nombres y cuotas.
Developer
Permisos de lectura y escritura sobre los recursos de Kubernetes visibles en la consola, ya sea en todos los espacios de nombres o solo en los seleccionados.
Restricted User
Permisos de solo lectura sobre los recursos de Kubernetes visibles en la consola, en todos los espacios de nombres o únicamente en los seleccionados.
En la consola de Container Compute Service, haga clic en Authorizations en el panel de navegación izquierdo. En la pestaña sub account o RAM Roles, busque la identidad de destino y haga clic en Modify Permissions.
En el cuadro de diálogo que aparece, haga clic en +Add Permissions. Establezca el permiso del clúster de destino y sus espacios de nombres en O&M Engineer y, a continuación, haga clic en Submit.
Una vez asignado el rol predefinido, ACS crea automáticamente una instancia de ClusterRoleBinding en el clúster. Esta instancia corresponde a la identidad del usuario o rol autorizado. El siguiente código muestra los permisos de RBAC del rol predefinido O&M Engineer.
Si requiere permisos de RBAC más específicos, cree una instancia de ClusterRole personalizada con base en la documentación oficial de RBAC de Kubernetes. Después, en la página Authorizations de la consola de Container Compute Service, seleccione Custom y elija el nombre del ClusterRole personalizado en la lista desplegable. Para obtener más información, consulte Create a custom RBAC authorization policy.
Escenario 2: Desarrollador de aplicaciones dentro del clúster
Este escenario aplica a usuarios que solo gestionan recursos de Kubernetes dentro de un clúster de ACS mediante autorización de RBAC y no necesitan acceder a otros recursos de la nube.
Antes de otorgar permisos de RBAC, el usuario o rol debe contar, como mínimo, con permisos de RAM de solo lectura para el clúster de destino. Si establece Resource en *, se otorgan los permisos de Action especificados sobre todos los clústeres de ACK. No utilice un comodín (*) para el recurso a menos que comprenda por completo su alcance e impacto.
-
Autorización de RAM
Cree una política personalizada en la consola de RAM y adjúntela al usuario o rol de RAM de destino. Para obtener más información, consulte Grant RAM permissions to a RAM user or RAM role. La política personalizada es la siguiente:
{ "Statement": [ { "Effect": "Allow", "Action": [ "acc:DescribeCommodityStatus", "acc:CheckServiceRole", "acc:DescribeCloudProducts", "acc:DescribeRegions", "acc:DescribeZones", "acc:GetInstancePrice", "acc:RecommendZones" ], "Resource": "*" }, { "Effect": "Allow", "Action": "bssapi:GetPayAsYouGoPrice", "Resource": "*" }, { "Action": [ "cs:Get*", "cs:List*", "cs:Check*", "cs:Describe*" ], "Effect": "Allow", "Resource": [ "acs:cs:*:*:cluster/<yourclusterID>" ] }, { "Action": [ "vpc:ListEnhanhcedNatGatewayAvailableZones", "vpc:DescribeEipAddresses" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }En el ejemplo anterior, reemplace
<yourclusterID>con el ID real de su clúster de ACS.NotaSi solo necesita otorgar a un usuario permisos de solo lectura sobre un clúster de ACS específico, utilice esta política de ejemplo y especifique el ARN del clúster. No asigne la política de sistema
AliyunCSReadOnlyAccess. Dicha política otorga permisos de solo lectura sobre todos los clústeres de ACK y resulta demasiado permisiva para este caso de uso. -
Autorización de RBAC
En la consola de Container Compute Service, haga clic en Authorizations en el panel de navegación izquierdo. En la pestaña sub account o RAM Roles, busque la identidad de destino y haga clic en Modify Permissions.
En el cuadro de diálogo que aparece, haga clic en +Add Permissions. Establezca el permiso del clúster de destino y sus espacios de nombres en Developer y, a continuación, haga clic en Submit.
Una vez asignado el rol predefinido, ACS crea automáticamente una instancia de ClusterRoleBinding en el clúster. Esta instancia corresponde a la identidad del usuario o rol autorizado. El siguiente código de ejemplo muestra los permisos de RBAC del rol predefinido Developer.
Escenario 3: Administrador de permisos de aplicaciones dentro del clúster
El usuario o rol que autoriza necesita gestionar los permisos de RBAC de otros usuarios o roles de RAM. De forma predeterminada, un usuario o rol de RAM no tiene permiso para otorgar permisos de RBAC a otros usuarios o roles de RAM. Cuando el usuario o rol que autoriza accede a la página de gestión de autorizaciones en la consola de Container Service, la interfaz podría mostrar el mensaje The current RAM user does not have authorization management permissions. Please contact the Alibaba Cloud account or a permission administrator for authorization.. Esto indica que dicho usuario o rol carece de la autorización de RAM necesaria o de la autorización de administrador de RBAC para el clúster.
-
Autorización de RAM
Asegúrese de que el usuario o rol cuente con los permisos de RAM necesarios. La política debe incluir permisos para:
Listar otros usuarios o roles de RAM.
Otorgar políticas de RAM a usuarios o roles de RAM específicos.
Consultar las configuraciones de permisos de RBAC de Kubernetes de usuarios o roles de RAM específicos.
Ejecutar la autorización de RBAC de Kubernetes.
En la consola de RAM, otorgue los permisos de RAM correspondientes al usuario o rol de RAM especificado. Para obtener más información, consulte Grant RAM permissions to a RAM user or RAM role. El siguiente código de ejemplo muestra una política de RAM personalizada.
{ "Statement": [ { "Effect": "Allow", "Action": [ "acc:DescribeCommodityStatus", "acc:CheckServiceRole", "acc:DescribeCloudProducts", "acc:DescribeRegions", "acc:DescribeZones", "acc:GetInstancePrice", "acc:RecommendZones" ], "Resource": "*" }, { "Effect": "Allow", "Action": "bssapi:GetPayAsYouGoPrice", "Resource": "*" }, { "Action": [ "ram:Get*", "ram:List*", "cs:GetUserPermissions", "cs:GetSubUsers", "cs:GrantPermission", "cs:CheckServiceRole" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ram:AttachPolicyToUser", "ram:AttachPolicyToRole" ], "Effect": "Allow", "Resource": [ "acs:ram:*:*:policy/xxxx", "acs:*:*:*:user/*" ] }, { "Action": [ "vpc:ListEnhanhcedNatGatewayAvailableZones", "vpc:DescribeEipAddresses" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" } -
Autorización de RBAC
En la consola de Container Compute Service, haga clic en Authorizations en el panel de navegación izquierdo. En la pestaña sub account o RAM Roles, busque la identidad de destino y haga clic en Modify Permissions.
-
En el cuadro de diálogo que aparece, haga clic en +Add Permissions. Establezca el permiso del clúster de destino y sus espacios de nombres en Administrator o en el rol personalizado cluster-admin y, a continuación, haga clic en Submit.
NotaUna cuenta de Alibaba Cloud y el creador del clúster están vinculados al rol cluster-admin de forma predeterminada. Por lo tanto, tienen acceso a todos los objetos de recursos de Kubernetes del clúster.
Una vez completada la autorización de RAM y RBAC para un destino, este podrá gestionar la autorización de RBAC de otros usuarios o roles de RAM dentro de un alcance de permisos específico. Para obtener más información, consulte Grant RAM permissions to a RAM user or RAM role.
Acciones de autorización
|
Nombre del permiso (Action) |
Descripción |
|
acc:CheckServiceRole |
Comprueba si la cuenta autorizó al producto a asumir un ServiceRole para acceder a los recursos de otros productos de la nube. |
|
acc:DescribeCommodityStatus |
Comprueba si ACS está activado para la cuenta. |
|
Nombre del permiso (Action) |
Descripción |
|
bssapi:GetPayAsYouGoPrice |
Consulta el servicio de precios para productos pay-as-you-go. |
|
ram:ListUserBasicInfos |
Consulta la información básica de todos los usuarios de RAM. |
|
ram:ListRoles |
Consulta la información básica de todos los roles de RAM. |
Para consultar la descripción de las acciones de autorización de ACK, consulte Authorization information.
Antes de escribir reglas de autorización, asegúrese de comprender las acciones de autorización de ACK y aplique el principio de privilegio mínimo. Para obtener más información, consulte Authorization information.
Si no especifica un ID de clúster de destino y, en su lugar, establece el alcance del recurso con un comodín (*), los permisos se otorgan a todos los clústeres de ACK. Esto puede resultar más amplio de lo previsto. Otorgue estos permisos con precaución.