Ao criar um projeto do Google Cloud, você é o único usuário no projeto. Por padrão, nenhum outro usuário tem acesso ao seu projeto ou recursos dele, incluindo os recursos do Google Kubernetes Engine (GKE). O GKE é compatível com várias opções para gerenciar o acesso a recursos no projeto e nos clusters dele usando o controle de acesso baseado em papéis (RBAC, na sigla em inglês).
- Identity and Access Management (IAM)
- Controle de acesso baseado em papéis (RBAC, na sigla em inglês) do Kubernetes
Esses mecanismos têm algumas funções semelhantes, mas são direcionados para diferentes tipos de recursos. Cada um é explicado em uma das seções abaixo. No entanto, estas são algumas características:
O RBAC do Kubernetes é incorporado ao Kubernetes e concede permissões granulares a objetos nos clusters do Kubernetes. As permissões existem como objetos ClusterRole ou Role no cluster. Os objetos RoleBinding concedem papéis a usuários do Kubernetes, usuários do Google Cloud, contas de serviço do IAM ou Grupos do Google.
Se você usa principalmente o GKE e precisa de permissões refinadas para cada objeto e operação no cluster, o RBAC do Kubernetes é a melhor escolha.
O IAM gerencia recursos do Google Cloud, incluindo clusters e tipos de objetos dentro deles. As permissões são atribuídas aos participantes do IAM.
Não há mecanismo para conceder permissões a objetos específicos do Kubernetes no IAM. Por exemplo, é possível conceder permissão a um usuário para criar CustomResourceDefinitions (CRDs). No entanto, isso não é possível para criar somente uma CustomResourceDefinition em particular ou limitar a produção a um namespace individual ou a um cluster especial no projeto. Se aplicado no nível da pasta, um papel do IAM concede privilégios a todos os clusters no projeto ou em todos os projetos filho.
Se você usa vários componentes do Google Cloud e não precisa gerenciar permissões granulares específicas do Kubernetes, o IAM é recomendável.
Kubernetes RBAC
O Kubernetes conta com suporte integrado para RBAC, o que permite criar papéis específicos que existem no cluster do Kubernetes. É possível definir o escopo de um papel para um objeto específico do Kubernetes ou um tipo de objeto do Kubernetes. Também é possível definir quais ações (chamadas de verbos) o papel concede em relação a esse objeto. Um RoleBinding também é um objeto do Kubernetes que concede papéis aos usuários. Em um usuário do GKE, pode ser qualquer um dos seguintes:
- Usuário do Google Cloud
- Conta de serviço do IAM
- Conta de serviço do Kubernetes
- Google Workspace User
- Grupos do Google do Google Workspace
- Usuários autenticados com certificados do cliente X509
Para saber mais, consulte Controle de acesso baseado em papel.
IAM
O IAM permite conceder papéis aos principais. Um papel é um conjunto de permissões e, quando atribuído a um principal, controla o acesso a um ou mais recursos do Google Cloud. Você pode usar os seguintes tipos de papéis:
- Papéis básicos fornecem permissões gerais limitadas a Proprietário, Editor e Leitor.
- Papéis predefinidos, como os do GKE, fornecem acesso mais restrito do que papéis básicos e abordam muitos casos de uso comuns.
- Papéis personalizados permitem que você crie combinações exclusivas de permissões.
Um principal pode ser qualquer um destes:
- Conta de usuário
- Conta de serviço
- Grupos do Google do Google Workspace
- Domínio do Google Workspace
- Domínio do Cloud Identity
Tipos de políticas do IAM
O IAM aceita os seguintes tipos de políticas:
- Permitir políticas: atribua papéis aos principais. Para detalhes, consulte a Política de permissão.
- Políticas de negação: impedem que os principais usem permissões específicas do IAM, independentemente dos papéis atribuídos a eles. Para mais detalhes, consulte as Políticas de negação.
Use as políticas de negação para impedir que principais específicos executem ações específicas no projeto, pasta ou organização, mesmo que uma política de permissão do IAM conceda a esses principais um papel que contenha as permissões relevantes.
Recomendações de IAM
Use os seguintes papéis predefinidos do IAM para facilitar cenários comuns:
- Leitor de cluster do Kubernetes Engine (
roles/container.clusterViewer
): DevOps, engenheiros e desenvolvedores de aplicativos que só precisam se conectar ao cluster. - Administrador de cluster do Kubernetes Engine (
roles/container.clusterAdmin
): administradores de plataforma e operadores de cluster que precisam gerenciar um ou mais clusters em um projeto do Google Cloud.
Para uma lista dos papéis predefinidos do IAM, consulte Papéis predefinidos do GKE.
Além disso, considere criar uma conta de serviço do IAM personalizada para seus nós usarem em vez da conta de serviço padrão do Compute Engine. Conceda à conta de serviço personalizada as permissões mínimas necessárias para o funcionamento do GKE. Para mais instruções, consulte Usar contas de serviço IAM de privilégio mínimo.
Interação do IAM com o Kubernetes RBAC
O IAM e o RBAC do Kubernetes trabalham juntos para ajudar a gerenciar o acesso ao cluster. O RBAC controla o acesso no nível do cluster e do namespace, enquanto o IAM funciona no nível do projeto. Uma entidade precisa ter permissões suficientes em qualquer nível para trabalhar com recursos no cluster.
A seguir
- Leia a visão geral de segurança do GKE.
- Aprenda a usar o RBAC do Kubernetes.
- Saiba como criar políticas de IAM para o GKE.
- Saiba como usar as Condições do IAM para balanceadores de carga.