Cenários para exportar o Cloud Logging: requisitos de conformidade

Neste cenário, mostramos como exportar registros do Cloud Logging para o Cloud Storage para atender aos requisitos de conformidade da sua organização. As organizações enfrentam muitos desses requisitos para criar e manter arquivos de geração de registros. Por exemplo, quando a conformidade com a Lei Sarbanes Oxley (SOX) é importante, talvez convenha manter registros das atividades de usuários, bancos de dados e console. O Cloud Logging mantém registros por sete dias para o nível básico e 30 dias para o nível Premium, com exceção dos registros mantidos pelo registro de auditoria do Cloud, que são mantidos por 400 dias para os níveis básico e Premium.

Neste cenário, os registros exportados são entregues a um bucket do Cloud Storage que você configura. Você concede permissões para limitar o acesso aos registros conforme apropriado. Visando reduzir os custos de armazenamento a longo prazo, é possível usar o recurso de gerenciamento do ciclo de vida do objeto no Cloud Storage para mover os registros para as classes de armazenamento Nearline ou Coldline e excluí-los após o período de retenção exigido.

Nesse cenário, usamos uma arquitetura da Web comum de n camadas executada no Google Cloud com máquinas virtuais (VMs), bancos de dados e um sistema de armazenamento compatível. Para este ambiente, os seguintes tipos de registro são exportados: todos os registros de auditoria, registros relacionados a máquina virtual, registros de armazenamento e registros de banco de dados. Altere os tipos de registros exportados ajustando os filtros de geração de registros no exemplo.

Esse cenário faz parte da série Padrões de design para exportar o Cloud Logging.

Configurar a exportação de registros

No diagrama a seguir, veja as etapas para ativar a exportação de registros para o Cloud Storage.

Como ativar a compatibilidade com geração de registros.

Configurar o bucket de exportação de registros no Cloud Storage

Siga as instruções para configurar um bucket do Cloud Storage que hospedará os registros exportados. Para a classe de armazenamento padrão, selecione Regional, a menos que você precise da classe de armazenamento Multirregional, Nearline ou Coldline.

Configurar o gerenciamento do ciclo de vida do objeto para o bucket do Cloud Storage

Neste cenário, supomos um requisito de retenção de sete anos para todos os registros. Visando minimizar os custos de armazenamento, é possível adicionar regras de ciclo de vida do objeto ao Cloud Storage para mover os registros para o armazenamento Nearline ou Coldline após um determinado número de dias, depois excluí-los quando não precisar mais retê-los.

Prática recomendada: mover registros para Nearline ou Coldline e depois excluí-los ajuda a gerenciar o custo operacional contínuo de manutenção dos registros.

Siga as instruções para criar regras de ciclo de vida. Na captura de tela a seguir, veja a descrição de um conjunto de regras em cascata que altera a classe de armazenamento para Nearline após 60 dias, altera a classe de armazenamento para Coldline após 120 dias e, em seguida, exclui os registros após 2.555 dias, ou seja, aproximadamente sete anos.

Regras em cascata.

Ativar a geração de registros de auditoria para todos os serviços

Os registros de auditoria de acesso a dados (exceto no BigQuery) são desativados por padrão. Para ativar todos os registros de auditoria, siga as instruções para atualizar a política do Cloud IAM com a configuração apresentada na documentação da política de auditoria. Estas são as etapas:

  • Download da política de IAM atual como um arquivo
  • Inclusão do objeto JSON ou YAML da política de registros de auditoria no arquivo de política atual
  • Atualização do projeto do Google Cloud com o arquivo de política alterado

A seguir, veja um exemplo de objeto JSON usado para ativar todos os registros de auditoria de todos os serviços.

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Configurar a exportação de registros

Depois de configurar exportações agregadas ou a exportação de registros, você precisa refinar os filtros de geração de registros para exportar registros de auditoria, registros relacionados a máquina virtual, registros de armazenamento e registros de banco de dados. O filtro de geração de registros a seguir inclui os registros de auditoria "Atividade do administrador" e "Acesso a dados" e os registros de tipos de recurso específicos.

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=cloudsql_database OR
resource.type=bigquery_resource

Da ferramenta de linha de comando gcloud, use o comando gcloud logging sinks create ou a chamada de API organizations.sinks.create para criar um coletor com os filtros apropriados. O exemplo de comando gcloud a seguir cria um coletor denominado gcp_logging_sink_gcs para a organização. No coletor, estão incluídos todos os projetos filhos e a especificação de filtragem para selecionar registros de auditoria individuais.

gcloud logging sinks create gcp_logging_sink_gcs \
    storage.googleapis.com/gcp-logging-export-000100011000 \
    --log-filter='logName="/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"cloudsql_database\" OR  \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=324989855333

A resposta ao comando será semelhante à seguinte:

Created [https://logging.googleapis.com/v2/organizations/324989855333/sinks/gcp_logging_sink_gcs].
Please remember to grant `serviceAccount:gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com` full-control access to the bucket.
More information about sinks can be found at /logging/docs/export/configure_export

A entrada serviceAccount retornada da chamada da API inclui a identidade gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com. Essa identidade representa uma conta de serviço do Google Cloud criada para a exportação. Até que você conceda a essa identidade o acesso de gravação ao destino, as exportações de entradas de registro desse coletor falharão. Para mais informações, consulte a próxima seção ou a documentação sobre Como conceder acesso a um recurso.

Definir permissões de política de IAM para o bucket do Cloud Storage

Ao adicionar a conta de serviço gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com ao bucket gcp-logging-export-000100011000 com permissões do Storage Object Creator, você concede permissão à conta de serviço para gravar no bucket. A exportação do coletor falhará até que você adicione essas permissões.

Para adicionar as permissões ao bucket gcp-logging-export, siga estas etapas:

  1. No Console do Cloud, abra o Navegador do Storage:

    ACESSAR NAVEGADOR DO STORAGE

  2. Selecione o bucket gcp-logging-export.

  3. Clique em Mostrar painel de informações e selecione as permissões de Criador de objeto do Storage.

    Permissões de política de IAM - Criador de objetos do Storage.

Após a criação da exportação de registros com o filtro anterior, os arquivos de registros começarão a ocupar os buckets do Cloud Storage no projeto configurado.

Prática recomendada: implemente uma política de permissões mínimas com base nas necessidades. Você configura as permissões do bucket com base em contas de usuário, Grupos do Google ou contas de serviço específicas do Google Cloud. Use permissões de IAM para conceder acesso ao bucket do Cloud Storage, bem como acesso em massa aos objetos de um bucket.

Para um conjunto de permissões de exemplo, faça o seguinte:

  • Remova todos os usuários não essenciais das permissões de bucket do Cloud Storage.
  • Adicione controle total ao administrador do Cloud Storage.
  • Conceda ao usuário de exportação permissões para gravar os arquivos de exportação de registros.
  • Conceda a outros usuários individuais acesso de visualização às exportações de registros do Google Cloud.

É possível atualizar as permissões do IAM para o bucket diretamente no Console do Cloud, por meio da ferramenta de linha de comando gsutil ou da API Cloud IAM. No exemplo a seguir, mostramos um conjunto de amostra de permissões e capturas de tela associadas a um bucket do Cloud Storage no Console do Cloud.

Papel: Administrador do Storage

  • Descrição do IAM: controle total dos recursos do Cloud Storage
  • Uso: esse papel concede a usuários administradores acesso a recursos do Cloud Storage sem conceder acesso para modificar o conteúdo armazenado no Cloud Storage.
  • Conta de exemplo:

    storage-admin@example.com

    Papel: Administrador do Storage.

Papel: Administrador de objetos do Storage

  • Descrição do IAM: controle total dos objetos do Cloud Storage
  • Uso: usado para conceder a usuários administradores acesso total a objetos de arquivo do Cloud Storage sem conceder acesso para modificar a configuração de recursos do Cloud Storage.
  • Conta de exemplo:

    storage-object-admin@example.com: user1@example.com, user2@example.com

    Papel: Administrador de objetos do Storage.

Papel: Leitor de objetos do Storage

  • Descrição do IAM: acesso de leitura a objetos do Cloud Storage
  • Uso: use-o para conceder aos usuários acesso somente de leitura aos registros do GCP.
  • Conta de exemplo:

    storage-viewer@example.com: user3@example.com

    Papel: Leitor de objetos do Storage.

Prática recomendada: se você usa o G Suite ou Grupos do Google de consumidor, adicione um grupo do Google, como gcp-logging-export-viewers@example.com, com permissões de leitor de objetos do Storage. Em seguida, é possível adicionar ou remover usuários do grupo gcp-logging-export-viewers@example.com sem ter que editar as permissões de bucket do Cloud Storage para cada alteração nas permissões de leitura do usuário.

Como usar os registros exportados

Após a criação da exportação de registros com o filtro acima, os arquivos de registros começam a ocupar o bucket do Cloud Storage no projeto configurado. Para cada registro, é criada uma pasta separada no bucket, que é desmembrada em uma estrutura hierárquica baseada na data. É possível acessar os registros por meio do Console do Cloud, da ferramenta de linha de comando gsutil ou de uma API do Cloud IAM. A captura de tela a seguir mostra um exemplo de estrutura de pastas no Console do Cloud.

Exemplo de estrutura de pastas.

Cada arquivo de registros consiste em dados JSON que seguem os formatos de entrada de registro textPayload, protoPayload e jsonPayload. Com o tempo, os arquivos de registros no bucket do Cloud Storage estão sujeitos ao processo de ciclo de vida do Cloud Storage, que primeiro move os registros para o armazenamento Nearline, depois para o armazenamento Coldline e, por fim, os exclui com base na configuração.

Como conceder acesso externo

Talvez convenha conceder a usuários específicos acesso a registros exportados, por exemplo, a analistas de segurança, à equipe de DevOps e a auditores.

Estratégias de local de registros

Há várias opções para conceder acesso aos registros no Cloud Storage.

  • Crie cópias dos registros a compartilhar.

    Usando método manual ou programático, crie uma cópia de um arquivo de registros individual ou de um conjunto de arquivos de registros e coloque-a em um bucket separado do Cloud Storage. Em seguida, use as permissões de bucket separadas para compartilhar os registros com usuários específicos conforme apropriado.

    Pontos positivos: é possível limitar a quantidade de dados expostos apenas aos dados copiados.

    Pontos negativos: é preciso criar, compartilhar e gerenciar os conjuntos de dados e permissões separados, o que pode aumentar os custos.

  • Conceder acesso somente de leitura a todos os registros.

    Usando método manual ou programático, defina permissões de leitor ao bucket de exportação de registros do Cloud Storage, o que concede acesso a todas as exportações de registros.

    Pontos positivos: é fácil conceder o acesso.

    Pontos negativos: conceda acesso a todos os registros em vez de arquivos de registro específicos.

Estratégias de controle de acesso de usuário

Use as permissões de bucket do Cloud Storage para compartilhar as exportações de registros dele com contas específicas do Google ou de Grupos do Google.

  • Usar um Grupo do Google.

    Crie um Grupo do Google, como auditors@example.com, com acesso somente leitura ao bucket de exportação de registros do Cloud Storage. Em seguida, gerencie a lista de Contas do Google incluindo ou removendo auditores no Grupo do Google.

    Pontos positivos: é fácil gerenciar o acesso por meio de um grupo, porque há um objetivo claro de acesso de usuário.

    Pontos negativos: não é possível dizer quem tem acesso sem olhar para a associação do grupo.

  • Usar contas do Google individuais.

    Conceda acesso de Conta do Google individual ao bucket do Cloud Storage de exportação de registros para cada usuário que precisar dele.

    Pontos positivos: é fácil adicionar cada usuário de modo manual ou programático.

    Pontos negativos: não é possível discernir usuários de auditoria de outros leitores.

A seguir