A operação de recursos Kubernetes em um cluster ACK baseia-se em um modelo de autorização dupla: Resource Access Management (RAM) e Kubernetes Role-Based Access Control (RBAC). A conta Alibaba Cloud possui ambas as permissões por padrão. Usuários RAM e funções RAM precisam receber essas permissões explicitamente para acessar os recursos do cluster.
Como funciona
O sistema de autorização do ACK é composto por duas camadas: o RAM da Alibaba Cloud e o RBAC do Kubernetes. Juntas, elas formam uma cadeia completa de autorização que abrange desde os recursos na nuvem até os recursos internos do cluster.
RAM: Define quem pode acessar o cluster. Atua no nível de recursos da nuvem e controla as permissões de uma entidade de segurança para operações de API em clusters ACK e seus serviços dependentes.
RBAC: Define o que uma entidade de segurança pode fazer dentro do cluster. Oferece autorização granular ao especificar quais operações (como criar ou excluir) uma entidade pode executar em recursos Kubernetes específicos (como Pods e Deployments).
Mecanismo RBAC do Kubernetes
Uma
ClusterRoledefine um conjunto de permissões aplicáveis a todo o cluster. UmaClusterRoleBindingassocia essa função a uma entidade de segurança, tornando as permissões válidas em todo o cluster.Uma
Roledefine um conjunto de permissões restritas a um único namespace. UmaRoleBindingvincula essa função a uma entidade de segurança, limitando sua validade apenas àquele namespace.
Cenário 1: Autorizar com uma conta Alibaba Cloud
Faça login no ACK console. No painel de navegação à esquerda, clique em Authorizations.
-
Na página Authorizations, configure as permissões.
Para conceder permissões a um usuário RAM: Clique na aba RAM Users, localize o usuário RAM desejado e clique em Modify Permissions na coluna Actions para acessar a página Permissions.
Para conceder permissões a uma função RAM: Clique na aba RAM Role, localize a função RAM desejada e clique em Modify Permissions para acessar a página Permission Management.
Clique em + Add Permissions. Siga as instruções na tela para adicionar uma permissão ao usuário RAM ou à função RAM no nível do cluster ou do namespace e selecione uma função predefinida. Escolha a função de acordo com as responsabilidades do usuário. Para detalhes sobre as permissões de cada função predefinida, consulte Apêndice: Funções predefinidas.
Cenário 2: Autorizar com um usuário ou função RAM
Por padrão, um usuário RAM ou uma função RAM não pode conceder permissões RBAC a outras entidades de segurança. Para simplificar o gerenciamento, designe um usuário RAM ou uma função RAM como administrador de permissões. Esse administrador poderá então conceder permissões RBAC a outras entidades.
Etapa 1: Definir um usuário ou função RAM como administrador
1. Conceder permissões RAM para autorização
Método 1: Usar políticas do sistema
As políticas do sistema AliyunRAMReadOnlyAccess e AliyunCSFullAccess concedem permissões amplas. Para um controle mais granular, consulte Método 2: Conceder permissões granulares usando uma política personalizada.
-
Faça login no RAM console com sua conta Alibaba Cloud e localize o usuário RAM ou a função RAM desejada.
Para um usuário RAM: Escolha . Na lista de usuários, localize o usuário desejado e clique em Add Permissions na coluna Actions.
Para uma função RAM: Escolha . Na lista de funções, localize a função desejada e clique em Add Permissions na coluna Actions.
Defina o Resource Scope como Account. Na seção Policies, localize e selecione as políticas do sistema AliyunRAMReadOnlyAccess e AliyunCSFullAccess. Siga as instruções para concluir a autorização.
Método 2: Usar uma política personalizada
Um administrador de permissões necessita das seguintes permissões:
Visualize informações sobre outras entidades de segurança RAM.
Visualize listas e detalhes de clusters.
Visualize configurações RBAC existentes de um cluster.
Executar operações de autorização RBAC em um cluster.
Faça login no RAM console e conceda as permissões RAM necessárias ao usuário RAM ou à função RAM desejada utilizando o exemplo de política abaixo. Para mais detalhes, consulte Conceder permissões usando uma política personalizada.
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
}
],
"Version": "1"
}
2. Conceder a função RBAC Administrator
Faça login no ACK console com sua conta Alibaba Cloud e conceda a função predefinida Administrator ao usuário RAM ou à função RAM desejada no nível do cluster.
Faça login no ACK console. No painel de navegação à esquerda, clique em Authorizations.
-
Na página Authorizations, configure as permissões.
Para conceder permissões a um usuário RAM: Clique na aba RAM Users, localize o usuário RAM desejado e clique em Modify Permissions na coluna Actions para acessar a página Permissions.
Para conceder permissões a uma função RAM: Clique na aba RAM Role, localize a função RAM desejada e clique em Modify Permissions para acessar a página Permission Management.
-
Clique em + Add Permissions, siga as instruções para adicionar uma permissão no nível do cluster ou do namespace e selecione Administrator como a função predefinida.
Conceder permissões com o escopo All Clusters estende automaticamente o acesso do administrador de permissões a quaisquer novos clusters, eliminando a necessidade de autorizações repetidas.
Etapa 2: Conceder permissões RBAC a outros usuários
Após receber a autorização, o administrador de permissões pode conceder permissões RBAC a outros usuários RAM ou funções RAM na página Authorizations seguindo o procedimento descrito no Cenário 1. Após a autorização, os usuários RAM ou funções RAM poderão operar recursos Kubernetes dentro de seu escopo de permissões.
Melhores práticas para ambientes de produção
Para aumentar a segurança e a manutenibilidade do gerenciamento de permissões, siga estas melhores práticas.
-
Siga o princípio do menor privilégio
Conceda às entidades de segurança, como usuários e funções RAM, apenas o conjunto mínimo de permissões necessário para realizar suas tarefas. Evite conceder indiscriminadamente funções de alto privilégio, como Administrator.
-
Implemente autorização granular
Utilize autorização em camadas: Diferencie as responsabilidades entre o RAM para acesso a recursos da nuvem e o RBAC para acesso a recursos internos do cluster.
Restrinja o escopo: Sempre que possível, use uma
RoleBindingpara limitar as permissões a um namespace específico em vez de usar umaClusterRoleBindingabrangente.Escolha funções com precisão: Utilize as funções predefinidas fornecidas pelo ACK. Caso precise criar funções personalizadas, defina as regras de permissão com exatidão e evite o uso de curingas (
*).
-
Pratique governança contínua
O gerenciamento de permissões é um processo dinâmico. Estabeleça um mecanismo de auditoria regular para revogar prontamente permissões redundantes ou excessivas. Registre e monitore as operações de funções com altos privilégios, como administradores de permissões.
Apêndice: Funções predefinidas
Para simplificar o gerenciamento de permissões e atender a casos de uso comuns, o ACK oferece diversas funções predefinidas padronizadas baseadas no mecanismo RBAC.
|
Função predefinida |
Permissões RBAC no cluster |
|
Administrator |
Acesso total de leitura/gravação a todos os recursos Kubernetes em todos os namespaces, incluindo nós do cluster, PVs, namespaces e cotas de recursos. |
|
Read-only Administrator |
Acesso somente leitura a todos os recursos Kubernetes em todos os namespaces, incluindo nós do cluster, PVs, namespaces e cotas de recursos. |
|
OM Engineer |
Acesso de leitura/gravação aos recursos expostos no console em todos os namespaces. Inclui acesso de leitura/atualização a nós do cluster, PVs e namespaces, além de acesso somente leitura a todos os outros recursos. |
|
Developer |
Acesso de leitura/gravação aos recursos expostos no console em todos os namespaces ou em namespaces específicos do cluster. |
|
Restricted User |
Acesso somente leitura aos recursos expostos no console em todos os namespaces ou em namespaces específicos do cluster. |
|
Custom |
As permissões dependem da ClusterRole especificada. Para evitar que identidades obtenham acesso não intencional, verifique as permissões da ClusterRole antes de atribuí-la. Consulte Restringir operações de recursos com RBAC personalizado. Importante
Qualquer usuário RAM ou função RAM com a permissão |
FAQ
Tratamento de erros de permissão
Se uma operação realizada pelo console ou por uma API não possuir as permissões RBAC necessárias, o sistema retornará um erro de permissão. Consulte a tabela a seguir para obter soluções:
|
Código ou mensagem de erro |
Descrição |
Solução |
|
|
Sem autorização para visualizar logs do plano de controle. |
Conceda ao usuário a função Administrator ou O&M Engineer. |
|
|
Sem autorização para executar operações do Helm. |
Conceda ao usuário a função Administrator. |
|
|
Sem autorização para realizar rotação de certificados. |
Conceda ao usuário a função Administrator. |
|
|
Sem autorização para adicionar um nó. |
Conceda ao usuário a função Administrator ou O&M Engineer. |
|
|
Sem autorização para modificar o status de criptografia em repouso do cluster. |
Conceda ao usuário a função Administrator ou O&M Engineer. |
|
|
Sem autorização para recuperar informações de gatilho de aplicação. |
Conceda ao usuário a função Administrator, O&M Engineer ou Developer. |
|
|
Sem autorização para consultar namespaces do cluster. |
Conceda ao usuário a função Administrator, O&M Engineer, Developer ou Restricted User. |
Criação de permissões personalizadas
Crie uma Role ou ClusterRole personalizada escrevendo um manifesto YAML. Por exemplo, crie uma ClusterRole que permita apenas visualizar Pods e selecione essa função personalizada ao conceder permissões. Para mais detalhes, consulte Usar RBAC personalizado para restringir operações em recursos do cluster.
As políticas RBAC do Kubernetes são aditivas e suportam apenas regras Allow. Não existe uma regra Deny explícita.
Tópicos relacionados
Se as funções predefinidas não atenderem às suas necessidades e você precisar de permissões RBAC personalizadas para acessar recursos internos do cluster, consulte Usar RBAC personalizado para restringir operações em recursos do cluster.
-
Para fluxos de trabalho completos de autorização (incluindo autorização RAM e RBAC) para diferentes funções operacionais, consulte os seguintes tópicos:
Para informações sobre as funções de serviço usadas pelo ACK, consulte Funções de serviço do ACK.
Se encontrar problemas durante a autorização, consulte FAQ sobre gerenciamento de autorização.