Guia de controle de acesso

Esta página descreve como o Cloud Logging usa o gerenciamento de identidade e acesso (IAM) para controlar o acesso aos dados de geração de registros nos recursos do Google Cloud.

Visão geral

As permissões e papéis do IAM determinam como usar a API Logging, o Explorador de registros e a ferramenta de linha de comando gcloud.

Os registros residem em intervalos de registro em projetos, organizações, pastas e contas de faturamento do Google Cloud. Cada um desses recursos do Google Cloud pode ter o próprio conjunto de membros, com conjuntos próprios de papéis e permissões do Cloud Logging.

Para usar o Logging com os dados de registro em um projeto do Google Cloud, é necessário ser membro e ter um papel do IAM que conceda permissão para usar o Logging. Os papéis do IAM a seguir se aplicam ao Logging:

  • roles/logging.viewer (Visualizador de registros) fornece acesso somente leitura a todos os recursos do Logging, exceto os registros de transparência no acesso e de auditoria de acesso a dados.

  • roles/logging.privateLogViewer (Visualizador de registros particulares) inclui roles/log.viewer, além da capacidade de ler registros de transparência no acesso e de auditoria de acesso a dados. Esse papel se aplica apenas aos buckets _Required e _Default.

  • roles/logging.logWriter (Gravador de registros) pode ser concedido a contas de serviço para dar aos aplicativos apenas as permissões necessárias para gravar registros. Este papel não concede permissões para visualização.

  • roles/logging.bucketWriter (Gravador de buckets de registros) pode ser concedido a contas de serviço para dar ao Cloud Logging apenas as permissões necessárias para gravar registros em um bucket de registros. Para restringir esse papel a um bucket específico, use uma condição do IAM. Consulte o artigo sobre como rotear registros de um projeto para outro bucket em um projeto diferente para ver um exemplo.

  • roles/logging.configWriter (Gravador de configuração de registros) concede permissões para criar métricas com base em registros, exclusões, buckets e visualizações, além de exportar coletores. Para usar o Explorador de registros (console) para essas ações, adicione roles/logging.viewer.

  • roles/logging.admin (Administrador do Logging) concede a você todas as permissões relacionadas ao Logging.

  • roles/logging.viewAccessor (Acessador de visualização de registros) fornece permissão para ler registros em uma visualização. Para restringir esse papel a uma visualização em um bucket específico, use uma condição do IAM. Consulte esse artigo sobre como ler registros de um bucket para ver um exemplo.

  • roles/viewer (Visualizador do projeto) é o mesmo que roles/logging.viewer. O papel oferece acesso somente leitura a todos os recursos do Logging, exceto registros de transparência no acesso e de auditoria de acesso a dados. Esse papel se aplica apenas aos buckets _Required e _Default.

  • roles/editor (Editor do projeto) inclui as permissões de roles/logging.viewer e para gravar entradas de registro, excluir registros e criar métricas com base em registros. O papel não permite que você crie coletores de exportação ou leia os registros de transparência no acesso ou de auditoria de acesso a dados.

  • roles/owner (Proprietário do projeto) oferece acesso completo ao Logging, incluindo registros de transparência no acesso e de auditoria de acesso a dados.

Para ver mais detalhes sobre os papéis e permissões do Logging, consulte Permissões e papéis, nesta página.

Como conceder papéis

Para conceder um papel a um membro, é necessário ter o conjunto de permissões encontrado em roles/owner (Proprietário do projeto). Para mais informações sobre como conceder papéis, consulte Como conceder, alterar e revogar acesso a recursos.

Caso esteja tentando acessar um recurso do Google Cloud sem ter as permissões necessárias, entre em contato com o membro listado como o Proprietário do recurso.

Permissões e papéis

A tabela a seguir lista os papéis do IAM que concedem acesso ao Cloud Logging. Cada papel tem um conjunto específico de permissões de registro. Os papéis podem ser atribuídos aos membros dos tipos de recursos listados.

Na tabela, a.b.{x,y} significa a.b.x e a.b.y.

Nome do papel Título do papel Permissões de registro Tipo de recurso
roles/
logging.viewer
Visualizador de registros logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
logging.buckets.{list, get}
logging.usage.get
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
projeto, organização,
pasta, conta de faturamento
roles/
logging.privateLogViewer
Visualizador de registros particulares roles/logging.viewer permissões, mais:
logging.privateLogEntries.list
projeto, organização,
pasta, conta de faturamento
roles/
logging.logWriter
Gravador de registros logging.logEntries.create projeto, organização,
pasta, conta de faturamento
roles/
logging.configWriter
Gravador de configuração de registros logging.buckets.{list, create, get, update, delete, undelete}
logging.cmekSettings.{get, update}
logging.exclusions.{list, create, get, update, delete}
logging.locations.{list, get}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, create, get, update, delete}
logging.views.{list, create, get, update, delete}
resourcemanager.projects.{get, list}
projeto, organização,
pasta, conta de faturamento
roles/
logging.bucketWriter
Gravador de bucket de registros logging.buckets.write projeto
roles/
logging.viewAccessor
Acessador de visualização de registros logging.views.{access, listLogs, listResourceKeys, listResourceValues}
projeto, organização,
pasta, conta de faturamento
roles/
logging.admin
Administrador do Logging logging.exclusions.{list, create, get, update, delete}
logging.locations.{list, get}
logging.logEntries.{create, list}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.{delete, list}
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
logging.buckets.{list, get, update, create, delete, undelete}
logging.views.{list, access, create, get, update, delete, listLogs, listResourceKeys, listResourceValues}
logging.cmekSettings.{get, update}
logging.usage.get
resourcemanager.projects.{get, list}
logging.queries.{get, list, update, create, delete}
projeto, organização,
pasta, conta de faturamento
roles/viewer Leitor logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
projeto, organização, pasta
roles/editor Editor roles/viewer Permissões do Logging, mais:
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
logging.queries.{get, list, update, create, delete}
projeto, organização, pasta
roles/owner Proprietário roles/editor Permissões do Logging, mais:
logging.privateLogEntries.list
logging.sinks.{create, update, delete}
logging.queries.{get, list, update, create, delete}
projeto, organização, pasta

Papéis personalizados

Para criar um papel personalizado com as permissões do Logging, siga estas etapas:

  • Para um papel que conceda permissões para a API Logging, escolha entre as permissões em Permissões da API.

  • Para um papel que conceda permissões para usar o Explorador de registros, selecione um dos grupos de permissões em Permissões do Console.

  • Para um papel que conceda permissões para usar o gcloud logging, acesse a visão geral da ferramenta gcloud.

Para ver mais informações sobre papéis personalizados, consulte Noções básicas sobre os papéis personalizados do IAM.

Permissões da API

Os métodos da API Logging exigem permissões específicas do IAM. A tabela a seguir lista as permissões exigidas pelos métodos da API.

Método de geração de registro Permissão necessária Tipo de recurso
billingAccounts.logs.* logging.logs.* (Consulte projects.logs.*) contas de faturamento
billingAccounts.sinks.* logging.sinks.* (Consulte projects.sinks.*.) contas de faturamento
billingAccounts.locations.buckets.* logging.buckets.* (Consulte projects.locations.buckets.*.) contas de faturamento
entries.list logging.logEntries.list ou
logging.privateLogEntries.list
projetos, organizações,
pastas, contas de faturamento
entries.tail logging.logEntries.list ou
logging.privateLogEntries.list
projetos, organizações,
pastas, contas de faturamento
entries.write logging.logEntries.create projetos, organizações,
pastas, contas de faturamento
folders.logs.* logging.logs.* (Consulte projects.logs.*) pastas
folders.sinks.* logging.sinks.* (Consulte projects.sinks.*) pastas
folders.locations.buckets.* logging.buckets.* (Consulte projects.locations.buckets.*) pastas
monitoredResourceDescriptors.list (nenhum) (nenhum)
organizations.logs.* logging.logs.* (Consulte projects.logs.*) organizações
organizations.sinks.* logging.sinks.* (Consulte projects.sinks.*) organizações
organizations.locations.buckets.* logging.buckets.* (Consulte projects.locations.buckets.*) organizações
projects.exclusions.create logging.exclusions.create projetos
projects.exclusions.delete logging.exclusions.delete projetos
projects.exclusions.get logging.exclusions.get projetos
projects.exclusions.list logging.exclusions.list projetos
projects.exclusions.patch logging.exclusions.update projetos
projects.logs.list logging.logs.list projetos
projects.logs.delete logging.logs.delete projetos
projects.sinks.list logging.sinks.list projetos
projects.sinks.get logging.sinks.get projetos
projects.sinks.create logging.sinks.create projetos
projects.sinks.update logging.sinks.update projetos
projects.sinks.delete logging.sinks.delete projetos
projects.locations.buckets.list logging.buckets.list projetos
projects.locations.buckets.get logging.buckets.get projetos
projects.locations.buckets.patch logging.buckets.update projetos
projects.locations.buckets.create logging.buckets.create projetos
projects.locations.buckets.delete logging.buckets.delete projetos
projects.locations.buckets.undelete logging.buckets.undelete projetos
projects.metrics.list logging.logMetrics.list projetos
projects.metrics.get logging.logMetrics.get projetos
projects.metrics.create logging.logMetrics.create projetos
projects.metrics.update logging.logMetrics.update projetos
projects.metrics.delete logging.logMetrics.delete projetos

Permissões do console

A tabela a seguir lista as permissões necessárias para usar o Explorador de registros.

Na tabela, a.b.{x,y} significa a.b.x e a.b.y.

Atividade do console Permissões necessárias
Acesso mínimo somente de leitura logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Adicionar capacidade de visualizar registros de auditoria de acesso a dados Insira logging.privateLogEntries.list
Adicionar capacidade de visualizar registros de transparência no acesso Insira logging.privateLogEntries.list
Adicionar permissão para ver métricas com base em registros Adicionar logging.logMetrics.{list, get}
Adicionar permissão para ver exportações Adicionar logging.sinks.{list, get}
Adicionar permissão para ver o uso de registros Adicionar logging.usage.get
Adicionar permissão para excluir registros Adicionar logging.exclusions.{list, create, get, update, delete}
Adicionar permissão para exportar registros Adicionar logging.sinks.{list, create, get, update, delete}
Adicionar permissão para criar métricas com base em registros Adicionar logging.logMetrics.{list, create, get, update, delete}

Permissões de linha de comando

Os comandos gcloud logging são controlados pelas permissões do IAM.

Para usar qualquer um dos comandos gcloud logging, você precisa ter a permissão serviceusage.services.use.

Também é necessário ter o papel do IAM que corresponde ao local do registro e ao seu caso de uso. Para mais detalhes, acesse permissões da interface da linha de comando.

Acesso a registros exportados

Para criar um coletor para exportar registros, você precisa ter as permissões de roles/logging.configWriter, roles/logging.admin ou roles/owner.

Uma vez que um coletor começa a exportar registros, ele tem acesso total a todas as entradas de registro de entrada. Os coletores podem exportar entradas de registro particulares, incluindo registros de transparência no acesso e de auditoria de acesso a dados.

Depois que as entradas de registro forem exportadas, o acesso às cópias exportadas será totalmente controlado pelas permissões e papéis do IAM nos destinos: Cloud Storage, BigQuery ou Pub/Sub.

Escopos de acesso do Logging

Os escopos de acesso são o método legado de especificar permissões para as instâncias da VM do Compute Engine. Os seguintes escopos de acesso se aplicam à API Logging:

Escopo de acesso Permissões concedidas
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Acesso total à API Logging.
https://www.googleapis.com/auth/cloud-platform Acesso total à API Logging e a todas as outras APIs do Google Cloud ativadas.

Práticas recomendadas

  • Agora que os papéis do IAM estão disponíveis, é recomendável conceder a todas as instâncias da VM o escopo "Acesso total a todas as APIs do Google Cloud ativadas":

    https://www.googleapis.com/auth/cloud-platform

    É possível conceder papéis específicos do IAM na conta do serviço da instância de VM para restringir o acesso a APIs específicas. Para ver detalhes, consulte Permissões da conta de serviço.

  • Ao criar um papel personalizado que inclua permissões para gerenciar exclusões, recomendamos que você conceda permissões logging.sinks.* ao papel em vez de conceder permissões logging.exclusions.*.

    Gerenciar exclusões faz parte de coletores de registros. Portanto, todas as permissões relacionadas ao gerenciamento de coletores, incluindo exclusões, são incluídas nas permissões logging.sinks.*.