Validar a integridade dos arquivos de log do CloudTrail com a AWS CLI - AWS CloudTrail

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Validar a integridade dos arquivos de log do CloudTrail com a AWS CLI

Para validar os log com a AWS Command Line Interface, use o comando validate-logs do CloudTrail. O comando usa os arquivos de resumo fornecidos ao bucket do Amazon S3 para executar a validação. Para obter informações sobre os arquivos de resumo, consulte Estrutura de arquivo de resumo do CloudTrail.

A AWS CLI permite que você detecte os seguintes tipos de alterações:

  • Modificar ou excluir os arquivos de log do CloudTrail

  • Modificar ou excluir os arquivos de resumo do CloudTrail

  • Modificação ou exclusão de ambos

nota

A AWS CLI valida somente os arquivos de log aos quais os arquivos de resumo fazem referência. Para obter mais informações, consulte Verificar se um arquivo específico foi fornecido pelo CloudTrail.

Pré-requisitos

Para validar a integridade dos arquivos de log com a AWS CLI, as seguintes condições precisam ser atendidas:

  • Você precisa ter conectividade online com a AWS.

  • Você precisa ter acesso de leitura ao bucket do Amazon S3 que contém os arquivos de resumo e de log.

  • Os arquivos de resumo e de log não podem ter sido movidos do local original do Amazon S3 em que o CloudTrail os forneceu.

nota

Os arquivos de log que foram baixados para o disco local não podem ser validados com a AWS CLI. Para obter informações sobre como criar suas próprias ferramentas para validação, consulte Implementações personalizadas da validação da integridade do arquivo de CloudTrail log.

validate-logs

Sintaxe

Veja a seguir a sintaxe de validate-logs. Os parâmetros opcionais são mostrados entre colchetes.

aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <bucket-name>] [--s3-prefix <prefix>] [--account-id <account-id>] [--verbose]

nota

O comando validate-logs é específico da região. Você deve especificar a opção global --region para validar os registros de um Região da AWS específico.

Opções

Veja a seguir as opções de linha de comando de validate-logs. As opções --trail-arn e --start-time são obrigatórias. A opção --account-id também é necessária para trilhas organizacionais.

--start-time

Especifica que os arquivos de log fornecidos no horário UTC especificado ou depois dele serão validados. Exemplo: 2015-01-08T05:21:42Z.

--end-time

Opcionalmente, especifica que os arquivos de log fornecidos no horário UTC especificado ou antes dele serão validados. O valor padrão é o horário UTC atual (Date.now()). Exemplo: 2015-01-08T12:31:41Z.

nota

Para o período especificado, o comando validate-logs verifica somente os arquivos de log que são referenciados em seus arquivos de resumo correspondentes. Nenhum outro arquivo de log no bucket do Amazon S3 é verificado. Para obter mais informações, consulte Verificar se um arquivo específico foi fornecido pelo CloudTrail.

--s3-bucket

Opcionalmente, especifica o bucket do Amazon S3 em que os arquivos de resumo são armazenados. Se um nome de bucket não for especificado, a AWS CLI o recuperará ao chamar DescribeTrails().

--s3-prefix

Opcionalmente, especifica o prefixo do Amazon S3 em que os arquivos de resumo são armazenados. Se não for especificado, a AWS CLI o recuperará ao chamar DescribeTrails().

nota

Você deve usar essa opção somente se o prefixo atual for diferente daquele que estava em uso durante o período que você especificar.

--account-id

Opcionalmente, especifica a conta para validar os logs. Esse parâmetro é necessário para trilhas da organização para validação de logs da conta específica dentro de uma organização.

--trail-arn

Especifica o Nome de recurso da Amazon (ARN) da trilha a ser validada. O formato de uma trilha que o Nome de recurso da Amazon (ARN) segue.

arn:aws:cloudtrail:us-east-2:111111111111:trail/MyTrailName
nota

Para obter o Nome de recurso da Amazon (ARN) de uma trilha, você pode usar o comando describe-trails antes de executar validate-logs.

Convém especificar o prefixo e o nome do bucket, além do Nome de recurso da Amazon (ARN) da trilha, se os arquivos de log foram fornecidos a mais de um bucket no período especificado e você quiser restringir a validação aos arquivos de log em apenas um dos buckets.

--verbose

Opcionalmente, fornece informações de validação de cada arquivo de log ou de compilação no período especificado. Os resultados indicam se o arquivo permanece inalterado ou foi modificado ou excluído. No modo não detalhado (o padrão), as informações são retornadas somente para os casos em que havia uma falha de validação.

Exemplo

O exemplo a seguir valida os arquivos de log do horário de início especificado até o presente, usando o bucket do Amazon S3 configurado para a trilha atual e especificando os resultados detalhados.

aws cloudtrail validate-logs --start-time 2015-08-27T00:00:00Z --end-time 2015-08-28T00:00:00Z --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/my-trail-name --verbose

Como o validate-logs funciona

O comando validate-logs começa validando o arquivo de resumo mais recente no período especificado. Primeiro, ele verifica se o arquivo de resumo foi baixado do local ao qual ele afirma que pertence. Em outras palavras, se a CLI fizer download do arquivo de resumo df1 do local do S3 p1, validate-logs verificará se p1 == df1.digestS3Bucket + '/' + df1.digestS3Object.

Se a assinatura do arquivo de resumo for válida, ela verificará o valor de hash de cada um dos logs referenciados no arquivo de resumo. Então, o comando volta no tempo, validando os arquivos de resumo anteriores e seus arquivos de log referenciados sucessivamente. Ele continuará até que o valor especificado para start-time seja atingido ou até que a cadeia de compilação termine. Se um arquivo de resumo é ausente ou não é válido, o período que não pode ser validado é indicado nos resultados.

Resultados da validação

Os resultados da validação começam com um cabeçalho de resumo no seguinte formato:

Validating log files for trail trail_ARN between time_stamp and time_stamp

Cada linha dos resultados principais contém os resultados da validação para um único arquivo de resumo ou de log no seguinte formato:

<Digest file | Log file> <S3 path> <Validation Message>

A tabela a seguir descreve as possíveis mensagens de validação do arquivo de log e de compilação.

Tipo de arquivo Mensagem de validação Descrição
Digest file valid A assinatura do arquivo de resumo é válida. Os arquivos de log aos quais ela faz referência podem ser verificados. Essa mensagem é incluída apenas no modo detalhado.
Digest file INVALID: has been moved from its original location O bucket do S3 ou o objeto do S3 do qual o arquivo de resumo foi recuperado não corresponde aos locais do bucket do S3 ou do objeto do S3 que são registrados no próprio arquivo de resumo.
Digest file INVALID: invalid format O formato do arquivo de resumo é inválido. Os arquivos de log correspondentes ao período que o arquivo de resumo representa não podem ser validados.
Digest file INVALID: not found O arquivo de resumo não foi encontrado. Os arquivos de log correspondentes ao período que o arquivo de resumo representa não podem ser validados.
Digest file INVALID: public key not found for fingerprint impressão digital A chave pública correspondente à impressão digital registrada no arquivo de resumo não foi encontrada. O arquivo de resumo não pode ser validado.
Digest file INVALID: signature verification failed A assinatura do arquivo de resumo não é válida. Como o arquivo de resumo não é válido, os arquivos de log aos quais ele faz referência não podem ser validados, e nenhuma declaração pode ser feita sobre a atividade da API neles.
Digest file INVALID: Unable to load PKCS #1 key with fingerprint impressão digital Como a chave pública DER codificada no formato PKCS #1 que contém a impressão digital especificada não pode ser carregada, o arquivo de resumo não pode ser validado.
Log file valid O arquivo de log foi validado e não foi modificado desde o horário do fornecimento. Essa mensagem é incluída apenas no modo detalhado.
Log file INVALID: hash value doesn't match O hash do arquivo de log não é correspondente. O arquivo de log foi modificado depois de ser fornecido pelo CloudTrail.
Log file INVALID: invalid format O formato do arquivo de log é inválido. O arquivo de log não pode ser validado.
Log file INVALID: not found O arquivo de log não foi encontrado e não pode ser validado.

A saída inclui informações resumidas sobre os resultados retornados.

Exemplos de resultados

Detalhado

O exemplo de comando validate-logs usa o sinalizador --verbose e produz o exemplo de resultado a seguir. [...] indica que o resultado de amostra foi abreviado.

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z --verbose
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://example-bucket/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T201728Z.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1925Z_WZZw1RymnjCRjxXc.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_POuvV87nu6pfAV2W.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1930Z_l2QgXhAKVm1QXiIA.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_eQJteBBrfpBCqOqw.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1950Z_9g5A6qlR2B5KaRdq.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_i4DNCC12BuXd6Ru7.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_Sg5caf2RH6Jdx0EJ.json.gz valid Digest file s3://example-bucket/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T191728Z.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1910Z_YYSFiuFQk4nrtnEW.json.gz valid [...] Log file s3://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1055Z_0Sfy6m9f6iBzmoPF.json.gz valid Log file s3://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1040Z_lLa3QzVLpOed7igR.json.gz valid Digest file s3://example-bucket/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Digest file s3://example-bucket/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T091728Z.json.gz valid Log file s3://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T0830Z_eaFvO3dwHo4NCqqc.json.gz valid Digest file s3://example-bucket/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T081728Z.json.gz valid Digest file s3://example-bucket/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T071728Z.json.gz valid [...] Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2245Z_mbJkEO5kNcDnVhGh.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2225Z_IQ6kXy8sKU03RSPr.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2230Z_eRPVRTxHQ5498ROA.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2255Z_IlWawYZGvTWB5vYN.json.gz valid Digest file s3://example-bucket/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/08/31/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150831T221728Z.json.gz valid Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

Não detalhado

O exemplo de comando validate-logs não usa o sinalizador --verbose. No exemplo de resultado a seguir, um erro foi encontrado. Somente o cabeçalho, o erro e as informações resumidas são retornados.

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://example-bucket/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

Verificar se um arquivo específico foi fornecido pelo CloudTrail

Para verificar se um arquivo específico no seu bucket foi fornecido pelo CloudTrail, execute validate-logs no modo detalhado para o período que inclui o arquivo. Se o arquivo aparecer no resultado de validate-logs, isso significa que o arquivo foi fornecido pelo CloudTrail.