Este documento descreve como usar o Google Cloud Identity and Access Management (IAM) para controle de acesso no serviço gerenciado do Google Cloud para Apache Kafka.
O IAM controla o acesso no nível do recurso Google Cloud :
Os controles do IAM determinam quem pode gerenciar seus recursos do Serviço Gerenciado para Apache Kafka, como clusters, tópicos ou ACLs, usando APIs e ferramentas Google Cloud . Exemplos dessas ferramentas são o console do Google Cloud , a CLI gcloud ou as bibliotecas de cliente.
Esses controles também determinam quem tem permissão para se conectar inicialmente ao cluster do Serviço gerenciado para Apache Kafka ao usar clientes padrão do Apache Kafka.
Para mais informações sobre o IAM, consulte a documentação do IAM.
Visão geral do IAM
O IAM permite conceder acesso granular a recursos específicos do Google Cloud e impede o acesso indesejado a outros recursos. Com o IAM, é possível adotar o princípio de segurança de privilégio mínimo, em que você concede apenas o acesso necessário aos recursos.
O IAM permite controlar quem (principais) tem qual acesso (papéis) a quais recursos.
Principal
Um principal pode ser uma Conta do Google (para usuários finais), uma conta de serviço (para apps e máquinas virtuais), um Grupo do Google ou um domínio do Google Workspace ou do Cloud Identity que pode acessar um recurso.
Para mais informações, consulte Visão geral do IAM: principais.
Um principal especial: o agente de serviço do Kafka gerenciado
O Google Cloud Managed Service para Apache Kafka usa uma Google Cloud conta de serviço gerenciada conhecida como um
agente de serviço para acessar seus recursos. Se você ativou a API, o
agente de serviço já foi criado. O agente de serviço é identificável pelo e-mail:
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com.
O agente de serviço do Serviço gerenciado para Apache Kafka exige a função Agente de serviço do Kafka gerenciado (roles/managedkafka.serviceAgent) no projeto para gerenciar recursos do Serviço gerenciado para Apache Kafka.
Esse papel é concedido automaticamente quando você
ativa a API. Se você revogar essa função, o Serviço gerenciado para Apache Kafka não poderá criar, atualizar ou excluir clusters.
Recurso
Exemplos de recursos a que você pode conceder acesso no Managed Service para Apache Kafka: projetos, clusters, tópicos e grupos de consumidores.
Alguns métodos de API exigem permissões para vários recursos. Por exemplo, a
tarefa "Criar cluster do Connect" exige a permissão managedkafka.connectClusters.create
no local principal do recurso de cluster do Connect e a permissão managedkafka.clusters.attachConnectCluster no recurso de cluster.
Papel
Um papel é um conjunto de permissões. As permissões determinam quais operações são permitidas em um recurso. Ao conceder um papel a um principal, você concede todas as permissões contidas nele.
É possível conceder um ou mais papéis a um principal.
Assim como outros produtos do Google Cloud , o Serviço gerenciado para Apache Kafka oferece suporte a três tipos de papéis:
Papéis básicos:papéis altamente permissivos que existiam antes da introdução do IAM. Para mais informações sobre papéis básicos, consulte Papéis básicos.
Papéis predefinidos:dão acesso granular a recursos específicos do Google Cloud. Para mais informações sobre papéis predefinidos, consulte Papéis predefinidos. As funções predefinidas do Serviço gerenciado para Apache Kafka estão incluídas em uma parte posterior desta seção.
Papéis personalizados:ajudam a aplicar o princípio de privilégio mínimo. Para mais informações sobre papéis personalizados, consulte Papéis personalizados.
Por exemplo, a função predefinida Leitor do Kafka gerenciado (roles/managedkafka.viewer) oferece acesso somente leitura aos recursos do Serviço gerenciado para Apache Kafka. Um principal com essa função pode visualizar clusters, tópicos e grupos de consumidores, mas não pode criar, atualizar ou excluir.
Para mais informações sobre como atribuir papéis, consulte a documentação sobre Como conceder, alterar e revogar acesso.
Para determinar quais permissões são necessárias para uma tarefa específica, consulte a página de referência Papéis e permissões do Serviço gerenciado para Apache Kafka.
Como funciona o controle de acesso
A autorização de acesso ao Serviço gerenciado para Apache Kafka usando APIs Google Cloud é processada pelo IAM. A autorização para acesso de clientes do Apache Kafka de código aberto que usam a autenticação SASL é verificada pelo IAM.
Quando um cliente se conecta usando SASL, o IAM primeiro verifica se o principal tem a permissão
managedkafka.clusters.connect. Se essa verificação falhar, a conexão será negada.Quando um cliente se conecta usando mTLS, essa verificação inicial de permissão do IAM é ignorada, e a autorização é processada exclusivamente pelas ACLs do Kafka.
Para ter segurança abrangente, configure o seguinte:
Permissões do IAM para acesso de gerenciamento.
Permissões do IAM para acesso à conexão ao usar SASL.
ACLs do Kafka para acesso a dados e operações no cluster de clientes Apache Kafka de código aberto, independente do método de autenticação.
Por exemplo, suponha que você queira impedir que um principal edite tópicos. É possível fazer isso de duas maneiras:
Totalmente pelo IAM. Negue ao principal os papéis de Editor de tópicos do Kafka gerenciado (
roles/managedkafka.topicEditor) e Cliente do Kafka gerenciado (roles/managedkafka.client). Essa configuração restringe completamente a edição de tópicos pelas APIs Google Cloud e impede qualquer acesso à API Kafka usando SASL. Essa configuração não impede conexões que usam mTLS.Como usar ACLs do Kafka com o IAM. Esse método é necessário se o principal usa mTLS ou precisa de acesso SASL para outras operações. Restrinja as seguintes operações usando ACLs do Kafka:
Criar (para criação de tópicos) no nível do cluster.
Alter, AlterConfigs, Delete (para modificação e exclusão de temas) no nível do tema.
Você pode escolher o método adequado com base na necessidade de acesso às APIs do Kafka e no método de autenticação usado.
Definir o controle de acesso no nível do projeto
Para definir controles de acesso no nível do projeto, consulte Gerenciar o acesso a projetos, pastas e organizações.
Definir o controle de acesso no nível do recurso
Algumas solicitações do Serviço gerenciado para Apache Kafka, como criação ou atualizações de cluster, são
operações de longa duração. Para permitir que um principal realize essas ações, conceda
acesso aos recursos managedkafka.googleapis.com/Operation, além do
recurso de cluster específico.
Essa configuração garante que o principal possa iniciar a operação e monitorar o progresso dela.
Confira a seguir um exemplo de condição do IAM definida em um tópico
chamado "test-topic":
{'expression': 'resource.name.endsWith('test-topic') 'title': 'SampleIAMCondition'}`.
Este exemplo mostra uma condição do IAM que verifica se um nome de recurso
termina com test-topic. Em caso afirmativo, a condição é true. Essa condição específica é chamada de SampleIAMCondition e pode ser usada em uma política do IAM para restringir o acesso apenas a esse tópico específico.
Algumas solicitações do Serviço gerenciado para Apache Kafka, como criação ou atualizações de cluster,
retornam operações de longa duração. Para conceder acesso no nível do cluster, inclua acesso a todos os recursos do tipo managedkafka.googleapis.com/Operation, além da condição de recurso por cluster. Esse processo garante que o
principal possa iniciar a operação e monitorar o progresso dela.
Controle de acesso entre projetos
Para autorizar um cliente em um projeto diferente a acessar um cluster, conceda o papel de Cliente gerenciado do Kafka (roles/managedkafka.client) à conta de serviço do cliente no projeto do cluster.
Por exemplo, se você quiser permitir que uma VM do Compute Engine em project-B acesse um cluster em project-A, conceda o papel Cliente gerenciado do Kafka (roles/managedkafka.client) à conta de serviço da VM do Compute Engine em project-B.project-A
A seguir
Para saber mais sobre os conceitos fundamentais do IAM, consulte Visão geral do IAM.
Para saber mais sobre os diferentes componentes de uma política do IAM, consulte Política do IAM.
Para saber como usar ACLs do Kafka para acesso a dados no cluster, consulte ACLs do Kafka.
Para conferir a lista completa de papéis e permissões do serviço gerenciado para Apache Kafka, acesse Papéis e permissões do serviço gerenciado para Apache Kafka.