S3存储桶默认加密为SSE-KMS时访问日志无法生成,需额外权限?
S3服务器访问日志(SSE-KMS加密场景)权限配置问题
需要为KMS密钥添加额外权限,才能让日志正常生成。
问题原因
当目标存储桶启用SSE-KMS默认加密时,S3日志服务(logging.s3.amazonaws.com)在写入日志对象时,需要调用KMS密钥执行kms:GenerateDataKey(生成数据密钥用于加密对象)和kms:Decrypt(必要的解密操作)。但你当前的KMS密钥策略仅允许根用户使用密钥,日志服务的服务主体不在授权范围内,导致写入操作被KMS拒绝。
解决方案
在KMS密钥策略中添加一条授权语句,允许S3日志服务使用该密钥:
{ "Sid": "AllowS3LoggingServiceToUseKMSKey", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:${region}:${account_id}:key/${key_id}" }
注意事项
- 替换
${region}、${account_id}、${key_id}为你的实际AWS区域、账号ID和KMS密钥ID - 该语句需与现有KMS策略合并(保留原有的根用户权限语句)
- 目标存储桶的现有S3策略无需修改(已正确授权日志服务执行
s3:PutObject)
配置完成后,等待数分钟,S3日志服务即可正常向目标桶写入加密的日志对象。
内容的提问来源于stack exchange,提问作者Krzysztof Pagacz
相关产品推荐
相关产品推荐

