본문 바로가기
[AWS-DR]/CloudTrail

[참고] CloudTrail에 대한 AWS KMS 키 정책 구성!!

by METAVERSE STORY 2024. 6. 26.
반응형
728x170

 

 

 

참고문서 :
[1] https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html
[2] https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html#create-kms-key-policy-for-cloudtrail-decrypt

 

 

CloudTrail에 대한 AWS KMS 키 정책 구성

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

  • CloudTrail 콘솔
  • AWS 관리 콘솔
  • AWS CLI

 

메모

CloudTrail 콘솔에서 KMS 키를 생성하면 CloudTrail이 필요한 KMS 키 정책을 추가합니다. 정책 설명을 수동으로 추가할 필요는 없습니다. CloudTrail 콘솔에서 생성된 기본 KMS 키 정책을 참조하십시오 .

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

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

  • AWS CLI를 사용하여 KMS 키를 생성하려면 create-key 를 참조하십시오 .
  • CloudTrail에 대한 KMS 키 정책을 편집하려면 AWS Key Management Service Developer Guide  키 정책 편집을 참조하십시오 .
  • CloudTrail이 AWS KMS를 사용하는 방법에 대한 기술 세부 정보는 AWS Key Management Service Developer Guide  AWS CloudTrail이 AWS KMS를 사용하는 방법을 참조하십시오 .

CloudTrail과 함께 사용하기 위한 필수 KMS 주요 정책 섹션

 

AWS Management 콘솔 또는 AWS CLI를 사용하여 KMS 키를 생성한 경우 CloudTrail에서 작동하려면 최소한 KMS 키 정책에 다음 명령문을 추가해야 합니다.

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

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

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

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

중요한

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

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

이벤트 데이터 저장소에 필요한 KMS 주요 정책 요소

  1. CloudTrail 로그 암호화 권한을 활성화합니다. 암호화 권한 부여를 참조하세요 .
  2. CloudTrail 로그 암호 해독 권한을 활성화합니다. 암호 해독 권한 부여를 참조하세요 .
  3. KMS 키를 사용하여 이벤트 데이터 저장소 데이터를 암호화하고 해독할 수 있는 권한을 사용자 및 역할에 부여합니다.
  4. 이벤트 데이터 저장소를 생성하고 이를 KMS 키로 암호화하거나 KMS 키로 암호화하는 이벤트 데이터 저장소에 대해 쿼리를 실행하는 경우 KMS 키에 대한 쓰기 액세스 권한이 있어야 합니다. KMS 키 정책에는 CloudTrail에 대한 액세스 권한이 있어야 하며, KMS 키는 이벤트 데이터 스토어에서 작업(예: 쿼리)을 실행하는 사용자가 관리할 수 있어야 합니다.
  5. CloudTrail을 활성화하여 KMS 키 속성을 설명합니다. KMS 키 속성을 설명하려면 CloudTrail 활성화를 참조하십시오 .

aws:SourceArn이벤트 데이터 저장소에 대한 KMS 키 정책에서는 및 조건 aws:SourceAccount키가 지원되지 않습니다.

중요한

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

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

암호화 권한 부여

 
예 CloudTrail이 특정 계정을 대신하여 로그를 암호화하도록 허용

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

보안 모범 사례로 aws:SourceArn추적에 대한 KMS 키 정책에 조건 키를 추가합니다. IAM 전역 조건 키는 aws:SourceArnCloudTrail이 특정 추적에 대해서만 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:SourceArnKMS 키 정책에 조건 키를 추가합니다. IAM 전역 조건 키는 aws:SourceArnCloudTrail이 지정된 추적에 대해서만 KMS 키를 사용하도록 하는 데 도움이 됩니다. 이 조건은 이벤트 데이터 저장소에 대한 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"
    }
  }
}

CloudTrail에 사용할 KMS 키 정책 편집에 대한 자세한 내용은 AWS Key Management Service Developer Guide의 키 정책 편집을 참조하십시오.

복호화 권한 부여

 

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

CloudTrail 로그 암호 해독 권한 활성화

키 사용자에게는 CloudTrail이 암호화한 로그 파일을 읽을 수 있는 명시적인 권한이 부여되어야 합니다. 사용자가 암호화된 로그를 읽을 수 있도록 하려면 KMS 키 정책에 다음 필수 설명을 추가하고 PrincipalKMS 키를 사용하여 해독할 수 있도록 하려는 모든 보안 주체에 대한 줄을 추가하도록 섹션을 수정합니다.

 
{
  "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에 account 아래의 로그를 해독할 수 있는 권한을 부여하고 , Alice의 IAM 사용자 정책에 account 에 있는 222222222222키를 사용할 수 있는 권한을 부여합니다 .KeyA111111111111

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"
    }
  ]
 }

CloudTrail에 사용할 KMS 키 정책 편집에 대한 자세한 내용은 AWS Key Management Service Developer Guide  키 정책 편집을 참조하십시오 .

CloudTrail을 활성화하여 KMS 키 속성을 설명하세요.

 

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

보안 모범 사례로 aws:SourceArnKMS 키 정책에 조건 키를 추가합니다. IAM 전역 조건 키는 aws:SourceArnCloudTrail이 특정 추적에 대해서만 KMS 키를 사용하도록 하는 데 도움이 됩니다.

 
{
  "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 Developer Guide  키 정책 편집을 참조하십시오 .

 

 

 

 

 

반응형
그리드형

'[AWS-DR] > CloudTrail' 카테고리의 다른 글

[중요2][AWS] CloudTrail 로그 확인!!  (31) 2024.07.01
[중요][AWS] CloudTrail란 무엇인가?  (46) 2024.06.26

댓글