감사 로깅 활성화
감사 로그를 사용하여 Amazon WorkMail 조직 사용에 대한 세부 정보를 캡처할 수 있습니다. 감사 로그를 사용하여 사서함에 대한 사용자의 액세스를 모니터링하고, 의심스러운 활동을 감사하며, 액세스 제어 및 가용성 공급자 구성을 디버깅할 수 있습니다.
참고
AmazonWorkMailFullAccess 관리형 정책에는 로그 전송을 관리하는 데 필요한 모든 권한이 포함되어 있지는 않습니다. 이 정책을 사용하여 WorkMail을 관리하는 경우 로그 전송을 구성하는 데 사용되는 위탁자(예: 수임된 역할)에게도 필요한 모든 권한이 있는지 확인합니다.
Amazon WorkMail은 감사 로그를 전송할 수 있는 세 가지 대상, 즉 CloudWatch Logs, Amazon S3, Amazon Data Firehose를 지원합니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 추가 권한 [V2]가 필요한 로깅을 참조하세요.
추가 권한 [V2]가 필요한 로깅 아래에 나열된 권한 외에도 Amazon WorkMail에서는 로그 전송을 구성하기 위한 추가 권한인 workmail:AllowVendedLogDeliveryForResource가 필요합니다.
작동하는 로그 전송은 다음 세 가지 요소로 구성됩니다.
-
DeliverySource는 로그를 전송하는 하나 이상의 리소스를 나타내는 논리적 객체입니다. Amazon WorkMail의 경우 이는 Amazon WorkMail 조직입니다.
-
DeliveryDestination은 실제 전달 대상을 나타내는 논리적 객체입니다.
-
Delivery는 전송 소스를 전송 대상에 연결합니다.
Amazon WorkMail과 대상 간 로그 전달을 구성하려면 다음 작업을 수행합니다.
-
PutDeliverySource를 사용하여 전송 소스를 생성합니다.
-
PutDeliveryDestination을 사용하여 전송 대상을 생성합니다.
-
계정 간에 로그를 전달하는 경우 대상 계정의 PutDeliveryDestinationPolicy를 사용하여 대상에 IAM 정책을 할당해야 합니다. 이 정책은 계정 A의 전송 소스에서 계정 B의 전송 대상으로의 전송을 생성할 수 있는 권한을 부여합니다.
-
CreateDelivery를 사용하여 정확히 하나의 전송 소스와 하나의 전송 대상을 페어링하여 전송을 생성합니다.
다음 섹션에서는 각 유형의 대상에 대한 로그 전달을 설정하기 위해 로그인할 때 반드시 보유해야 하는 권한의 세부 정보를 제공합니다. 이러한 권한은 로그인한 IAM 역할에 부여할 수 있습니다.
중요
로그 생성 리소스를 삭제한 후 로그 전송 리소스를 제거하는 것은 사용자의 책임입니다.
로그 생성 리소스를 삭제한 후 로그 전송 리소스를 제거하려면 다음 단계를 따릅니다.
-
DeleteDelivery 작업을 사용하여 Delivery를 삭제합니다.
-
DeleteDeliverySource 작업을 사용하여 DeliverySource를 삭제합니다.
-
방금 삭제한 DeliverySource와 연결된 DeliveryDestination이 해당 특정 DeliverySource에만 사용되는 경우 DeleteDeliveryDestinations 작업을 사용하여 이를 제거할 수 있습니다.
Amazon WorkMail 콘솔을 사용하여 감사 로깅 구성
Amazon WorkMail 콘솔에서 감사 로깅을 구성하는 단계는 다음과 같습니다.
-
https://console.aws.amazon.com/workmail/
에서 Amazon WorkMail 콘솔을 엽니다. 필요한 경우 AWS 리전을 변경합니다. 콘솔 창 상단의 표시줄에서 리전 선택 목록을 열고 리전을 선택합니다. 자세한 내용은 Amazon Web Services 일반 참조의 리전 및 엔드포인트를 참조하세요.
-
탐색 창에서 조직을 선택한 다음 조직의 이름을 선택합니다.
로깅 설정을 선택합니다.
감사 로그 설정 탭을 선택합니다.
적절한 위젯을 사용하여 필요한 로그 유형에 대한 전송을 구성합니다.
-
저장을 선택합니다.
CloudWatch Logs로 전송된 로그
사용자 권한
CloudWatch Logs로 로그를 전송하려면 다음 권한으로 로그인해야 합니다.
로그 그룹 리소스 정책
로그를 보내는 로그 그룹에는 특정 권한이 포함된 리소스 정책이 있어야 합니다. 로그 그룹에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 로그 그룹에 대한 logs:PutResourcePolicy,logs:DescribeResourcePolicies, 및 logs:DescribeLogGroups 권한이 있는 경우 AWS에서는 로그를 CloudWatch Logs 로그로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.
로그 그룹 리소스 정책 크기 제한 고려 사항
이러한 서비스는 리소스 정책에서 로그를 전송하는 각 로그 그룹을 나열해야 합니다. CloudWatch Logs 리소스 정책은 5,120자로 제한됩니다. 많은 수의 로그 그룹에 로그를 전송하는 서비스는 이 제한에 도달할 수 있습니다.
이를 완화하기 위해 CloudWatch Logs는 로그를 전송하는 서비스에서 사용하는 리소스 정책의 크기를 모니터링합니다. 정책이 5,120자의 크기 제한에 가까워지면 CloudWatch Logs는 해당 서비스의 리소스 정책에서 /aws/vendedlogs/*를 자동으로 활성화합니다. 그런 다음 /aws/vendedlogs/로 시작하는 이름을 가진 로그 그룹을 이러한 서비스의 로그 대상으로 사용하기 시작할 수 있습니다.
Amazon S3 로 보낸 로그
사용자 권한
Amazon S3로 로그를 전송하려면 다음 권한으로 로그인해야 합니다.
로그가 전송되는 S3 버킷에는 특정 권한을 포함하는 리소스 정책이 있어야 합니다. 버킷에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 해당 버킷에 대한 S3:GetBucketPolicy 및 S3:PutBucketPolicy 권한이 있는 경우 AWS에서는 로그를 Amazon S3로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.
이전 정책에서 aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 ID의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs: 형식으로 지정합니다.source-region:source-account-id:*
버킷에 리소스 정책이 있지만 해당 정책에 이전 정책에 표시된 문이 포함되어 있지 않고 로깅을 설정하는 사용자에게 버킷에 대한 S3:GetBucketPolicy 및 S3:PutBucketPolicy 권한이 있는 경우 해당 문이 로그 그룹의 리소스 정책에 추가됩니다.
참고
경우에 따라 delivery.logs.amazonaws.com에 s3:ListBucket 권한이 부여되지 않은 경우 AWS CloudTrail에서 AccessDenied 오류가 표시될 수 있습니다. CloudTrail 로그에서 이러한 오류가 발생하지 않도록 delivery.logs.amazonaws.com에 s3:ListBucket 권한을 부여해야 합니다. 또한 이전 버킷 정책에 설정된 s3:GetBucketAcl 권한과 함께 표시된 Condition 파라미터를 포함해야 합니다. 이 작업을 간소화하기 위해 새로운 Statement를 만드는 대신 AWSLogDeliveryAclCheck를 “Action”:
[“s3:GetBucketAcl”, “s3:ListBucket”]으로 직접 업데이트할 수 있습니다.
Amazon S3 버킷 서버 측 암호화
Amazon S3-관리형 키(SSE-S3)를 사용한 서버 측 암호화 또는 AWS Key Management Service(SSE-KMS)에 저장된 AWS KMS 키를 사용한 서버 측 암호화를 활성화하여 Amazon S3 버킷의 데이터를 보호할 수 있습니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.
SSE-S3를 선택하면 추가 구성이 필요하지 않습니다. Amazon S3는 암호화 키를 처리합니다.
주의
SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. AWS 관리형 키를 사용하여 암호화를 설정하면 로그가 읽을 수 없는 형식으로 전달됩니다.
고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가하세요.
SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. 고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가하세요.
{ "Sid":"Allow Logs Delivery to use the key", "Effect":"Allow", "Principal":{ "Service":[ "delivery.logs.amazonaws.com" ] }, "Action":[ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource":"*", "Condition":{ "StringEquals":{ "aws:SourceAccount":[ "account-id" ] }, "ArnLike":{ "aws:SourceArn":[ "arn:aws:logs:region:account-id:delivery-source:*" ] } } }
aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 ID의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs: 형식으로 지정합니다.source-region:source-account-id:*
Firehose에 전송된 로그
사용자 권한
Firehose로 로그 전송을 활성화하려면 다음 권한으로 로그인해야 합니다.
리소스 권한에 사용되는 IAM 역할
Firehose는 리소스 정책을 사용하지 않기 때문에 AWS는 이러한 로그를 Firehose로 전송하도록 설정할 때 IAM 역할을 사용합니다. AWS는 AWSServiceRoleForLogDelivery라는 서비스 연결 역할을 생성합니다. 이 서비스 연결 역할에는 다음 권한이 포함됩니다.
이 서비스 연결 역할은 LogDeliveryEnabled 태그가 true로 설정된 모든 Firehose 전송 스트림에 대한 권한을 부여합니다. AWS는 여러분이 로깅을 설정할 때 이 태그를 대상 전송 스트림에 제공합니다.
또한 이 서비스 연결 역할에는 delivery.logs.amazonaws.com 서비스 보안 주체가 필요한 서비스 연결 역할을 맡도록 허용하는 신뢰 정책이 있습니다. 이러한 신뢰 정책은 다음과 같습니다.
콘솔별 권한
API 대신 콘솔을 사용하여 로그 전송을 설정하는 경우 이전 섹션에 나열된 권한 외에도 다음과 같은 권한이 필요합니다.