Adicionar uma entrada de ACL a uma ACL do Kafka gerenciado

É possível adicionar uma única regra de permissão, chamada de entrada de ACL, a um recurso de ACL do Kafka gerenciado sem substituir toda a lista de entradas. Isso é útil para conceder permissões específicas de forma incremental.

Essa operação é análoga à criação de uma única vinculação de ACL do Apache Kafka. Ele não exige que o recurso ACL já exista nem um eTag para controle de simultaneidade.

Papéis e permissões necessárias

Para receber as permissões necessárias para adicionar uma entrada de ACL, 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 adicionar uma entrada de ACL. 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 adicionar uma entrada de ACL:

  • Conceda esta permissão no cluster pai: managedkafka.acls.updateEntries

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) contém a permissão necessária para adicionar ou remover entradas de ACL individuais. Para mais detalhes, consulte Funções predefinidas do serviço gerenciado do Google Cloud para Apache Kafka.

Adicionar uma entrada de 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 add-acl-entry:

    gcloud managed-kafka acls add-acl-entry ACL_ID \
      --cluster=CLUSTER_ID \
      --location=LOCATION \
      --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 em que você quer adicionar uma entrada de ACL. Isso identifica o padrão de recurso a que a nova entrada se aplica. Para mais informações sobre o ID da ACL, consulte ID da ACL.
    • CLUSTER_ID (obrigatório): o ID do cluster que contém o recurso de ACL.
    • LOCATION (obrigatório): a região em que o cluster está localizado. Consulte Locais compatíveis.
    • PRINCIPAL (obrigatório): o principal (usuário ou conta de serviço) a que a entrada da ACL se aplica. Use o formato User:{google_service_account_email} ou o caractere curinga User:*.
    • OPERATION (obrigatório): o tipo de operação que a entrada da ACL concede ou nega. Os valores permitidos incluem ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS e IDEMPOTENT_WRITE.
    • PERMISSION_TYPE (opcional, valor padrão ALLOW): o tipo de acesso configurado: ALLOW ou DENY.
    • HOST (opcional, valor padrão *): o host do cliente. Para o serviço gerenciado do Google Cloud para Apache Kafka, esse campo precisa ser definido como o caractere curinga '*'.

Comando de amostra

Execute o comando a seguir para permitir que uma conta de serviço específica leia um tópico chamado test-topic no cluster test-cluster na região us-central1.

gcloud managed-kafka acls add-acl-entry topic/test-topic \
  --cluster=test-cluster \
  --location=us-central1 \
  --host='*' \
  --operation=READ \
  --permission-type=ALLOW \
  --principal='User:service-account@test-project.iam.gserviceaccount.com' \

Confira um exemplo de saída:

acl:
  aclEntries:
  - host: '*'
    operation: READ
    permissionType: ALLOW
    principal: 'User:service-account@test-project.iam.gserviceaccount.com'
  etag: W/another-new-etag
  name: projects/test-project/locations/us-central1/clusters/test-cluster/acls/topic/test-topic
  patternType: LITERAL
  resourceName: test-topic
  resourceType: TOPIC
aclCreated: false

A saída do comando add-acl-entry fornece informações sobre o estado da ACL resultante:

  • acl: esta seção descreve o recurso de ACL atualizado depois que a nova entrada foi adicionada.
    • aclEntries: é uma lista que contém todas as entradas de controle de acesso para essa ACL. Neste exemplo, ele agora incluiria a entrada recém-adicionada. Cada entrada tem os seguintes campos:
      • host: o host da entrada de ACL.
      • operation: a operação do Kafka a que esta entrada se aplica.
      • permissionType: se o acesso é ALLOW ou DENY.
      • principal: o usuário ou a conta de serviço a que esta entrada se refere.
    • etag: a tag de entidade da ACL atualizada. Ele é usado para controle de simultaneidade otimista durante atualizações subsequentes. O valor muda depois que uma entrada é adicionada.
    • name: o identificador exclusivo do recurso de ACL. Ele segue o formato projects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}.
    • patternType: o tipo de padrão de recurso para esta ACL.
    • resourceName: o nome do recurso do Kafka a que esta ACL se aplica.
    • resourceType: o tipo de recurso do Kafka.
  • aclCreated: um valor booleano que indica se o recurso ACL foi criado como resultado da adição desta entrada.

A seguir

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