Criar uma ACL do Kafka gerenciado

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 (representa topic/*)

  • Todos os grupos:allConsumerGroups (representa consumerGroup/*)

  • Todos os IDs de transação:allTransactionalIds (representa transactionalId/*)

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 curinga User:*.

    • Operação:o tipo de operação do Kafka, como ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS ou IDEMPOTENT_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: ALLOW ou DENY (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, GROUP ou TRANSACTIONAL_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 recurso CLUSTER, 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: LITERAL ou PREFIXED.

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

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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, como us-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, como topic/my-topic ou cluster.

  • CLUSTER_ID (obrigatório): o ID do cluster.

  • LOCATION (obrigatório): a região do cluster, como us-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, como ALL ou READ.

    • PERMISSION_1, PERMISSION_2: o tipo de permissão, como ALLOW ou DENY.

    • 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

  1. 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: "*"
    
  2. 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.yaml
    

    Substitua:

    • ACL_ID (obrigatório): o ID do novo recurso de ACL, como topic/my-topic ou cluster.

    • CLUSTER_ID (obrigatório): o ID do cluster.

    • LOCATION (obrigatório): a região do cluster, como us-central1.

    • acl_entries.yaml (obrigatório): o caminho para o arquivo local que contém a lista de entradas de ACL.

A seguir

Apache Kafka® é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.