Controle de acesso com o IAM

Neste documento, descrevemos como usar os papéis e as permissões do Identity and Access Management (IAM) para controlar o acesso a dados de registros na API Logging, no Explorador de registros e na CLI do Google Cloud.

Visão geral

As permissões e papéis do IAM determinam a capacidade de acessar dados de registros na API Logging, no Explorador de registros e na CLI do Google Cloud.

Um papel é um conjunto de permissões. Não é possível conceder uma permissão principal diretamente. em vez disso, você concede a eles um papel. Quando você faz isso, concede ao principal todas as permissões contidas no papel. É possível atribuir vários papéis ao mesmo principal.

Para usar o Logging em um recurso do Google Cloud, como um projeto, uma pasta, um bucket ou uma organização do Google Cloud, um principal precisa ter um papel do IAM que contenha as permissões apropriadas.

Papéis predefinidos

O IAM fornece papéis predefinidos para conceder acesso granular a recursos específicos do Google Cloud e impedir o acesso indesejado a outros recursos. O Google Cloud cria e mantém esses papéis e atualiza automaticamente as permissões conforme necessário, como quando o Logging adiciona novos recursos.

Na tabela a seguir, estão listados os papéis predefinidos do Logging. Para cada papel, a tabela exibe o título, a descrição, as permissões contidas e o tipo de recurso de nível mais baixo em que os papéis podem ser concedidos. É possível conceder os papéis predefinidos no nível do projeto do Cloud ou, na maioria dos casos, qualquer tipo acima na hierarquia do Google Cloud. Para definir o escopo dos papéis de gravador de buckets de registros ou de acesso de visualização para registros no nível do bucket, use os atributos de recursos para condições do IAM.

Para ver uma lista de cada permissão individual contida em um papel, consulte Como obter os metadados do papel.

Role Permissions

Logging Admin
(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.access
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.list
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.get
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Logs Bucket Writer
(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project
  • logging.buckets.write

Logs Configuration Writer
(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.notificationRules.*
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Log Field Accessor
(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project
  • logging.fields.access

Logs Writer
(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project
  • logging.logEntries.create

Private Logs Viewer
(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.privateLogEntries.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Logs View Accessor
(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues

Logs Viewer
(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.operations.get
  • logging.operations.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Considerações adicionais

Ao decidir quais permissões e papéis se aplicam aos casos de uso dos seus principais, considere o seguinte:

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

  • roles/logging.viewer (Visualizador de registros) concede aos participantes acesso somente leitura à maioria dos recursos do Logging.

    O papel Visualizador de registros concede aos participantes acesso à visualização de registro _AllLogs no bucket _Required e à visualização de registro _Default no bucket _Default.

    O papel Visualizador de registros não permite que os participantes leiam os registros de auditoria de acesso a dados que estão no bucket _Default. Para ler esses registros de auditoria de acesso a dados, os participantes precisam do papel Visualizador de registros particulares (roles/logging.privateLogViewer) para a visualização de registro apropriada.

    O papel Visualizador de registros não permite que os participantes leiam registros armazenados em buckets definidos pelo usuário. Para ler registros em buckets definidos pelo usuário, os participantes precisam do papel de acessador de visualização de registros (roles/logging.viewAccessor) para a visualização de registro apropriada.

  • roles/logging.privateLogViewer (Visualizador de registros particulares) inclui todas as permissões contidas em roles/logging.viewer, além da capacidade de ler registros de auditoria de acesso a dados no bucket _Default.

    O papel Visualizador de registros particulares não permite que os participantes leiam registros de auditoria de acesso a dados se forem armazenados em buckets definidos pelo usuário. Para ler esses registros em buckets definidos pelo usuário, os participantes precisam do papel de acesso de visualização de registros (roles/logging.viewAccessor) para a visualização de registro apropriada.

  • roles/logging.viewAccessor (acesso de visualização de registros) concede aos participantes permissões para ler registros, chaves de recursos e valores usando uma visualização de registro e fazer o download de registros. Para restringir esse papel a uma visualização em um bucket específico, use uma condição do IAM. Consulte Como ler registros de um bucket.

  • roles/logging.fieldAccessor (acesso de campo de registros) concede aos participantes permissões para acessar campos LogEntry restritos, se houver, em um determinado bucket. Consulte detalhes sobre Controle de acesso no nível do campo.

  • roles/logging.logWriter (Gravador de registros) concede aos participantes as permissões mínimas necessárias para gravar registros na API Logging. Esse papel não concede permissões de visualização.

  • roles/logging.bucketWriter (Gravador de buckets de registros) concede à conta de serviço do coletor as permissões mínimas necessárias para encaminhar os registros para um bucket específico. Para ver instruções sobre como conceder permissões a uma conta de serviço do coletor, consulte Definir permissões de destino.

  • O roles/logging.configWriter (Gravador de configuração de registros) concede ao principal as permissões para criar ou modificar configurações de geração de registros, como coletores, buckets, visualizações, métricas com base em registros ou exclusões. Para usar o Explorador de registros nessas ações, adicione roles/logging.viewer.

  • roles/viewer (visualizador do projeto) é igual a roles/logging.viewer. O papel concede acesso somente leitura aos participantes a todos os recursos do Logging, exceto a visualização de registros de auditoria de acesso a dados que estão no bucket _Default.

  • roles/editor (Editor do projeto) inclui as permissões de roles/logging.viewer, além de permissões para gravar entradas de registro, excluir registros e criar métricas com base em registros. O papel não permite que os participantes criem coletores ou leiam os registros de auditoria de acesso a dados que estão no bucket _Default.

  • roles/owner (Proprietário do projeto) concede aos participantes acesso total ao Logging, incluindo a leitura de registros de auditoria de acesso a dados.

Concedendo papéis

Para saber como conceder um papel ao principal, consulte Como conceder, alterar e revogar o acesso.

É possível atribuir vários papéis ao mesmo usuário. Para ver uma lista das permissões contidas em um papel, consulte Como receber os metadados do papel.

Se você estiver tentando acessar um recurso do Google Cloud e não tiver as permissões necessárias, entre em contato com o principal que está listado como o proprietário do recurso.

Papéis personalizados

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

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.

Se você tiver interesse em registros mantidos em organizações, contas de faturamento e pastas do Google Cloud, esses recursos têm os próprios métodos de API para logs e sinks. Em vez de repetir todos os métodos na tabela, apenas os métodos projects são mostrados individualmente.

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 projects

Permissões do Console do Google Cloud

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 Inserir logging.privateLogEntries.list
Adicionar permissão para ver métricas com base em registros Adicionar logging.logMetrics.{list, get}
Adicionar permissão para exibir coletores 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 capacidade de usar coletores 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}
Adicionar a capacidade de salvar consultas Adicionar logging.queries.{list, create, get, update, delete}
Adicionar capacidade de compartilhar consultas Inserir logging.queries.share
Adicionar a capacidade de usar consultas recentes Adicionar logging.queries.{create, list}

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, os participantes precisam ter a permissão serviceusage.services.use.

O principal também precisa ter o papel do IAM que corresponde ao recurso de registros e ao caso de uso. Para ver mais detalhes, consulte Permissões da interface de linha de comando.

Permissões de roteamento de registros

Para informações sobre como definir controles de acesso ao criar e gerenciar coletores para rotear registros, consulte Configurar coletores: definir permissões de destino.

O gerenciamento de filtros de exclusão é integrado à configuração de coletores. Todas as permissões relacionadas ao gerenciamento de coletores, incluindo a configuração de filtros de exclusão, estão incluídas nas permissões logging.sinks.*. Ao criar um papel personalizado que inclua permissões para gerenciar filtros de exclusão, adicione as permissões logging.sinks.* ao papel em vez de adicionar as permissões logging.exclusions.*.

Depois que suas entradas de registro forem roteadas para um destino compatível, o acesso às cópias de registro será controlado totalmente pelas permissões e papéis do IAM nos destinos: Cloud Storage, BigQuery ou Pub/Sub.

Permissões de métricas com base em registros.

Veja a seguir um resumo das permissões e dos papéis comuns necessários ao principal para acessar métricas com base em registros:

  • O Gravador de configuração de registros (roles/logging.configWriter) permite que os participantes listem, criem, recebam, atualizem e excluam métricas com base em registros.

  • O Visualizador de registros (roles/logging.viewer) permite que os participantes vejam as métricas existentes. Também é possível adicionar as permissões logging.logMetrics.get e logging.logMetrics.list a um papel personalizado.

  • O Leitor do Monitoring (roles/monitoring.viewer) permite que os participantes leiam dados do TimeSeries. Também é possível adicionar a permissão monitoring.timeSeries.list a um papel personalizado.

  • O Administrador do Logging (roles/logging.admin), o Editor do projeto (roles/editor) e o Proprietário do projeto (roles/owner) permitem que os principais criem métricas com base em registros (logging.logMetrics.create).

Permissões de alertas com base em registros

Veja a seguir um resumo das funções e permissões comuns que o principal precisa para criar e gerenciar alertas com base em registros:

  • Administrador do Logging (roles/logging.admin). Especificamente, um principal precisa das seguintes permissões para ler registros e gerenciar regras de notificação do Logging:

    • logging.logs.list
    • logging.logEntries.list
    • logging.notificationRules.create
    • logging.notificationRules.update

    Essas permissões estão incluídas no papel Administrador do Logging. Se você não quiser conceder essa função, faça o seguinte:

  • O Editor do Monitoring AlertPolicy (roles/monitoring.alertPolicyEditor) e o Editor do Monitoring NotificationChannel (roles/monitoring.notificationChannelEditor) incluem as permissões necessárias para gerenciar os alertas políticas e canais de notificação usados por alertas baseados em registros:

    • monitoring.alertPolicies.{create, delete, get, list, update}
    • monitoring.notificationChannelDescriptors.{get, list}
    • monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}

    As permissões necessárias também estão incluídas nos papéis Editor do Monitoring (roles/monitoring.editor) e Administrador do Monitoring (roles/monitoring.admin).

    Se você não quiser conceder qualquer um desses papéis, crie um papel personalizado e inclua as permissões nos papéis do Editor de AlertPolicy do Monitoring e do Editor do NotificationChannel do Monitoring.

Escopos de acesso do Logging

Escopos de acesso são o método legado de especificar permissões para as contas de serviço nas 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.

Para informações sobre como usar esse método legado para definir os níveis de acesso das suas contas de serviço, consulte Permissões da conta de serviço.