에 대한 AWS KMS 주요 정책 구성 CloudTrail - AWS CloudTrail

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에 대한 AWS KMS 주요 정책 구성 CloudTrail

다음 세 가지 AWS KMS key 방법으로 생성할 수 있습니다.

  • CloudTrail 콘솔

  • AWS 관리 콘솔

  • 더 AWS CLI

참고

CloudTrail 콘솔에서 KMS 키를 생성하면 필요한 KMS 키 정책이 자동으로 CloudTrail 추가됩니다. 수동으로 정책 구문을 추가할 필요가 없습니다. 콘솔에서 생성된 기본 KMS 키 정책 CloudTrail 단원을 참조하세요.

AWS 관리 또는 에서 KMS 키를 생성하는 경우 키에 AWS CLI정책 섹션을 추가해야 해당 키와 함께 사용할 수 있습니다. CloudTrail 정책에서는 키를 CloudTrail 사용하여 로그 파일 및 이벤트 데이터 저장소를 암호화할 수 있도록 허용하고 지정한 사용자가 암호화되지 않은 형식으로 로그 파일을 읽을 수 있도록 허용해야 합니다.

다음 리소스를 참조하세요.

에서 사용할 필수 KMS 키 정책 섹션 CloudTrail

AWS 관리 콘솔 또는 를 사용하여 KMS 키를 만든 경우 KMS 키 정책에 최소한 다음 명령문을 추가해야 사용할 수 있습니다. AWS CLI CloudTrail

추적에 필요한 KMS 키 정책 요소

  1. CloudTrail 로그 암호화 권한을 활성화합니다. 암호화 권한 부여 섹션을 참조하십시오.

  2. CloudTrail 로그 복호화 권한을 활성화합니다. 암호 해독 권한 부여 단원을 참조하세요. S3 버킷 키와 함께 기존 S3 버킷을 사용하는 경우 SSE-KMS 암호화가 사용 설정된 추적을 생성하거나 업데이트하려면 kms:Decrypt 권한이 필요합니다.

  3. KMS 키 CloudTrail 속성을 설명할 수 있습니다. KMS 키 CloudTrail 속성을 설명할 수 있습니다. 단원을 참조하세요.

보안 모범 사례로 aws:SourceArn 조건 키를 KMS 키 정책에 추가합니다. IAM 글로벌 조건 키는 KMS 키를 특정 트레일 또는 트레일에만 CloudTrail 사용하도록 하는 aws:SourceArn 데 도움이 됩니다. aws:SourceArn의 값은 항상 KMS 키를 사용하는 추적 ARN(또는 추적 ARN의 배열)입니다. 기존 추적에 대한 KMS 키 정책에 aws:SourceArn 조건 키를 추가해야 합니다.

aws:SourceAccount 조건 키도 지원되지만 권장되지는 않습니다. aws:SourceAccount의 값은 추적 소유자의 계정 ID이거나 조직 추적의 경우 관리 계정 ID입니다.

중요

KMS 키 정책에 새 단원을 추가할 때 정책의 기존 단원을 변경하지 마세요.

트레일에 암호화가 활성화되어 있고 KMS 키가 비활성화되어 있거나 KMS 키 정책이 올바르게 구성되지 않은 경우 로그를 전송할 수 없습니다. CloudTrail CloudTrail

이벤트 데이터 스토어에 필요한 KMS 키 정책 요소

  1. CloudTrail 로그 암호화 권한을 활성화합니다. 암호화 권한 부여 섹션을 참조하십시오.

  2. CloudTrail 로그 복호화 권한을 활성화합니다. 암호 해독 권한 부여 섹션을 참조하십시오.

  3. KMS 키를 사용하여 이벤트 데이터 스토어 데이터를 암호화 및 복호화할 수 있는 권한을 사용자 및 역할에 부여합니다.

    이벤트 데이터 스토어를 생성하고 KMS 키로 암호화하거나 KMS 키로 암호화하는 이벤트 데이터 스토어에서 쿼리를 실행하는 경우 KMS 키에 대한 쓰기 권한이 있어야 합니다. KMS 키 정책은 이벤트 데이터 스토어에서 작업 (예: 쿼리) 을 실행하는 사용자가 액세스할 수 있어야 하고 KMS 키를 관리할 수 있어야 합니다. CloudTrail

  4. KMS 키 CloudTrail 속성을 설명할 수 있습니다. KMS 키 CloudTrail 속성을 설명할 수 있습니다. 섹션을 참조하십시오.

aws:SourceArnaws:SourceAccount 조건 키는 이벤트 데이터 스토어의 KMS 키 정책에서 지원되지 않습니다.

중요

KMS 키 정책에 새 섹션을 추가할 때 정책의 기존 섹션을 변경하지 마세요.

이벤트 데이터 스토어에 암호화가 활성화되어 있고 KMS 키가 비활성화 또는 삭제되거나 KMS 키 정책이 올바르게 구성되지 않은 경우 이벤트 데이터 스토어에 CloudTrail 이벤트를 전송할 CloudTrail 수 없습니다.

암호화 권한 부여

예 특정 CloudTrail 계정을 대신하여 로그를 암호화할 수 있습니다.

CloudTrail 특정 계정을 대신하여 KMS 키를 사용하여 로그를 암호화하려면 명시적인 권한이 필요합니다. 계정을 지정하려면 다음 필수 명령문을 KMS 키 정책에 추가하고 account-id, regiontrailName을 구성에 적절한 값으로 바꿉니다. EncryptionContext섹션에 추가 계정 ID를 추가하여 해당 계정이 KMS 키를 사용하여 로그 파일을 암호화하는 CloudTrail 데 사용할 수 있도록 할 수 있습니다.

보안 모범 사례로 aws:SourceArn 조건 키를 추적의 KMS 키 정책에 추가합니다. IAM 글로벌 조건 키를 aws:SourceArn 사용하면 특정 트레일 또는 CloudTrail 트레일에만 KMS 키를 사용할 수 있습니다.

{ "Sid": "Allow CloudTrail to encrypt logs", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:account-id:trail/*" } } }

CloudTrail Lake 이벤트 데이터 스토어 로그를 암호화하는 데 사용되는 KMS 키에 대한 정책에는 조건 키 또는 를 사용할 수 없습니다. aws:SourceArn aws:SourceAccount 다음은 이벤트 데이터 스토어 KMS 키 정책의 예입니다.

{ "Sid": "Allow CloudTrail to encrypt event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }

다음 예제 정책 설명은 다른 계정이 KMS 키를 사용하여 로그를 암호화하는 방법을 보여줍니다. CloudTrail

시나리오
  • KMS 키는 계정 111111111111에 있습니다.

  • 귀하 및 계정 222222222222 모두 로그를 암호화합니다.

정책에서 사용자 키로 암호화하는 하나 이상의 계정을 에 추가합니다. CloudTrail EncryptionContext 이렇게 하면 지정한 계정의 로그만 키를 사용하여 로그를 암호화하도록 제한됩니다 CloudTrail . 루트 계정 222222222222에 로그를 암호화할 수 있는 권한을 부여하면, 계정 관리자에게 해당 계정의 다른 사용자에게 필요한 권한을 암호화할 수 있는 권한을 위임합니다. 계정 관리자는 해당 IAM 사용자와 관련된 정책을 변경하여 이 작업을 수행합니다.

보안 모범 사례로 aws:SourceArn 조건 키를 KMS 키 정책에 추가합니다. IAM 글로벌 조건 키는 지정된 트레일에만 KMS 키를 CloudTrail 사용하도록 하는 aws:SourceArn 데 도움이 됩니다. 이 조건은 이벤트 데이터 스토어의 KMS 키 정책에서 지원되지 않습니다.

KMS 키 정책 문:

{ "Sid": "Enable CloudTrail encrypt permissions", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": [ "arn:aws:cloudtrail:*:111111111111:trail/*", "arn:aws:cloudtrail:*:222222222222:trail/*" ] }, "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" } } }

에서 사용할 KMS 키 정책을 편집하는 방법에 대한 자세한 내용은 개발자 CloudTrail 안내서의 키 정책 편집을 참조하십시오. AWS Key Management Service

암호 해독 권한 부여

CloudTrail 구성에 KMS 키를 추가하기 전에 필요한 모든 사용자에게 암호 해독 권한을 부여하는 것이 중요합니다. 암호화 권한이 있지만 복호화 권한이 없는 사용자는 암호화된 로그를 읽을 수 없습니다. S3 버킷 키와 함께 기존 S3 버킷을 사용하는 경우 SSE-KMS 암호화가 사용 설정된 추적을 생성하거나 업데이트하려면 kms:Decrypt 권한이 필요합니다.

로그 복호화 권한 활성화 CloudTrail

키 사용자에게 암호화된 로그 파일을 읽을 수 있는 CloudTrail 명시적 권한을 부여해야 합니다. 사용자가 암호화된 로그를 읽을 수 있도록 하려면 다음 필수 문을 KMS 키 정책에 추가하고, Principal 단원을 수정함으로써 KMS 키를 사용해 복호화할 수 있는 모든 보안 주체에 대한 코드 줄을 추가합니다.

{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/username" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

다음은 CloudTrail 서비스 주체가 트레일 로그를 해독하도록 허용하는 데 필요한 예제 정책입니다.

{ "Sid": "Allow CloudTrail to decrypt a trail", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

CloudTrail Lake 이벤트 데이터 저장소에 사용되는 KMS 키의 암호 해독 정책은 다음과 비슷합니다. Principal의 값으로 지정된 사용자 또는 역할 ARN에는 이벤트 데이터 스토어를 생성 또는 업데이트하거나, 쿼리를 실행하거나, 쿼리 결과를 가져오기 위한 복호화 권한이 필요합니다.

{ "Sid": "Enable user key permissions for event data stores" "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/username" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

다음은 CloudTrail 서비스 주체가 이벤트 데이터 스토어 로그를 해독하도록 허용하는 데 필요한 예제 정책입니다.

{ "Sid": "Allow CloudTrail to decrypt an event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

계정의 사용자가 KMS 키를 사용하여 추적 로그를 복호화하도록 허용

이 정책 구문은 계정의 사용자 또는 역할이 키를 사용하여 계정의 S3 버킷에서 암호화된 로그를 읽을 수 있도록 허용하는 방법을 보여 줍니다.

예 시나리오
  • KMS 키, S3 버킷, IAM 사용자 Bob은 계정 111111111111에 있습니다.

  • IAM 사용자 Bob에게 S3 버킷의 CloudTrail 로그를 해독할 권한을 부여합니다.

키 정책에서 IAM 사용자 Bob에 대한 CloudTrail 로그 암호 해독 권한을 활성화합니다.

KMS 키 정책 문:

{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/Bob" }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
주제

    다른 계정의 사용자가 KMS 키를 사용하여 추적 로그를 복호화하도록 허용

    다른 계정의 사용자가 KMS 키를 사용하여 추적 로그를 복호화하지만 이벤트 데이터 스토어 로그는 복호화하지 않도록 허용할 수 있습니다. 키 정책에 필요한 변경 사항은 S3 버킷이 귀하의 계정에 있는지 아니면 다른 계정에 있는지에 따라 달라집니다.

    다른 계정에 있는 버킷의 사용자가 로그의 암호를 해독하도록 허용

    이 정책 문은 다른 계정의 IAM 사용자 또는 역할이 귀하의 키를 사용하여 다른 계정의 S3 버킷에서 암호화된 로그를 읽을 수 있도록 허용하는 방법을 보여 줍니다.

    시나리오
    • KMS 키는 계정 111111111111에 있습니다.

    • IAM 사용자 Alice와 S3 버킷은 계정 222222222222에 있습니다.

    이 경우 계정에서 로그를 해독할 수 있는 CloudTrail 권한을 부여하고 Alice의 IAM 사용자 정책에 계정에 222222222222 있는 키를 사용할 수 있는 권한을 부여합니다. KeyA 111111111111

    KMS 키 정책 문:

    { "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::222222222222:root" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

    Alice의 IAM 사용자 정책 구문:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:111111111111:key/KeyA" } ] }

    다른 계정의 사용자가 버킷에서 추적 로그를 복호화하도록 허용

    이 정책은 다른 계정이 귀하의 키를 사용하여 S3 버킷에서 암호화된 로그를 읽는 방법을 보여 줍니다.

    예 시나리오
    • KMS 키 및 S3 버킷은 계정 111111111111에 있습니다.

    • 버킷에서 로그를 읽는 사용자는 계정 222222222222에 있습니다.

    이 시나리오를 활성화하려면 계정의 IAM 역할에 CloudTrailReadRole대한 암호 해독 권한을 활성화한 다음 다른 계정에 해당 역할을 수임할 권한을 부여해야 합니다.

    KMS 키 정책 문:

    { "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::11111111111:role/CloudTrailReadRole" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }

    CloudTrailReadRole신뢰 기관 정책 설명:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "sts:AssumeRole" } ] }

    에서 사용할 KMS 키 정책을 편집하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 키 정책 편집을 참조하십시오. CloudTrail

    KMS 키 CloudTrail 속성을 설명할 수 있습니다.

    CloudTrail KMS 키의 속성을 설명할 수 있는 기능이 필요합니다. 이 기능을 사용하려면 KMS 키 정책에 다음 필수 문을 있는 그대로 추가합니다. 이 명령문은 지정한 다른 권한 CloudTrail 이외의 권한은 부여하지 않습니다.

    보안 모범 사례로 aws:SourceArn 조건 키를 KMS 키 정책에 추가합니다. IAM 글로벌 조건 키는 특정 트레일 또는 트레일에만 KMS 키를 CloudTrail 사용하도록 하는 aws:SourceArn 데 도움이 됩니다.

    { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:account-id:trail/trail-name" } } }

    KMS 키 정책 편집에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드키 정책 편집을 참조하세요.