Controlo de acesso com a IAM

Este documento ajuda a compreender como o Cloud Logging usa as funções e as autorizações da gestão de identidade e de acesso (IAM) para controlar o acesso aos recursos do Logging. As suas funções da IAM determinam se pode realizar ações como criar destinos de registo ou contentores de registo, ler dados de registo armazenados num contentor de registo ou aceder a páginas como o Explorador de registos. Se emitir um comando da API Logging ou da CLI Google Cloud, as suas funções do IAM determinam se tem autorização para executar o comando.

Vista geral

As suas funções do IAM determinam as ações que pode realizar no Logging. Uma função é uma coleção de autorizações. Quando atribui uma função a um principal, concede-lhe todas as autorizações que a função contém. Pode conceder várias funções ao mesmo principal.

As funções do IAM são concedidas num recurso, como um Google Cloud projeto, uma pasta, um contentor ou uma organização. Por exemplo, pode conceder a um principal a função de leitor de registos (roles/logging.viewer) num projeto Google Cloud específico.

As secções Funções predefinidas e Funções de registo desta página fornecem informações abrangentes sobre as funções e as autorizações de registo. Outras secções desta página fornecem informações sobre funções ou autorizações para exemplos de utilização específicos.

O resto desta secção resume como pode conceder a um principal acesso a contentores de registos ou conceder-lhe acesso apenas a algumas das entradas de registos num contentor de registos. Também descreve como pode restringir o acesso a alguns campos LogEntry.

Conceda acesso a contentores de registos

A função Logs Viewer (roles/logging.viewer) permite que um principal aceda a todos os dados de registo armazenados nos contentores de registo _Required e _Default, exceto aos registos de acesso aos dados. Se um principal precisar de acesso aos registos de acesso aos dados, conceda-lhe a função de leitor de registos privados (roles/logging.privateLogViewer).

Para os contentores de registos personalizados, pode conceder acesso à vista _AllLogs ou a uma vista de registos personalizada. O registo cria automaticamente a visualização _AllLogs, que inclui todas as entradas de registo no contentor de registos. Para conceder acesso a uma vista de registo, adicione uma associação de IAM à política de IAM anexada à vista de registo ou ao projeto. Para saber mais, consulte o artigo Controle o acesso a uma vista de registo.

O registo também suporta etiquetas em contentores de registos, o que pode ajudar a compreender os seus custos. Também pode usar etiquetas para impedir que um utilizador elimine um contentor de registos. Para saber mais, consulte o artigo Use etiquetas para gerir o acesso a contentores de registos.

Conceda acesso a algumas entradas de registo num contentor de registo

Para conceder a um principal acesso apenas a algumas das entradas de registo armazenadas num contentor de registos, crie uma vista de registo e, em seguida, conceda ao principal acesso à vista de registo. Por exemplo, pode criar uma vista de registo no contentor de registos _Default que inclua apenas entradas de registo cujo tipo de recurso seja uma instância do Compute Engine. Para saber mais sobre a criação de visualizações de registos e as diferentes estratégias que pode usar para conceder acesso à visualização, consulte o artigo Configure visualizações de registos num contentor de registos.

Restrinja o acesso a campos específicos do LogEntry

Para restringir o acesso a campos específicos na estrutura de dados LogEntry, configure os controlos de acesso ao nível do campo no contentor de registos que armazena os seus dados. Por exemplo, para o seu contentor de registos _Default, pode colocar uma restrição no jsonPayload da estrutura de dados LogEntry e, em seguida, conceder aos seus administradores acesso a esse campo. Para saber mais, consulte o artigo Configure controlos de acesso ao nível do campo.

Não pode restringir campos num contentor de registos que tenha sido atualizado para usar o Log Analytics. Da mesma forma, se um contentor de registos contiver um campo restrito, não pode atualizá-lo para usar o Log Analytics.

Funções predefinidas

O IAM fornece funções predefinidas para conceder acesso detalhado a recursos Google Cloud específicos e impedir o acesso indesejado a outros recursos. Google Cloud cria e mantém estas funções e atualiza automaticamente as respetivas autorizações conforme necessário, como quando o Logging adiciona novas funcionalidades.

A tabela seguinte lista as funções predefinidas para o registo. Para cada função, a tabela apresenta o título da função, a descrição, as autorizações contidas e o tipo de recurso de nível mais baixo onde as funções podem ser concedidas. Pode conceder as funções predefinidas ao Google Cloud nível do projeto ou, na maioria dos casos, a qualquer tipo superior na hierarquia de recursos. Para restringir a função Logs View Accessor a uma vista de registos num contentor, use os atributos de recursos para as condições do IAM.

Para obter uma lista de todas as autorizações individuais contidas numa função, consulte o artigo Obter os metadados da função.

Role Permissions

(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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(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

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(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.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

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.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(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

(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.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

As secções seguintes fornecem informações adicionais para ajudar a decidir que funções se aplicam aos exemplos de utilização dos seus principais.

Funções de registo

  • Para permitir que um utilizador execute todas as ações no registo, conceda-lhe a função de administrador de registo (roles/logging.admin).

  • Para permitir que um utilizador crie e modifique configurações de registo, conceda-lhe a função Logs Configuration Writer (roles/logging.configWriter). Esta função permite-lhe criar ou modificar qualquer um dos seguintes elementos:

    Esta função não é suficiente para criar métricas baseadas em registos ou políticas de alerta baseadas em registos. Para obter informações sobre as funções necessárias para estas tarefas, consulte Autorizações para métricas baseadas em registos e Autorizações para políticas de alerta baseadas em registos.

  • Para permitir que um utilizador leia registos nos contentores _Required e _Default ou use as páginas Explorador de registos e Log Analytics, atribua uma das seguintes funções:

    • Para aceder a todos os registos no contentor _Required e aceder à vista _Default no contentor _Default, conceda a função de leitor de registos (roles/logging.viewer).
    • Para aceder a todos os registos nos contentores _Required e _Default, incluindo registos de acesso aos dados, conceda a função Visualizador de registos privados (roles/logging.privateLogViewer).
  • Para permitir que um utilizador leia registos em todas as vistas de registos que estão num projeto, conceda-lhe a função de IAM de roles/logging.viewAccessor no projeto.

  • Para permitir que um utilizador apenas leia registos numa vista de registos específica, tem duas opções:

    • Crie uma política de IAM para a visualização de registos e, em seguida, adicione uma associação de IAM a essa política que conceda ao principal acesso à visualização de registos.

    • Conceda ao principal a função de IAM de roles/logging.viewAccessor no projeto que contém a vista de registos, mas anexe uma condição de IAM para restringir a concessão à vista de registos específica.

    Para ver informações sobre como criar visualizações de registos e conceder acesso, consulte o artigo Configure visualizações de registos num contentor de registos.

  • Para conceder a um utilizador acesso a campos LogEntry restritos, se existirem, num determinado contentor de registos, conceda a função Logs Field Accessor (roles/logging.fieldAccessor). Para mais informações, consulte o artigo Configure o acesso ao nível do campo.
  • Para permitir que um utilizador escreva registos através da Logging API, conceda-lhe a função Logs Writer (roles/logging.logWriter). Esta função não concede autorizações de visualização.

  • Para permitir que a conta de serviço de um destino encaminhe registos para um contentor num projeto Google Cloud diferente, conceda à conta de serviço a função de escritor do contentor de registos (roles/logging.bucketWriter). Para obter instruções sobre como conceder autorizações a uma conta de serviço, consulte o artigo Defina autorizações de destino.

Funções ao nível do projeto

  • Para conceder acesso de visualização à maioria dos Google Cloud serviços, conceda a função Visitante (roles/viewer).

    Esta função inclui todas as autorizações concedidas pela função Leitor de registos (roles/logging.viewer).

  • Para conceder acesso de editor à maioria dos Google Cloud serviços, atribua a função Editor (roles/editor).

    Esta função inclui todas as autorizações concedidas pela função Logs Viewer (roles/logging.viewer) e as autorizações para escrever entradas de registo, eliminar registos e criar métricas baseadas em registos. No entanto, esta função não permite que os utilizadores criem origens, leiam registos de auditoria de acesso aos dados que se encontram no contentor _Default nem leiam registos que se encontram em contentores de registos definidos pelo utilizador.

  • Para conceder acesso total à maioria dos Google Cloud serviços, atribua a função de proprietário (roles/owner).

Conceder funções

Para saber como conceder uma função a um principal, consulte o artigo Conceder, alterar e revogar o acesso.

Pode conceder várias funções ao mesmo utilizador. Para obter uma lista das autorizações contidas numa função, consulte Obter os metadados da função.

Se estiver a tentar aceder a um Google Cloud recurso e não tiver as autorizações necessárias, contacte o principal indicado como proprietário do recurso.

Funções personalizadas

Para criar uma função personalizada com autorizações de registo, faça o seguinte:

Para mais informações sobre funções personalizadas, consulte o artigo Compreender as funções personalizadas do IAM.

Autorizações do Cloud Logging

A tabela seguinte é uma lista parcial das autorizações necessárias para funcionalidades específicas do Cloud Logging. Esta tabela pode ajudar a identificar as autorizações de que precisa para usar páginas como o Explorador de registos.

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

Atividade da consola Autorizações necessárias
Acesso só de leitura mínimo logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Veja os registos de auditoria de acesso aos dados logging.privateLogEntries.list
Veja métricas baseadas em registos logging.logMetrics.{list, get}
Ver lavatórios logging.sinks.{list, get}
Veja a utilização dos registos logging.usage.get
Transferir registos logging.logEntries.{list, download}

Apenas uma destas autorizações é necessária para transferir registos. As funções que contêm as autorizações para transferir registos têm de ser concedidas ao nível do projeto. Não pode transferir registos se for concedida uma função que contenha estas autorizações no ficheiro de política de IAM de uma vista de registos.

Liste e veja os âmbitos do registo logging.logScopes.{get, list}
Veja o âmbito do registo predefinido observability.scopes.get
Exclua registos logging.exclusions.{list, create, get, update, delete}

Ao criar uma função personalizada que inclua autorizações para gerir filtros de exclusão, adicione as autorizações logging.sinks.* à função em vez de adicionar as autorizações logging.exclusions.*.

Crie e use destinos logging.sinks.{list, create, get, update, delete}

Quando cria um destino, também tem de conceder à conta de serviço uma função do IAM que lhe permita escrever entradas de registo no destino. Para mais informações, consulte o artigo Defina autorizações de destino.

Depois de as entradas do registo terem sido encaminhadas para um destino suportado, o acesso às entradas do registo é controlado inteiramente pelas autorizações e funções de IAM no destino.

Crie alertas baseados em registos Consulte as funções necessárias para criar e usar políticas de alerta baseadas em registos.
Crie métricas baseadas em registos logging.logMetrics.{list, create, get, update, delete}

Para obter informações sobre outras funções de IAM que precisa de criar e usar métricas baseadas em registos, consulte Funções necessárias para criar e usar métricas baseadas em registos.

Guarde e use consultas privadas logging.queries.usePrivate
logging.queries.{listShared,getShared}
Guarde e use consultas partilhadas logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Usar consultas recentes logging.queries.{create, list}
Crie e faça a gestão de âmbitos de registo logging.logScopes.{create, delete, get, list, update}
Defina e faça a gestão do âmbito do registo predefinido observability.scopes.{get, update}
Crie e faça a gestão de visualizações de propriedades do Analytics observability.analyticsViews.{create, delete, get, list, update}

Autorizações para a linha de comandos

Os comandos gcloud logging são controlados pelas autorizações de IAM.

Para usar qualquer um dos comandos gcloud logging, os principais têm de ter a autorização serviceusage.services.use.

Um principal também tem de ter a função de IAM que corresponde ao recurso do registo e ao exemplo de utilização. Para ver detalhes, consulte as autorizações da interface de linhas de comando.

Funções necessárias para criar e usar métricas baseadas em registos

Segue-se um resumo das funções e autorizações comuns de que um principal precisa para aceder a métricas baseadas em registos:

  • A função Logs Configuration Writer (roles/logging.configWriter) permite que os principais listem, criem, obtenham, atualizem e eliminem métricas baseadas em registos.

  • A função Visualizador de registos (roles/logging.viewer) contém autorizações para ver as métricas existentes. Especificamente, um principal precisa das autorizações logging.logMetrics.get e logging.logMetrics.list para ver as métricas existentes.

  • A função Monitoring Viewer (roles/monitoring.viewer) contém as autorizações para ler dados de TimeSeries. Em concreto, um principal precisa da autorização monitoring.timeSeries.list para ler dados de séries cronológicas.

  • As funções Logging Admin (roles/logging.admin), Project Editor (roles/editor) e Project Owner (roles/owner) contêm as autorizações para criar métricas baseadas em registos. Especificamente, um principal precisa da autorização logging.logMetrics.create para criar métricas baseadas em registos.

Funções necessárias para criar e usar políticas de alerta baseadas em registos

Para criar e gerir políticas de alertas baseadas em registos, um principal precisa das seguintes funções e autorizações do Logging e Monitoring:

  • Para receber as autorizações de que precisa para criar políticas de alerta baseadas em registos no Monitoring e criar as regras de notificação de registo associadas, peça ao seu administrador que lhe conceda as seguintes funções de IAM no seu projeto:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Estas funções predefinidas contêm as autorizações necessárias para criar políticas de alerta baseadas em registos na monitorização e para criar as regras de notificação de registo associadas. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

    Autorizações necessárias

    São necessárias as seguintes autorizações para criar políticas de alerta baseadas em registos na monitorização e para criar as regras de notificação de registo associadas:

    • monitoring.alertPolicies.create
    • logging.notificationRules.create

    Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Se criar a sua política de alertas na CLI do Google Cloud, também é necessária a seguinte função ou autorização:

Se o seu Google Cloud projeto já tiver canais de notificação, pode configurar a política de alertas para usar um canal existente sem funções nem autorizações adicionais. No entanto, se precisar de criar um canal de notificação para a sua política de alertas baseada em registos, é necessária a seguinte função ou autorização:

  • Para receber a autorização de que precisa para criar um canal de notificação para uma política de alertas baseada em registos, peça ao seu administrador para lhe conceder a função IAM de editor de canais de notificação do Monitoring (roles/monitoring.notificationChannelEditor) no seu projeto.

    Esta função predefinida contém a autorização monitoring.notificationChannels.create , que é necessária para criar um canal de notificação para uma política de alertas baseada em registos.

Autorizações para políticas de alerta baseadas em SQL

As políticas de alerta baseadas em SQL avaliam os resultados de uma consulta SQL executada em dados de grupos de entradas de registo. Para informações sobre as funções necessárias para criar e gerir políticas de alerta baseadas em SQL, consulte a secção Antes de começar no artigo Monitorize os resultados das consultas SQL com uma política de alerta.

Registo de âmbitos de acesso

Os âmbitos de acesso são o método antigo de especificar autorizações para as contas de serviço nas instâncias de VM do Compute Engine.

Os seguintes âmbitos de acesso aplicam-se à API Logging:

Âmbito de acesso Autorizaçõ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 Google Cloud APIs ativadas.

Para obter informações sobre a utilização deste método antigo para definir os níveis de acesso das suas contas de serviço, consulte o artigo Âmbitos de acesso.