【问题标题】:Logstash fails to access S3 when KMS SSE is enforced by policy当 KMS SSE 由策略强制执行时,Logstash 无法访问 S3
【发布时间】: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


    【解决方案1】:

    我遇到了类似的问题。我相信这是因为在启动期间,logstash 尝试通过将测试文件放在存储桶的根目录(忽略加密设置)并随后再次将其删除来验证它是否有足够的权限写入存储桶。

    您可以通过将validate_credentials_on_root_bucket => false 添加到您的输出配置来禁用此行为。对我来说,这解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2014-07-13
      • 2021-10-17
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多