Visão geral de permissões
O gerenciamento de permissões do CCE permite que você atribua permissões a usuários e grupos de usuários do IAM em suas contas de locatário. O CCE combina as vantagens do Identity and Access Management (IAM) e da autorização do Controle de Acesso Baseado em Função (RBAC) do Kubernetes para fornecer uma variedade de métodos de autorização, incluindo autorização refinada do IAM, autorização de token do IAM, autorização com escopo de cluster e autorização em todo o namespace.
O CCE permite que você gerencie permissões em clusters e recursos relacionados com uma granularidade mais fina, por exemplo, para controlar o acesso de funcionários em diferentes departamentos aos recursos da nuvem.
Esta seção descreve o mecanismo de gerenciamento de permissões do CCE e conceitos relacionados. Se sua conta atendeu aos seus requisitos de serviço, você pode ignorar as configurações neste capítulo.
Gerenciamento de permissões do CCE
- Permissões em nível de cluster: o gerenciamento de permissões em nível de cluster evolui a partir do recurso de autorização de política do sistema do IAM. Os usuários do IAM no mesmo grupo de usuários têm as mesmas permissões. No IAM, você pode configurar políticas do sistema para descrever quais grupos de usuários do IAM podem executar quais operações em recursos de cluster. Por exemplo, você pode conceder ao grupo de usuários A para criar e excluir o cluster X, adicionar um nó ou instalar um complemento, enquanto concede ao grupo de usuários B para exibir informações sobre o cluster X.
As permissões em nível de cluster envolvem APIs não Kubernetes em clusters do CCE e oferecem suporte a políticas de IAM refinadas e gerenciamento de projetos empresariais.
- Permissões em nível de namespace: você pode regular o acesso de usuários ou grupos de usuários aos recursos do Kubernetes em um único namespace com base em suas funções do RBAC do Kubernetes. O CCE também foi aprimorada com base em recursos de código aberto. Ele suporta autorização do RBAC com base no usuário ou grupo de usuários do IAM e autenticação do RBAC no acesso a APIs usando tokens do IAM.
As permissões em nível de namespace envolvem as APIs do Kubernetes do CCE e são aprimoradas com base nos recursos do RBAC do Kubernetes. As permissões em nível de namespace podem ser concedidas a usuários ou grupos de usuários do IAM para autenticação e autorização, mas são independentes de políticas do IAM refinadas.
Geralmente, você configura permissões do CCE em duas encenações. O primeiro é criar e gerenciar clusters e recursos relacionados, como nós. O segundo é criar e usar recursos do Kubernetes no cluster, como cargas de trabalho e Serviços.
Essas permissões permitem que você gerencie usuários de recursos com uma granularidade mais fina.
Permissões de cluster (baseadas no IAM) e permissões de namespace (baseadas no Kubernetes RBAC)
Usuários com diferentes permissões de cluster (atribuídos usando o IAM) têm diferentes permissões de namespace (atribuídos usando o Kubernetes RBAC). Tabela 1 lista as permissões de namespace de diferentes usuários.
Usuário |
Clusters da v1.13 e posterior |
---|---|
Usuário com permissões de Tenant Administrator (por exemplo, uma conta) |
Todas as permissões de namespace |
Usuário do IAM com a função CCE Administrator |
Todas as permissões de namespace |
Usuário do IAM com a função CCE FullAccess ou CCE ReadOnlyAccess |
Requer autorização do Kubernetes RBAC. |
Usuário do IAM com a função Tenant Guest |
Requer autorização do Kubernetes RBAC. |
Permissões do kubectl
Você pode usar kubectl para acessar recursos do Kubernetes em um cluster.
Quando você acessa um cluster usando kubectl, o CCE usa o arquivo kubeconfig.json gerado no cluster para autenticação. Esse arquivo contém informações do usuário, com base no qual o CCE determina quais recursos do Kubernetes podem ser acessados pelo kubectl. As permissões registradas em um arquivo kubeconfig.json variam de usuário para usuário. As permissões que um usuário possui estão listadas em Tabela 1.
Usuários federados
O IAM fornece a função de provedor de identidade para implementar a autenticação de identidade federada com base em SAML (Security Assertion Markup Language) ou OpenID Connect. Essa função permite que os usuários em seu sistema de gerenciamento acessem a plataforma em nuvem por meio de logon único (SSO).
Os usuários que fazem logon por meio da autenticação de identidade federada são chamados de usuários federados. Os usuários federados são equivalentes aos usuários do IAM.
Preste atenção ao seguinte para que os usuários federados usem o CCE:
- Quando um usuário cria um cluster do CCE, a permissão cluster-admin é concedida ao usuário por padrão. O ID de usuário de um usuário federado é alterado a cada logon e logout. Portanto, o usuário é exibido como excluído na página Permissions do console do CCE. Não exclua manualmente a permissão, caso contrário, a autenticação falhará. Nesse caso, é aconselhável conceder a permissão cluster-admin a um grupo de usuários no CCE e adicionar usuários federados ao grupo de usuários.
- Os usuários federados não podem criar chaves de acesso permanentes (AKs/SKs). Em cenários em que as AKs/SKs são necessários (por exemplo, ao criar PVs/PVCs relacionados ao OBS), somente você ou um usuário do IAM podem criar as AKs/SK e compartilhá-los com os usuários federados. Uma chave de acesso contém as permissões concedidas a um usuário, portanto, é recomendável que o usuário federado solicite que um usuário do IAM no mesmo grupo crie uma chave de acesso.
Ações suportadas no IAM
O IAM fornece políticas definidas pelo sistema que podem ser usadas diretamente no IAM. Você também pode criar políticas personalizadas para complementar políticas definidas pelo sistema para um controle de acesso mais refinado. As operações suportadas pelas políticas são específicas das APIs. Seguem-se conceitos comuns relacionados com as políticas:
- Permissão: uma declaração em uma política que permite ou nega certas operações.
- APIs: as APIs REST que podem ser chamadas em uma política personalizada.
- Ações: adicionadas a uma política personalizada para controlar permissões para operações específicas.
- Ações dependentes: ações das quais uma ação específica depende para ter efeito. Ao atribuir permissões para a ação a um usuário, você também precisa atribuir permissões para as ações dependentes.
- Projeto do IAM/Projeto empresarial: uma ação em uma política personalizada pode ser aplicada a um ou a ambos esses projetos. As políticas que contêm ações que suportam projetos do IAM e da empresa podem ser atribuídas a grupos de usuários e entrar em vigor no IAM e no Enterprise Management. As políticas que contêm apenas ações que suportam projetos do IAM podem ser atribuídas a grupos de usuários e só entram em vigor para o IAM. Essas políticas não terão efeito se forem atribuídas a grupos de usuários no Enterprise Management. Para obter detalhes sobre as diferenças entre o IAM e os projetos empresariais, consulte Quais são as diferenças entre o IAM e o Enterprise Management?
A marca de seleção (√) e o símbolo da cruz (x), respectivamente, indicam que uma ação tem efeito ou não para o tipo de projeto correspondente.
O CCE suporta as seguintes ações que podem ser definidas nas políticas personalizadas:
Permissão |
APIs |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Listar clusters em um projeto especificado |
GET /api/v3/projects/{project_id}/clusters |
cce:cluster:list |
√ |
√ |
Obter informações sobre um cluster especificado |
GET /api/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:get |
√ |
√ |
Criar um cluster |
POST /api/v3/projects/{project_id}/clusters |
cce:cluster:create |
√ |
√ |
Atualizar informações sobre um cluster especificado |
PUT /api/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:update |
√ |
√ |
Excluir um cluster |
DELETE /api/v3/projects/{project_id}/clusters/{cluster_id} |
cce:cluster:delete |
√ |
√ |
Atualizar um cluster |
POST /api/v2/projects/:projectid/clusters/:clusterid/upgrade |
cce:cluster:upgrade |
√ |
√ |
Despertar um cluster |
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/awake |
cce:cluster:start |
√ |
√ |
Hibernar um cluster |
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/hibernate |
cce:cluster:stop |
√ |
√ |
Alterar as especificações de um cluster |
POST /api/v2/projects/{project_id}/clusters/:clusterid/resize |
cce:cluster:resize |
√ |
√ |
Obter um certificado de cluster |
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/clustercert |
cce:cluster:get |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Obter informações sobre todos os nós em um cluster |
GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes |
cce:node:list |
√ |
√ |
Obter informações sobre um nó especificado |
GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} |
cce:node:get |
√ |
√ |
Criar um nó |
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes |
cce:node:create |
√ |
√ |
Atualizar informações sobre um nó especificado |
PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} |
cce:node:update |
√ |
√ |
Excluir um nó |
DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} |
cce:node:delete |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Obter informações sobre uma tarefa |
GET /api/v3/projects/{project_id}/jobs/{job_id} |
cce:job:get |
√ |
√ |
Listar todas as tarefas |
GET /api/v2/projects/{project_id}/jobs |
cce:job:list |
√ |
√ |
Excluir uma ou todas as tarefas |
DELETE /api/v2/projects/{project_id}/jobs DELETE /api/v2/projects/{project_id}/jobs/{job_id} |
cce:job:delete |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Obter informações sobre todos os pools de nós em um cluster especificado |
GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools |
cce:nodepool:list |
√ |
√ |
Obter informações sobre um pool de nós |
GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:get |
√ |
√ |
Criar um pool de nós |
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools |
cce:nodepool:create |
√ |
√ |
Atualizar informações sobre um pool de nós |
PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:update |
√ |
√ |
Excluir um pool de nós |
DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} |
cce:nodepool:delete |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Atualizar um gráfico |
PUT /v2/charts/{id} |
cce:chart:update |
√ |
x |
Carregar um gráfico |
POST /v2/charts |
cce:chart:upload |
√ |
x |
Listar todos os gráficos |
GET /v2/charts |
cce:chart:list |
√ |
x |
Obter informações sobre gráfico |
GET /v2/charts/{id} |
cce:chart:get |
√ |
x |
Excluir um gráfico |
DELETE /v2/charts/{id} |
cce:chart:delete |
√ |
x |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Atualizar um release |
PUT /v2/releases/{name} |
cce:release:update |
√ |
√ |
Listar todos os releases |
GET /v2/releases |
cce:release:list |
√ |
√ |
Criar uma release |
POST /v2/releases |
cce:release:create |
√ |
√ |
Obter informações sobre um release |
GET /v2/releases/{name} |
cce:release:get |
√ |
√ |
Excluir uma release |
DELETE /v2/releases/{name} |
cce:release:delete |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Criar uma PersistentVolumeClaim |
POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims |
cce:storage:create |
√ |
√ |
Excluir uma PersistentVolumeClaim |
DELETE /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims/{name} |
cce:storage:delete |
√ |
√ |
Listar todos os volumes |
GET /storage/api/v1/namespaces/{namespace}/listvolumes |
cce:storage:list |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Criar uma instância de complemento |
POST /api/v3/addons |
cce:addonInstance:create |
√ |
√ |
Obter informações sobre uma instância de complemento |
GET /api/v3/addons/{id}?cluster_id={cluster_id} |
cce:addonInstance:get |
√ |
√ |
Listar todas as instâncias de complemento |
GET /api/v3/addons?cluster_id={cluster_id} |
cce:addonInstance:list |
√ |
√ |
Excluir uma instância de complemento |
DELETE /api/v3/addons/{id}?cluster_id={cluster_id} |
cce:addonInstance:delete |
√ |
√ |
Atualizar uma instância de complemento |
PUT /api/v3/addons/{id} |
cce:addonInstance:update |
√ |
√ |
Permissão |
API |
Ação |
Projeto do IAM |
Projeto empresarial |
---|---|---|---|---|
Consultar detalhes da cota |
GET /api/v3/projects/{project_id}/quotas |
cce:quota:get |
√ |
√ |