명령줄을 사용하여 쿼리 결과 검증 - AWS CloudTrail

명령줄을 사용하여 쿼리 결과 검증

명령줄을 사용하여 쿼리 결과 및 서명 파일의 무결성을 검증할 수 있습니다.

사전 조건

명령줄을 사용하여 쿼리 결과 무결성을 검증하려면 다음 조건을 충족해야 합니다.

  • AWS에 대한 온라인 연결이 있어야 합니다.

  • 서명 및 쿼리 결과 파일을 포함하는 Amazon S3 버킷에 대한 읽기 액세스 권한이 있어야 합니다.

  • OpenSSL이 설치되어 있어야 합니다.

쿼리 결과 검증

명령줄을 사용하여 쿼리 결과를 검증하려면 다음 절차를 따르세요.

  1. aws S3 sync 명령을 사용하여 S3 버킷에서 쿼리 결과 및 서명 파일을 다운로드합니다. 쿼리 결과 및 서명 파일이 전송된 S3 URI와 S3 버킷 리전을 지정해야 합니다.

    aws s3 sync s3://s3-bucket-name/optional-prefix/AWSLogs/aws-account-ID/CloudTrail-Lake/Query/year/month/date/query-ID/ ./ --region region-name
  2. openssl dgst 명령을 사용하여 각 쿼리 결과 파일의 sha256 해시 값을 계산한 다음 이 값을 서명 파일의 해시 값과 비교합니다. 서명 파일에 포함된 필드에 대한 자세한 내용은 CloudTrail 서명 파일 구조 섹션을 참조하세요.

    openssl dgst -sha256 result_number.csv.gz
  3. printf 명령을 사용하여 서명을 확인하는 데 사용하는 퍼블릭 키 PEM 파일을 생성합니다.

    printf -- "-----BEGIN RSA PUBLIC KEY-----\n%s\n-----END RSA PUBLIC KEY-----" "public_key_content" | fold -w64 >> public_key_pkcs1.pem
  4. openssl rsa 명령을 사용하여 퍼블릭 키 PEM 파일을 로드 가능한 OpenSSL 형식으로 변환합니다.

    openssl rsa -RSAPublicKey_in -in public_key_pkcs1.pem -pubout -out public_key_x509.pem
  5. printfxxd 명령을 사용하여 서명 이진 파일을 새로 생성합니다. hash_signature를 서명 파일의 hashSignature 값으로 바꾸고 signature를 새로 생성하는 서명 파일의 이름으로 바꿉니다.

    printf "hash_signature" >> signature xxd -r -p signature signature.bin
  6. hash_list를 만들고 printf 명령을 사용하여 파일에 출력합니다. hash_list는 공백으로 구분된 각 쿼리 결과 파일의 files.fileHashValue 값을 포함하는 문자열입니다. 각 쿼리 결과 파일의 files.fileHashValue는 서명 파일에 제공됩니다.

    printf "hash_list" >> hash_list_file

    예를 들어, 서명 파일의 files 배열에 다음과 같은 세 개의 쿼리 결과 파일이 포함된 경우 hash_list 값은 "aaa bbb ccc"입니다.

    “files": [
 {
 "fileHashValue" : “aaa”,
 "fileName" : "result_1.csv.gz"
 }, {
 "fileHashValue" : “bbb”,
 "fileName" : "result_2.csv.gz"
 }, {
 "fileHashValue" : “ccc”,
 "fileName" : "result_3.csv.gz"
 } ],
  7. openssl dgst 명령을 사용하여 서명을 검증합니다.

    openssl dgst -sha256 -verify public_key_x509.pem -signature signature.bin hash_list_file

    서명이 올바르면 명령이 다음과 같은 출력을 반환합니다.

    Verified OK

    서명이 유효하지 않으면 명령이 다음과 같은 출력을 반환합니다.

    Verification Failure