CloudTrail 다이제스트 파일 구조 - AWS CloudTrail

CloudTrail 다이제스트 파일 구조

각 다이제스트 파일은 마지막 시간 중 Amazon S3 버킷에 전달된 로그 파일 이름, 이러한 로그 파일의 해시 값 및 이전 다이제스트 파일의 디지털 서명을 포함합니다. 현재 다이제스트 파일의 서명은 다이제스트 파일 객체의 메타데이터 속성에 저장됩니다. 디지털 서명 및 해시는 로그 파일과 다이제스트 파일 자체의 무결성을 검증하는 데 사용됩니다.

다이제스트 파일 위치

다이제스트 파일은 이 구문을 따른 Amazon S3 버킷 위치로 전송됩니다.

s3://s3-bucket-name/optional-prefix/AWSLogs/aws-account-id/CloudTrail-Digest/ region/digest-end-year/digest-end-month/digest-end-date/ aws-account-id_CloudTrail-Digest_region_trail-name_region_digest_end_timestamp.json.gz
참고

조직 추적의 경우 다음과 같이 버킷 위치에도 조직 단위 ID가 포함됩니다.

s3://s3-bucket-name/optional-prefix/AWSLogs/O-ID/aws-account-id/CloudTrail-Digest/ region/digest-end-year/digest-end-month/digest-end-date/ aws-account-id_CloudTrail-Digest_region_trail-name_region_digest_end_timestamp.json.gz

샘플 다이제스트 파일 내용

다음 예시 다이제스트 파일에는 CloudTrail 로그에 대한 정보가 포함됩니다.

{ "awsAccountId": "111122223333", "digestStartTime": "2015-08-17T14:01:31Z", "digestEndTime": "2015-08-17T15:01:31Z", "digestS3Bucket": "S3-bucket-name", "digestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/17/111122223333_CloudTrail-Digest_us-east-2_your-trail-name_us-east-2_20150817T150131Z.json.gz", "digestPublicKeyFingerprint": "31e8b5433410dfb61a9dc45cc65b22ff", "digestSignatureAlgorithm": "SHA256withRSA", "newestEventTime": "2015-08-17T14:52:27Z", "oldestEventTime": "2015-08-17T14:42:27Z", "previousDigestS3Bucket": "S3-bucket-name", "previousDigestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/17/111122223333_CloudTrail-Digest_us-east-2_your-trail-name_us-east-2_20150817T140131Z.json.gz", "previousDigestHashValue": "97fb791cf91ffc440d274f8190dbdd9aa09c34432aba82739df18b6d3c13df2d", "previousDigestHashAlgorithm": "SHA-256", "previousDigestSignature": "50887ccffad4c002b97caa37cc9dc626e3c680207d41d27fa5835458e066e0d3652fc4dfc30937e4d5f4cc7f796e7a258fb50a43ac427f2237f6e505d4efaf373d156e15e3b68dea9f58111d395b62628d6bd367a9024d2183b5c5f6e19466d3a996b92df705bc997b8a0e13430f241d733cf95df4e41bb6c304c3f58363043572ea57a27085639ce187e679c0d81c7519b1184fa77fb7ab0b0e40a32dace6e1eefc3995c5ae182da49b62b26398cebb52a2201a6387b75b89c83e5570bcb9bba6c34a80f2f00a1c6ebe07d1ff149eccd812dc805bb3eeff6657db32a6cb48d2d096404eb76181877bc6ebb8cd0b23f823200155b2fd8848d428e46e8456328a", "logFiles": [ { "s3Bucket": "S3-bucket-name", "s3Object": "AWSLogs/111122223333/CloudTrail/us-east-2/2015/08/17/111122223333_CloudTrail_us-east-2_20150817T1445Z_9nYN7gp2eWAJHIfT.json.gz", "hashValue": "9bb6196fc6b84d6f075a56548feca262bd99ba3c2de41b618e5b6e22c1fc71f6", "hashAlgorithm": "SHA-256", "newestEventTime": "2015-08-17T14:52:27Z", "oldestEventTime": "2015-08-17T14:42:27Z" } ] }

다이제스트 파일 필드 설명

다이제스트 파일의 각 필드에 대한 설명은 다음과 같습니다.

awsAccountId

다이제스트 파일이 전달한 AWS 계정 ID입니다.

digestStartTime

다이제스트 파일이 다루는 시작 UTC 시간 범위이며 CloudTrail이 로그 파일을 전송한 시간의 참조로 선택됩니다. 이는 시간 범위가 [Ta, Tb]인 경우 다이제스트가 Ta와 Tb 사이에 고객에게 전달된 모든 로그 파일을 포함한다는 것을 의미합니다.

digestEndTime

다이제스트 파일이 다루는 종료 UTC 시간 범위이며 CloudTrail이 로그 파일을 전송한 시간의 참조로 선택됩니다. 이는 시간 범위가 [Ta, Tb]인 경우 다이제스트가 Ta와 Tb 사이에 고객에게 전달된 모든 로그 파일을 포함한다는 것을 의미합니다.

digestS3Bucket

현재 다이제스트 파일이 전송된 Amazon S3 버킷 이름입니다.

digestS3Object

현재 다이제스트 파일의 Amazon S3 객체 키(즉, Amazon S3 버킷 위치)입니다. 문자열의 처음 두 리전은 다이제스트 파일이 전달된 리전을 표시합니다. 마지막 리전(your-trail-name 다음)은 추적의 홈 리전입니다. 홈 리전은 추적이 생성된 리전입니다. 리전 추적이 여러 개인 경우 이것은 다이제스트 파일이 전달된 리전과 달라질 수 있습니다.

newestEventTime

다이제스트의 로그 파일의 모든 이벤트 사이에서 가장 최근 이벤트의 UTC 시간입니다.

oldestEventTime

다이제스트의 로그 파일의 모든 이벤트 사이에서 가장 이전 이벤트의 UTC 시간입니다.

참고

다이제스트 파일이 늦게 전달된 경우 oldestEventTime 값은 digestStartTime 값 이전이 됩니다.

previousDigestS3Bucket

이전 다이제스트 파일이 전송된 Amazon S3 버킷입니다.

previousDigestS3Object

이전 다이제스트 파일의 Amazon S3 객체 키(즉, Amazon S3 버킷 위치)입니다.

previousDigestHashValue

압축되지 않은 이전 다이제스트 파일의 16진수 인코딩 해시 값입니다.

previousDigestHashAlgorithm

이전 다이제스트 파일 해싱에 사용된 해시 알고리즘 이름입니다.

publicKeyFingerprint

이 다이제스트 파일을 서명하는 데 사용된 프라이빗 키와 일치하는 퍼블릭 키의 16진수 인코딩 지문입니다. AWS CLI 또는 CloudTrail API를 사용하여 다이제스트 파일에 해당되는 시간 범위의 퍼블릭 키를 검색할 수 있습니다. 반환된 퍼블릭 키 중에서 이 값과 일치하는 지문을 다이제스트 파일 검증에 사용할 수 있습니다. 다이제스트 파일의 퍼블릭 키 검색에 대한 자세한 내용은 AWS CLI list-public-keys 명령 또는 CloudTrail ListPublicKeys API를 참조하세요.

참고

CloudTrail은 리전마다 다른 프라이빗/퍼블릭 키 페어를 사용합니다. 각 다이제스트 파일은 해당 리전에 고유한 프라이빗 키로 서명합니다. 그러므로 특정 리전에서 다이제스트 파일을 검증할 때 해당 퍼블릭 키의 동일한 리전에서 확인해야 합니다.

digestSignatureAlgorithm

다이제스트 파일에 서명하는 데 사용하는 알고리즘입니다.

logFiles.s3Bucket

로그 파일에 대한 Amazon S3 버킷 이름입니다.

logFiles.s3Object

현재 로그 파일의 Amazon S3 객체 키입니다.

logFiles.newestEventTime

로그 파일에서 가장 최근 이벤트의 UTC 시간입니다. 또한 이 시간은 로그 파일 자체의 타임스탬프에도 대응합니다.

logFiles.oldestEventTime

로그 파일에서 가장 이전 이벤트의 UTC 시간입니다.

logFiles.hashValue

압축되지 않은 로그 파일 콘텐츠의 16진수 인코딩 해시 값입니다.

logFiles.hashAlgorithm

로그 파일 해싱에 사용하는 해시 알고리즘입니다.

시작 다이제스트 파일

로그 파일 무결성 검증이 시작되면 시작 다이제스트 파일이 생성됩니다. 또한 시작 다이제스트 파일은 로그 파일 무결성 검증이 다시 시작될 때도 생성됩니다(비활성화 후 로그 파일 무결성 검증을 다시 활성화하거나 로깅 중지 후 검증이 활성화된 로깅 다시 시작). 시작 다이제스트 파일에서 이전 다이제스트 파일과 관련된 다음 필드는 null이 됩니다.

  • previousDigestS3Bucket

  • previousDigestS3Object

  • previousDigestHashValue

  • previousDigestHashAlgorithm

  • previousDigestSignature

'빈' 다이제스트 파일

CloudTrail은 다이제스트 파일이 나타나는 한 시간 동안 계정에서 API 활동이 없어도 다이제스트 파일을 전송합니다. 이는 다이제스트 파일이 보고한 한 시간 동안 로그 파일이 전달되지 않았다고 주장해야 할 때 유용할 수 있습니다.

다음 예제는 API 활동이 없는 한 시간을 기록한 다이제스트 파일 콘텐츠를 표시합니다. 참고로 다이제스트 파일 콘텐츠의 끝에서 logFiles:[ ] 필드는 비어 있습니다.

{ "awsAccountId": "111122223333", "digestStartTime": "2015-08-20T17:01:31Z", "digestEndTime": "2015-08-20T18:01:31Z", "digestS3Bucket": "example-bucket-name", "digestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/20/111122223333_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150820T180131Z.json.gz", "digestPublicKeyFingerprint": "31e8b5433410dfb61a9dc45cc65b22ff", "digestSignatureAlgorithm": "SHA256withRSA", "newestEventTime": null, "oldestEventTime": null, "previousDigestS3Bucket": "example-bucket-name", "previousDigestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/20/111122223333_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150820T170131Z.json.gz", "previousDigestHashValue": "ed96c4bac9eaa8fe9716ca0e515da51938be651b1db31d781956416a9d05cdfa", "previousDigestHashAlgorithm": "SHA-256", "previousDigestSignature": "82705525fb0fe7f919f9434e5b7138cb41793c776c7414f3520c0242902daa8cc8286b29263d2627f2f259471c745b1654af76e2073264b2510fd45236b3aea4d80c0e8e6455223d7bd54ff80af0edf22a5f14fa856626daec919f0591479aa4f213787ba1e1076328dcf8ff624e03a977fa5612dcf58594c590fd8c1c5b48bddf43fc84ecc00b41bedd0ff7f293c3e2de8dcdc78f98b03e17577f5822ba842399d69eb79921c0429773509520e08c8b518702d987dfbb3a4e5d8c5f17673ce1f989dfff82d4becf24e452f20d3bcac94ad50131f93e57f10155536acb54c60efbe9d57228c2b930bc6082b2318e3ccd36834a8e835b8d112dbf32145f445c11", "logFiles": [] }

다이제스트 파일 서명

다이제스트 파일의 서명 정보는 Amazon S3 다이제스트 파일 객체의 두 객체 메타데이터 속성에 있습니다. 각 다이제스트 파일에는 다음 메타데이터 항목이 있습니다.

  • x-amz-meta-signature

    다이제스트 파일 서명의 16진수 인코딩 값입니다. 다음은 서명의 예입니다.

    3be472336fa2989ef34de1b3c1bf851f59eb030eaff3e2fb6600a082a23f4c6a82966565b994f9de4a5989d053d9d15d20fc5c43e66358652d93326550a4acc5c5f541bb52e9b455897ab723bd7cbabfe963a406a41d600f3658f7a3135e5ed9fcae7b79bb5857d1e5eb78fcce8595ce0ade2f3ad1d9f2d62be7bc4660d83166ce24586489b7da9ee9883eaf0b9efabb5dd3cbba565cc4aab5c9c46c9fa7e9cda310afcc5e8adcd9e48d0597ec5f8174a52c3bebb3e845eeb1d18904fbf4cc14cd117080098e10022ddf55e017a9431446acad8560de0ba1e477af9f8a3048bc6196350adad0cc0cb4ab99b5e7c9944437a3c674a038009220684ced7be07b4f 28f1cc237f372264a51b611c01da429565def703539f4e71009051769469231bc22232fa260df02740047af532229885ea2b0e95ecd353326b7104941e0cbddb076a391f1fcf2923c19565f4841770a78723451aeb732ff1b6162dc40e601fc6720bc5325987942ebd817783b322f0ac77698523bf742fdea7aa44f4911b3101221b7e1233387f16a52077610498f4a1254211258e37da0fb4cb207aef593b4c1baa13674e85acc52046b3adb889e63331a66abac5de7e42ffdd6952987c31ae871650e130bd2e63bfe145b22bbd39ea192210f6df64d49b888a321e02d3fc4cf126accae30d2857ccd6b2286a7c9feba6c35c44161b24147d645e6ca26844ba 05d3ffcb5d2dd5dc28f8bb5b7993938e8a5f912a82b448a367eccb2ec0f198ba71e23eb0b97278cf65f3c8d1e652c6de33a22ca8428821ffc95bf8b726ba9f37cfbc20c54dc5bd6159bdea1c4d951b68cb8e0528852c55bb0c5e499ea60560f7c2bb3af7f694407da863a2594f7a2f2838cb09254afbaf8003587746e719a0437f85eeffae534f283f3837eb939a9bccc3c71573500661245891051231b580ac92d9e0e68c6f47ad38975f493e2c40e7f303353c4adc7d563ef1e875977afac2e085f0c824045d998c9543d8a3293ad3c063b7a109d0bfd84b0b1e3f72c4f057e744e6a2cf9cc97727b08584f44bfa47799c5072b60f0b619aea88a17de585e9
  • x-amz-meta-signature-algorithm

    다음은 다이제스트 서명을 생성하는 데 사용되는 알고리즘의 예제 값입니다.

    SHA256withRSA

다이제스트 파일 체인화

각 다이제스트 파일은 이전 다이제스트 파일에 대한 참조를 포함하므로 다이제스트 파일이 삭제된 경우를 감지하기 위해 AWS CLI와 같은 유효성 검사 도구를 허용하는 "체인화"가 가능합니다. 또한 가장 최근 것부터 먼저 시작해 연속적으로 조사할 수 있도록 지정한 시간 범위에서 다이제스트 파일을 허용합니다.

참고

로그 파일 무결성 검증을 비활성화하면 한 시간 후 다이제스트 파일 체인이 끊어집니다. CloudTrail은 로그 파일 무결성 검증이 비활성화된 기간 동안 전달된 로그 파일에 대한 다이제스트 파일을 생성하지 않습니다. 예를 들어, 1월 1일 정오에 로그 파일 무결성 검증을 활성화하고, 1월 2일 정오에 비활성화하며, 1월 10일 정오에 다시 활성화하는 경우 1월 2일 정오부터 1월 10일 정오까지 전달된 로그 파일에 대한 다이제스트 파일이 생성되지 않습니다. CloudTrail 로깅을 중지하거나 추적을 삭제할 때마다 동일하게 적용됩니다.

로깅이 중지되거나 추적이 삭제되면 CloudTrail이 최종 다이제스트 파일을 전송합니다. 이 다이제스트 파일은 최대 및 StopLogging 이벤트를 비롯한 이벤트를 다루는 남은 로그 파일에 대한 정보를 포함합니다.