No Serviço Gerenciado para Apache Kafka, você controla o acesso aos clusters e tópicos do Kafka usando uma combinação de permissões do Identity and Access Management (IAM) e listas de controle de acesso (ACLs) do Kafka:
Use o IAM para conceder permissões de acesso de gerenciamento e para que os clientes se conectem a um cluster ao usar a autenticação SASL.
Use as ACLs do Kafka para acesso a dados e operações de clientes do Apache Kafka de código aberto.
Nesta página, apresentamos uma visão geral dessas opções de controle de acesso.
Agente de serviço do Kafka gerenciado
O Serviço Gerenciado para Apache Kafka usa um agente de serviço para acessar os recursos do Google Cloud. Depois de ativar a API Managed Kafka, o agente de serviço do Managed Kafka é criado.
O agente de serviço do Kafka gerenciado é um principal com o identificador
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
em que PROJECT_NUMBER é o número do projeto do
Google Cloud .
Esse agente de serviço requer o papel do IAM de agente de serviço do Managed Kafka
(roles/managedkafka.serviceAgent) no projeto. Esse
papel é concedido automaticamente quando você ativa a API. Se você revogar esse papel,
o Serviço Gerenciado para Apache Kafka não poderá criar, atualizar ou excluir clusters.
Para algumas tarefas, o agente de serviço do Kafka gerenciado requer papéis adicionais. Por exemplo, se você usar o Kafka Connect, talvez seja necessário conceder ao agente de serviço permissão para acessar origens e coletores, como o Pub/Sub ou o BigQuery.
Controle de acesso para clientes
Em geral, há duas maneiras de realizar operações em recursos do Serviço Gerenciado para Apache Kafka:
A API Managed Kafka. Essa opção abrange chamar as APIs REST diretamente, além de usar a Google Cloud CLI, o console do Google Cloud ou as bibliotecas de cliente.
A API Apache Kafka de código aberto. Muitos clientes de código aberto do Kafka usam essa API.
Controle de acesso usando a API Managed Kafka
Ao usar a API Managed Kafka, a autorização é realizada pelo Identity and Access Management (IAM). Para realizar uma operação em um recurso, o principal precisa ter as permissões necessárias da API Managed Kafka para essa operação. A documentação de cada tarefa lista os papéis do IAM necessários para essa tarefa. Por exemplo, para permitir que um principal crie tópicos do Kafka, conceda a ele o papel de Editor de Managed Kafka Topic.
Controle de acesso usando a API Apache Kafka
Os clientes que usam a API Apache Kafka se autenticam usando a autenticação SASL ou TLS mútua (mTLS).
Se um cliente se conectar com SASL, o principal de autenticação precisará da permissão
managedkafka.clusters.connectdo IAM. Para conceder essa permissão, atribua o papel Cliente do Kafka gerenciado (roles/managedkafka.client) ao principal.Se um cliente se conectar com mTLS, a permissão
managedkafka.clusters.connectnão será necessária. Em vez disso, os clientes usam certificados do cliente para autenticação.
Depois que o cliente se conecta, o serviço usa ACLs do Kafka para autorizar as operações do cliente, como ler ou alterar recursos.
Controle de acesso combinado
Para uma segurança abrangente, configure o seguinte:
Permissões do IAM para acesso de gerenciamento.
Permissão do IAM para se conectar ao cluster, se os clientes usarem SASL.
ACLs do Kafka para acesso a dados no cluster e operações de clientes de código aberto do Apache Kafka, independentemente do método de autenticação.
Por exemplo, suponha que você queira impedir que um principal edite tópicos. Para isso, configure os seguintes controles de acesso:
Negue ao principal a permissão
managedkafka.topics.updatepara impedir que ele use a API Managed Kafka para atualizar tópicos (por exemplo, usando o console do Google Cloud ).Se quiser, negue ao principal a permissão
managedkafka.clusters.connectpara impedir que ele se conecte ao cluster com a autenticação SASL.Se o principal precisar de acesso SASL por outros motivos ou se ele se conectar usando mTLS, crie uma ACL do Kafka que negue as operações
ALTER,ALTER_CONFIGSeDELETEem tópicos. Para exemplos específicos, consulte Negar a modificação de todos os tópicos.
Controle de acesso no nível do recurso
Para restringir as permissões do IAM de um principal a recursos específicos do Serviço Gerenciado para Apache Kafka em um projeto, como clusters ou tópicos individuais, use as Condições do IAM.
O exemplo a seguir mostra uma condição do IAM que permite o acesso
somente se o tipo de recurso for managedkafka.googleapis.com/Topic e o
nome do recurso terminar em "test-topic":
{
"expression": "resource.name.endsWith(\"topic-1\") &&\nresource.type == \"managedkafka.googleapis.com/Topic\"",
"title": "topic-1",
"description": "Grant access only to topic-1"
}
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. Se você conceder acesso no nível do cluster,
inclua acesso para todos os recursos do tipo
managedkafka.googleapis.com/Operation, além da condição de recurso
por cluster. Essa permissão garante que o principal possa iniciar a operação e
monitorar o progresso dela.
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 as ACLs do Kafka para acesso a dados no cluster, consulte ACLs do Kafka.
Papéis e permissões do Serviço Gerenciado para Apache Kafka.