As listas de controle de acesso (ACLs) gerenciadas do Kafka oferecem autorização refinada para operações no cluster do Serviço gerenciado para Apache Kafka. A criação de um recurso de ACL do Kafka gerenciado define um conjunto de regras de permissão para um padrão de recurso específico do Kafka. Para conceitos básicos, consulte o artigo Controle de acesso com o IAM e ACLs do Kafka.
Antes de começar
Verifique se você tem um cluster do Serviço gerenciado para Apache Kafka.
Papéis e permissões necessárias
Para receber as permissões necessárias
para criar uma ACL do Kafka gerenciado,
peça ao administrador para conceder a você o
papel do IAM de Editor de ACLs do Kafka gerenciado (roles/managedkafka.aclEditor)
no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma ACL do Kafka gerenciado. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar uma ACL gerenciada do Kafka:
-
Conceda esta permissão no cluster pai:
managedkafka.acls.create
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
O papel Editor de ACL do Kafka gerenciado (roles/managedkafka.aclEditor)
concede permissões para criar, visualizar, atualizar e excluir recursos de ACL.
Para mais informações sobre a função, consulte Funções predefinidas do Serviço gerenciado para Apache Kafka.
Propriedades de uma ACL do Kafka gerenciado
Ao criar um recurso de ACL do Kafka gerenciado, você precisa definir as seguintes propriedades:
ID da ACL
É o identificador exclusivo do recurso de ACL do Kafka gerenciado no cluster e no local. A estrutura de ACL_ID também define o padrão de recurso (tipo de recurso, nome do recurso, tipo de padrão) a que as regras de ACL se aplicam.
Escolha um ACL_ID com base no padrão de recurso que você quer segmentar para a vinculação
de ACL:
Cluster:
cluster(aplicado ao recurso de cluster em si)Tópico específico:
topic/{topic_name}Grupo específico:
consumerGroup/{group_name}ID transacional específico:
transactionalId/{transactional_id}Todos os temas com um prefixo:
topicPrefixed/{prefix}Todos os grupos de consumidores com um prefixo:
consumerGroupPrefixed/{prefix}Todos os IDs de transação com um prefixo:
transactionalIdPrefixed/{prefix}Todos os tópicos:
allTopics(representatopic/*)Todos os grupos:
allConsumerGroups(representaconsumerGroup/*)Todos os IDs de transação:
allTransactionalIds(representatransactionalId/*)
Para mais informações, consulte as Diretrizes de nomeação de recursos do Serviço gerenciado para Apache Kafka.
Não é possível mudar o ID da ACL depois da criação. Ela é imutável.
Entradas de ACL
Esta é a lista de regras de permissão específicas que se aplicam ao padrão de recurso definido pelo ID da ACL.
É preciso fornecer pelo menos uma entrada de ACL ao criar o recurso. Não é permitido usar uma lista vazia.
O número máximo de entradas permitidas por recurso de ACL do Kafka gerenciado é 100. Se você precisar de mais regras para um único padrão de recurso, gerencie as ACLs diretamente usando as ferramentas padrão do Apache Kafka.
Cada entrada de ACL contém os seguintes campos:
Principal:o usuário ou a conta de serviço a que a regra se aplica. Especifique usando o formato
User:{google_service_account_email}ou o caractere curingaUser:*.Operação:o tipo de operação do Kafka, como
ALL,READ,WRITE,CREATE,DELETE,ALTER,DESCRIBE,CLUSTER_ACTION,DESCRIBE_CONFIGS,ALTER_CONFIGSouIDEMPOTENT_WRITE(sem distinção entre maiúsculas e minúsculas). Para combinações válidas de operação e tipo de recurso, consulte Operações e recursos em protocolos na documentação do Apache Kafka.Permission-type: um destes:
ALLOWouDENY(não diferenciam maiúsculas de minúsculas).O Host precisa ser definido como o caractere curinga
*para o Serviço gerenciado para Apache Kafka.
É possível fornecer essas entradas diretamente na linha de comando usando a flag --acl-entry ou fornecendo um arquivo JSON ou YAML com a flag --acl-entries-from-file.
Propriedades de padrão de recurso somente de saída
Ao criar uma ACL, o Serviço gerenciado para Apache Kafka preenche os seguintes campos de padrão de recurso com base no ID da ACL fornecido:
Tipo de recurso: o tipo de recurso da ACL derivado do nome. Uma das seguintes opções:
CLUSTER,TOPIC,GROUPouTRANSACTIONAL_ID.Nome do recurso: o nome do recurso da ACL (ou prefixo correspondente, para o tipo de padrão
PREFIXED) derivado do nome. Para o tipo de recursoCLUSTER, esse valor é sempre"kafka-cluster". Pode ser o literal curinga"*".Tipo de padrão de ACL: o tipo de padrão de ACL derivado do nome. Uma destas opções:
LITERALouPREFIXED.
Esses campos são somente saída e fornecidos para facilitar o mapeamento de recursos de ACL do Kafka gerenciado para vinculações de ACL do Kafka.
ETag
A ETag é usada para controle de simultaneidade. Uma ETag é retornada na resposta
às operações GetAcl
e CreateAcl. Os chamadores precisam colocar esse ETag
na solicitação para UpdateAcl
para garantir que as mudanças sejam aplicadas à
mesma versão das entradas de ACL que existe no cluster do Kafka.
Um caractere 'T' terminal na ETag indica que as entradas da ACL foram
truncadas. Há mais entradas para a ACL no cluster do Kafka, mas elas não podem ser
retornadas na ACL devido a limites de campos repetidos.
Criar uma ACL
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init Execute o comando
gcloud managed-kafka acls create:gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entries-from-file=PATH_TO_FILE | \ --acl-entry=principal=PRINCIPAL,operation=OPERATION, \ permission-type=PERMISSION-TYPE,host=HOST \
Substitua:
ACL_ID(obrigatório): o ID exclusivo do recurso de ACL do Kafka gerenciado. Isso define o padrão de recurso. Para mais informações sobre o ID da ACL, consulte ID da ACL.CLUSTER_ID(obrigatório): o ID do cluster em que o recurso de ACL é criado.LOCATION(obrigatório): a região em que o cluster está localizado, comous-central1. Consulte Locais compatíveis.- É necessário especificar uma das seguintes flags para fornecer as entradas de
ACL:
PATH_TO_FILE(obrigatório): caminho para um arquivo JSON ou YAML local que contém a lista de entradas de ACL no formato necessário.--acl-entry=principal=PRINCIPAL,operation=OPERATION, permission-type=PERMISSION-TYPE,host=HOST(obrigatório): especifica uma única entrada de ACL diretamente. Repita essa flag para cada entrada que você quer adicionar.
Usar --acl-entry
Execute o comando gcloud managed-kafka acls create para fornecer entradas de ACL
diretamente. É possível executar o comando várias vezes para especificar várias entradas de ACL para uma ACL.
gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entry=principal=PRINCIPAL,operation=OPERATION, \ permission-type=PERMISSION-TYPE,host=HOST\
Substitua:
ACL_ID(obrigatório): o ID do novo recurso de ACL, comotopic/my-topicoucluster.CLUSTER_ID(obrigatório): o ID do cluster.LOCATION(obrigatório): a região do cluster, comous-central1.--acl-entry(obrigatório): especifica uma entrada de ACL. Repita a flag para várias entradas.PRINCIPAL_1,PRINCIPAL_2: a principal da entrada de ACL, como'User:admin@example.iam.gserviceaccount.comou'User:*'.OPERATION_1,OPERATION_2: o tipo de operação, comoALLouREAD.PERMISSION_1,PERMISSION_2: o tipo de permissão, comoALLOWouDENY.HOST_1,HOST_2: o host da entrada de ACL. Para o Google Cloud Managed Service para Apache Kafka, esse campo precisa ser definido como o caractere curinga'*'.
Usar --acl-entries-from-file
Crie um arquivo local, como
acl_entries.yaml, com as entradas de ACL necessárias no formato YAML:--- aclEntries: - principal: User:admin@project.iam.gserviceaccount.com operation: READ permissionType: ALLOW host: "*" - principal: User:admin@project.iam.gserviceaccount.com operation: WRITE permissionType: ALLOW host: "*"Execute o comando
gcloud managed-kafka acls create, referenciando o arquivo:gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entries-from-file=acl_entries.yamlSubstitua:
ACL_ID(obrigatório): o ID do novo recurso de ACL, comotopic/my-topicoucluster.CLUSTER_ID(obrigatório): o ID do cluster.LOCATION(obrigatório): a região do cluster, comous-central1.acl_entries.yaml(obrigatório): o caminho para o arquivo local que contém a lista de entradas de ACL.