【发布时间】:2018-01-23 23:07:51
【问题描述】:
我在许多容器化服务上运行 Filebeats 来收集日志并将它们发送到 logstash(v5.3.1) 容器,该容器又将它们上传到 aws S3。
我已启用使用默认 kms 的服务器端加密来加密静态日志,它工作正常。但是,当我添加一个如果未启用 kms sse 则拒绝访问的存储桶策略时,logstash 失败并出现错误: 错误 logstash.outputs.s3 - 验证存储桶写入权限时出错! {:message=>"拒绝访问", :class=>"Aws::S3::Errors::AccessDenied"}
一旦我从策略中删除拒绝部分,它就会再次起作用。
Logstash 输出配置如下:
output {
s3{
server_side_encryption => true
server_side_encryption_algorithm => "aws:kms"
region => "XXXXXX"
bucket => "XXXXX"
prefix => "XXXXXXXX"
}
}
S3 存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": “Logging bucket",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::XXXXXXXXXXX:root"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket_name_12343456/*”
},
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket_name_12343456/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket_name_12343456/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
}
奇怪的是,当我删除上述策略的 Deny* 部分时,它起作用了:文件被写入 S3 存储桶并被标记: 服务器端加密 AWS-KMS KMS 密钥 ID XXXXXXXXXX
最后我做的一个测试是简单地调用带有加密的aws cp,这个调用成功了!
【问题讨论】:
标签: amazon-s3 logstash amazon-iam elastic-stack filebeat