本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启用审计日志记录
您可以使用审计日志来捕获有关您的 Amazon WorkMail 组织使用情况的详细信息。审计日志可用于监控用户对邮箱的访问、审计是否存在可疑活动,以及调试访问控制和可用性提供商配置。
AmazonWorkMailFullAccess托管策略不包括管理日志传输所需的所有权限。如果您使用此策略进行管理 WorkMail,请确保用于配置日志传输的委托人(例如,代入的角色)也具有所有必需的权限。
亚马逊 WorkMail 支持审核日志的三个传送目的地:日 CloudWatch 志、亚马逊 S3 和亚马逊 Data Firehose。有关更多信息,请参阅 Amazon Logs 用户指南中的需要额外权限的 CloudWatch 日志记录 [V2]。
除了日志记录下列出的需要额外权限 [V2] 的权限外,Amazon 还 WorkMail 需要额外的权限来配置日志传输:workmail:AllowVendedLogDeliveryForResource。
工作日志传输由三个元素组成:
要在 Amazon WorkMail 和目标之间配置日志传输,您可以执行以下操作:
以下各节详细介绍在您登录以便将日志传输设置为每种类型的目标时必须具备的权限。这些权限可以授予您登录时使用的 IAM 角色。
要在删除日志生成资源后移除日志传输资源,请执行以下步骤。
使用 Amazon WorkMail 控制台配置审核日志
您可以在 Amazon WorkMail 控制台中配置审核日志:
发送到日志的 CloudWatch 日志
用户权限
要启用向日志发送 CloudWatch 日志,您必须使用以下权限登录。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "ReadWriteAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:GetDelivery",
"logs:GetDeliverySource",
"logs:PutDeliveryDestination",
"logs:GetDeliveryDestinationPolicy",
"logs:DeleteDeliverySource",
"logs:PutDeliveryDestinationPolicy",
"logs:CreateDelivery",
"logs:GetDeliveryDestination",
"logs:PutDeliverySource",
"logs:DeleteDeliveryDestination",
"logs:DeleteDeliveryDestinationPolicy",
"logs:DeleteDelivery"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:delivery:*",
"arn:aws:logs:us-east-1:111122223333:delivery-source:*",
"arn:aws:logs:us-east-1:111122223333:delivery-destination:*"
]
},
{
"Sid": "ListAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:DescribeDeliveryDestinations",
"logs:DescribeDeliverySources",
"logs:DescribeDeliveries",
"logs:DescribeLogGroups"
],
"Resource": "*"
},
{
"Sid": "AllowUpdatesToResourcePolicyCWL",
"Effect": "Allow",
"Action": [
"logs:PutResourcePolicy",
"logs:DescribeResourcePolicies",
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:*"
]
},
{
"Sid": "AllowLogDeliveryForWorkMail",
"Effect": "Allow",
"Action": [
"workmail:AllowVendedLogDeliveryForResource"
],
"Resource": [
"arn:aws:workmail:us-east-1:111122223333:organization/organization-id"
]
}
]
}
日志组和资源策略
接收日志的日志组必须具有包含特定权限的资源策略。如果日志组当前没有资源策略,并且设置日志记录的用户拥有该日志组的logs:PutResourcePolicylogs:DescribeResourcePolicies、和logs:DescribeLogGroups权限,则在您开始将日志发送到 CloudWatch Logs 时,AWS会自动为其创建以下策略。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite20150319",
"Effect": "Allow",
"Principal": {
"Service": [
"delivery.logs.amazonaws.com"
]
},
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:log-group:my-log-group:log-stream:*"
],
"Condition": {
"StringEquals": {
"aws:SourceAccount": [
"111122223333"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:us-east-1:111122223333:*"
]
}
}
}
]
}
日志组资源策略大小限制注意事项
这些服务必须在资源策略中列出要向其发送日志的每个日志组。 CloudWatch 日志资源策略限制在 5,120 个字符以内。将日志发送到大量日志组的服务可能会遇到此限制。
为了缓解这种情况, CloudWatch Logs 会监控发送日志的服务所使用的资源策略的大小。当它检测到策略接近 5,120 个字符的大小限制时, CloudWatch Logs 会自动/aws/vendedlogs/*在该服务的资源策略中启用。之后,您可以开始将名称以 /aws/vendedlogs/ 开头的日志组作为这些服务所发送的日志的目标。
发送到 Amazon S3 的日志
用户权限
要启用向 Amazon S3 发送日志,您必须使用以下权限登录。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "ReadWriteAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:GetDelivery",
"logs:GetDeliverySource",
"logs:PutDeliveryDestination",
"logs:GetDeliveryDestinationPolicy",
"logs:DeleteDeliverySource",
"logs:PutDeliveryDestinationPolicy",
"logs:CreateDelivery",
"logs:GetDeliveryDestination",
"logs:PutDeliverySource",
"logs:DeleteDeliveryDestination",
"logs:DeleteDeliveryDestinationPolicy",
"logs:DeleteDelivery"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:delivery:*",
"arn:aws:logs:us-east-1:111122223333:delivery-source:*",
"arn:aws:logs:us-east-1:111122223333:delivery-destination:*"
]
},
{
"Sid": "ListAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:DescribeDeliveryDestinations",
"logs:DescribeDeliverySources",
"logs:DescribeDeliveries",
"logs:DescribeLogGroups"
],
"Resource": "*"
},
{
"Sid": "AllowUpdatesToResourcePolicyS3",
"Effect": "Allow",
"Action": [
"s3:PutBucketPolicy",
"s3:GetBucketPolicy"
],
"Resource": "arn:aws:s3:::bucket-name"
},
{
"Sid": "AllowLogDeliveryForWorkMail",
"Effect": "Allow",
"Action": [
"workmail:AllowVendedLogDeliveryForResource"
],
"Resource": [
"arn:aws:workmail:us-east-1:111122223333:organization/organization-id"
]
}
]
}
接收日志的 S3 存储桶必须具有包含特定权限的资源策略。如果存储桶当前没有资源策略,而设置日志记录的用户对存储桶具有 S3:GetBucketPolicy 和 S3:PutBucketPolicy 权限,那么当您开始将日志发送到 Amazon S3 时,AWS 会自动为其创建以下策略。
- JSON
-
-
{
"Version":"2012-10-17",
"Id": "AWSLogDeliveryWrite20150319",
"Statement": [
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::my-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": [
"account-id"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:us-east-1:111122223333:delivery-source:*"
]
}
}
},
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-bucket/AWSLogs/111122223333/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceAccount": [
"account-id"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:us-east-1:111122223333:delivery-source:*"
]
}
}
}
]
}
在之前的策略中aws:SourceAccount,为指定要将日志传输到此存储桶的账户 IDs 列表。对于aws:SourceArn,在表单中指定生成日志的资源列表arn:aws:logs:source-region:source-account-id:*。 ARNs
如果存储桶具有资源策略,但该策略不包含上一个策略中所示的语句,并且设置日志记录的用户对存储桶具有 S3:GetBucketPolicy 和 S3:PutBucketPolicy 权限,则该语句将附加到存储桶的资源策略中。
在某些情况下,AWS CloudTrail如果未授予s3:ListBucket权限,则可能会在中看到AccessDenied错误delivery.logs.amazonaws.com。为避免 CloudTrail日志中出现这些错误,您必须授予s3:ListBucket权限delivery.logs.amazonaws.com。还必须包含与在前面的存储桶策略中设置的 s3:GetBucketAcl 权限一起显示的 Condition 参数。为简化这一过程,可以直接将 AWSLogDeliveryAclCheck 更新为 “Action”:
[“s3:GetBucketAcl”, “s3:ListBucket”],而不是创建一个新的 Statement。
Amazon S3 存储桶服务器端加密
您可以通过使用 Amazon S3 托管密钥启用服务器端加密 (SSE-S3) 或使用存储在 SSE-KMS 中的密钥启用服务器端加密 (SSE-KMS) 来保护 Amazon S3 存储桶中的AWS Key Management Service数据。AWS KMS有关更多信息,请参阅使用服务器端加密保护数据。
如果选择 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,请指定要将日志传送到此存储桶的账户 IDs 列表。对于aws:SourceArn,在表单中指定生成日志的资源列表arn:aws:logs:source-region:source-account-id:*。 ARNs
日志发送至 Firehose
用户权限
要启用向 Firehose 发送日志,您必须使用以下权限登录。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "ReadWriteAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:GetDelivery",
"logs:GetDeliverySource",
"logs:PutDeliveryDestination",
"logs:GetDeliveryDestinationPolicy",
"logs:DeleteDeliverySource",
"logs:PutDeliveryDestinationPolicy",
"logs:CreateDelivery",
"logs:GetDeliveryDestination",
"logs:PutDeliverySource",
"logs:DeleteDeliveryDestination",
"logs:DeleteDeliveryDestinationPolicy",
"logs:DeleteDelivery"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:delivery:*",
"arn:aws:logs:us-east-1:111122223333:delivery-source:*",
"arn:aws:logs:us-east-1:111122223333:delivery-destination:*"
]
},
{
"Sid": "ListAccessForLogDeliveryActions",
"Effect": "Allow",
"Action": [
"logs:DescribeDeliveryDestinations",
"logs:DescribeDeliverySources",
"logs:DescribeDeliveries",
"logs:DescribeLogGroups"
],
"Resource": "*"
},
{
"Sid": "AllowUpdatesToResourcePolicyFH",
"Effect": "Allow",
"Action": [
"firehose:TagDeliveryStream"
],
"Resource": [
"arn:aws:firehose:us-east-1:111122223333:deliverystream/*"
]
},
{
"Sid": "CreateServiceLinkedRole",
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "arn:aws:iam::111122223333:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery"
},
{
"Sid": "AllowLogDeliveryForWorkMail",
"Effect": "Allow",
"Action": [
"workmail:AllowVendedLogDeliveryForResource"
],
"Resource": [
"arn:aws:workmail:us-east-1:111122223333:organization/organization-id"
]
}
]
}
用于资源权限的 IAM 角色
由于 Firehose 不使用资源策略,AWS因此在设置要发送到 Firehose 的日志时会使用 IAM 角色。 AWS创建名AWSServiceRoleForLogDelivery为的服务相关角色。此服务相关角色包括以下权限。
此服务相关角色授予标签设置为的所有 Firehose 传送流LogDeliveryEnabled的权限。true AWS在设置日志记录时,将此标签提供给目标传送流。
此服务相关角色还具有允许 delivery.logs.amazonaws.com 服务委托人来代入所需服务相关角色的信任策略。该信任策略如下所示:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
控制台特定的权限
除了前几节中列出的权限外,如果您使用控制台而不是控制台来设置日志传输 APIs,则还需要以下权限:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowLogDeliveryActions",
"Effect": "Allow",
"Action": [
"firehose:DescribeDeliveryStream",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:logs:us-east-1:111122223333:log-group:*",
"arn:aws:firehose:us-east-1:111122223333:deliverystream/*",
"arn:aws:s3:::*"
]
},
{
"Sid": "ListAccessForDeliveryDestinations",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"firehose:ListDeliveryStreams",
"s3:ListAllMyBuckets"
],
"Resource": "*"
}
]
}