O sistema de autorização do Container Compute Service (ACS) inclui a autorização RAM para os recursos de computação subjacentes e a autorização Role-Based Access Control (RBAC) para clusters Container Service for Kubernetes (ACK) do tipo ACS. Cada função de usuário requer permissões diferentes em ambas as camadas. Este tópico descreve as melhores práticas de autorização para gerentes de recursos corporativos, administradores de clusters Kubernetes, engenheiros de O&M de clusters e aplicações, desenvolvedores de aplicações e administradores de permissões.
Sistema de autorização do ACS
Como as duas camadas funcionam em conjunto
Os clusters ACS são um tipo de cluster Serverless do Container Service for Kubernetes (ACK). Todo gerenciamento de cluster utiliza as APIs do ACK; portanto, as permissões no nível cloud (RAM) e no nível de cluster (RBAC) devem estar configuradas.
|
Camada |
Escopo |
Controla |
Concedida por meio de |
|
Autorização RAM |
Recursos cloud (plano de controle) |
Ciclo de vida do cluster, gerenciamento de RBAC, monitoramento, logs e eventos |
Políticas de sistema RAM ou políticas personalizadas |
|
Autorização RBAC |
Recursos Kubernetes (plano de dados) |
Workloads, redes, armazenamento, namespaces, ConfigMaps e Secrets |
ClusterRoles predefinidos ou personalizados no console do ACS |
Conclua a autorização RAM antes de conceder permissões RBAC.
O que a autorização RAM abrange
A autorização RAM concede permissões para operações de O&M de clusters:
Crie, visualize e exclua clusters
Gerencie a autorização RBAC
Monitore clusters e gerencie logs e eventos
O que a autorização RBAC abrange
A autorização RBAC concede permissões no nível de namespace ou em todo o cluster para recursos Kubernetes:
Recursos de workload: Deployment, StatefulSet, Job, CronJob, pod, ReplicaSet e HorizontalPodAutoscaler (HPA)
Recursos de rede: Service, Ingress e NetworkPolicy
Recursos de armazenamento: persistent volume (PV), persistent volume claim (PVC) e StorageClass
Outros recursos: Namespace, ConfigMap e Secret
Políticas de sistema padrão
O ACS oferece as seguintes políticas de sistema padrão. Anexe essas políticas a usuários RAM ou funções RAM para conceder permissões rapidamente.
As políticas de sistema padrão concedem permissões amplas, que podem incluir acesso de leitura ou gravação a todas as operações OpenAPI do ACK e do ACS. Conceda essas políticas com cautela.
Política de sistema padrão | Descrição |
AliyunAccFullAccess | Permissões para gerenciar o ACS. |
AliyunAccReadOnlyAccess | Permissões de somente leitura no ACS. |
AliyunCSFullAccess | Permissões para gerenciar o ACK. Importante Concede permissões de leitura e gravação em todos os clusters ACK, incluindo clusters do tipo ACS. Conceda essas permissões com cautela. |
AliyunCSReadOnlyAccess | Permissões de somente leitura no ACK. Importante Concede permissões de leitura em todos os clusters ACK, incluindo clusters do tipo ACS. Conceda essas permissões com cautela. |
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"
}
]
}
Melhores práticas de autorização
Quando um usuário RAM ou uma função RAM requer permissões para O&M de clusters e aplicações, é necessário conceder permissões RAM e RBAC. Conceda primeiro as permissões RAM e, em seguida, as permissões RBAC. As seções a seguir descrevem os procedimentos de autorização para três cenários comuns:
Se o usuário for um engenheiro de O&M de clusters e aplicações, consulte Scenario 1: O&M engineer for clusters and applications.
Se o usuário for um desenvolvedor de aplicações no cluster, consulte Scenario 2: Developer for in-cluster applications.
Se o usuário for um administrador de permissões de aplicações no cluster, consulte Scenario 3: Permission administrator for in-cluster applications.
Cenário 1: Engenheiro de O&M de clusters e aplicações
Este cenário destina-se a usuários que gerenciam e mantêm clusters ACS e as aplicações neles hospedadas. O processo de autorização envolve a concessão de permissões RAM e RBAC.
-
Autorização RAM
O ACK oferece duas políticas de sistema para RAM: AliyunCSFullAccess e AliyunCSReadOnlyAccess.
AliyunCSFullAccess concede permissões de leitura e gravação para todas as operações OpenAPI do ACK.
-
AliyunCSReadOnlyAccess concede permissões de somente leitura para todas as operações OpenAPI do ACK.
ImportanteEssas duas políticas de sistema concedem permissões em todos os clusters ACK, incluindo clusters do tipo ACS. Conceda essas permissões com cautela.
Acesse o console do RAM e anexe uma das políticas de sistema conforme necessário. Para mais informações, consulte Manage permissions for a RAM user e Manage permissions for a RAM role.
Para um controle de acesso mais granular, crie uma política personalizada. Para mais informações, consulte Grant RAM permissions to a RAM user or RAM role.
O código a seguir é um exemplo de política de autorização RAM para este cenário.
{ "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" }No exemplo acima, substitua
<yourclusterID>pelo ID real do cluster ACS. Para mais informações sobre a OpenAPI do ACK, consulte [[Product Change] Notice on ACK OpenAPI Authentication Optimization](t2103012.dita#task_2103012) e API overview.
-
Autorização RBAC
Após conceder as permissões RAM, conceda também ao usuário RAM ou à função RAM as permissões RBAC para o cluster. O ACK oferece quatro funções predefinidas no nível do cluster.
Função
Permissões RBAC no cluster
Administrator
Permissões de leitura e gravação em todos os recursos de todos os namespaces.
O&M Engineer
Permissões de leitura e gravação nos recursos Kubernetes visíveis no console em todos os namespaces, e permissões de somente leitura em nós do cluster, persistent volumes (PVs), namespaces e cotas.
Developer
Permissões de leitura e gravação nos recursos Kubernetes visíveis no console em todos os namespaces ou em namespaces selecionados.
Restricted User
Permissões de somente leitura nos recursos Kubernetes visíveis no console em todos os namespaces ou em namespaces selecionados.
No console do Container Compute Service, clique em Authorizations no painel de navegação à esquerda. Na aba sub account ou RAM Roles, localize a identidade desejada e clique em Modify Permissions.
Na caixa de diálogo exibida, clique em +Add Permissions. Defina a permissão para o cluster de destino e seus namespaces como O&M Engineer e clique em Submit.
Após atribuir a função predefinida, o ACS cria automaticamente uma instância de ClusterRoleBinding no cluster correspondente à identidade do usuário ou da função autorizada. O código a seguir apresenta as permissões RBAC da função predefinida O&M Engineer.
Para um controle mais granular das permissões RBAC, crie uma instância de ClusterRole personalizada consultando a documentação oficial do Kubernetes sobre RBAC. Em seguida, na página Authorizations do console do Container Compute Service, selecione Custom e escolha o nome do ClusterRole personalizado na lista suspensa. Para mais informações, consulte Create a custom RBAC authorization policy.
Cenário 2: Desenvolvedor de aplicações no cluster
Este cenário aplica-se a usuários que gerenciam apenas recursos Kubernetes dentro de um cluster ACS (usando autorização RBAC) e não precisam acessar outros recursos cloud.
Antes de conceder permissões RBAC, o usuário ou a função deve ter, no mínimo, permissões RAM de somente leitura para o cluster de destino. Definir Resource como * concede as permissões de Action especificadas em todos os clusters ACK. Não utilize curinga (*) para o recurso, a menos que você compreenda totalmente o escopo e o impacto dessa configuração.
-
Autorização RAM
Crie uma política personalizada no console do RAM e anexe-a ao usuário RAM ou à função RAM de destino. Para mais informações, consulte Grant RAM permissions to a RAM user or RAM role. A política personalizada é a seguinte:
{ "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" }No exemplo acima, substitua
<yourclusterID>pelo ID real do seu cluster ACS.NotaPara conceder a um usuário apenas permissões de somente leitura em um cluster ACS específico, utilize esta política de exemplo e especifique o ARN do cluster. Não atribua a política de sistema
AliyunCSReadOnlyAccess. Essa política concede permissões de somente leitura em todos os clusters ACK e é excessivamente permissiva para este caso de uso. -
Autorização RBAC
No console do Container Compute Service, clique em Authorizations no painel de navegação à esquerda. Na aba sub account ou RAM Roles, localize a identidade desejada e clique em Modify Permissions.
Na caixa de diálogo exibida, clique em +Add Permissions. Defina a permissão para o cluster de destino e seus namespaces como Developer e clique em Submit.
Após atribuir a função predefinida, o ACS cria automaticamente uma instância de ClusterRoleBinding no cluster correspondente à identidade do usuário ou da função autorizada. O código de exemplo a seguir apresenta as permissões RBAC da função predefinida Developer.
Cenário 3: Administrador de permissões de aplicações no cluster
Neste cenário, o usuário ou a função autorizante precisa gerenciar as permissões RBAC de outros usuários RAM ou funções RAM. Por padrão, um usuário RAM ou uma função RAM não tem permissão para conceder permissões RBAC a outros usuários RAM ou funções RAM. Ao acessar a página de gerenciamento de autorização no console do Container Service, se a interface exibir a mensagem The current RAM user does not have authorization management permissions. Please contact the Alibaba Cloud account or a permission administrator for authorization., isso indica que o usuário ou a função autorizante não possui a autorização RAM necessária ou a autorização de administrador RBAC para o cluster.
-
Autorização RAM
Verifique se o usuário ou a função possui as permissões RAM necessárias. A política deve incluir permissões para:
Listar outros usuários RAM ou funções RAM.
Conceder políticas RAM a usuários RAM ou funções RAM específicos.
Visualizar as configurações de permissão RBAC do Kubernetes de usuários RAM ou funções RAM específicos.
Executar a autorização RBAC do Kubernetes.
No console do RAM, conceda as permissões RAM correspondentes ao usuário RAM ou à função RAM especificada. Para mais informações, consulte Grant RAM permissions to a RAM user or RAM role. O código de exemplo a seguir apresenta uma política 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" } -
Autorização RBAC
No console do Container Compute Service, clique em Authorizations no painel de navegação à esquerda. Na aba sub account ou RAM Roles, localize a identidade desejada e clique em Modify Permissions.
-
Na caixa de diálogo exibida, clique em +Add Permissions. Defina a permissão para o cluster de destino e seus namespaces como Administrator ou a função personalizada cluster-admin e clique em Submit.
NotaUma conta Alibaba Cloud e o criador do cluster são vinculados à função cluster-admin por padrão e têm acesso a todos os objetos de recursos Kubernetes no cluster.
Após concluir a autorização RAM e RBAC para um destinatário, ele poderá gerenciar a autorização RBAC de outros usuários RAM ou funções RAM dentro de um escopo de permissões definido. Para mais informações, consulte Grant RAM permissions to a RAM user or RAM role.
Ações de autorização
|
Nome da permissão (Action) |
Descrição |
|
acc:CheckServiceRole |
Verifica se a conta autorizou o product a assumir uma ServiceRole para acessar os recursos de outros produtos cloud. |
|
acc:DescribeCommodityStatus |
Verifica se o ACS está ativado para a conta. |
|
Nome da permissão (Action) |
Descrição |
|
bssapi:GetPayAsYouGoPrice |
Consulta o service de precificação para produtos com pagamento conforme o uso. |
|
ram:ListUserBasicInfos |
Consulta as informações básicas de todos os usuários RAM. |
|
ram:ListRoles |
Consulta as informações básicas de todas as funções RAM. |
Para uma descrição das Actions de autorização do ACK, consulte Authorization information.
Antes de criar regras de autorização, familiarize-se com as Actions de autorização do ACK e aplique o princípio do menor privilégio. Para mais informações, consulte Authorization information.
Se você não especificar um ID de cluster de destino e definir o escopo do recurso como curinga (*), as permissões serão concedidas a todos os clusters ACK, o que pode ser mais amplo do que o pretendido. Conceda essas permissões com cautela.