繁体   English   中英

Cloudtrail 使用 terraform

[英]Cloudtrail using terraform

我正在使用 terraform 创建一个 cloudtrail。问题是我的源存储桶在 3 个月后不断变化。 现在我想为 field_selector 提供动态 S3 存储桶值。 我正在做这样的事情:

    resource "aws_cloudtrail" "test" {
        name = "test_trail"
        s3_bucket_name = bucket.id
        enable_logging = true
        include_global_service_events = true
        is_multi_region_trail = true
        enable_log_file_validation = true
    
        advanced_event_selector {
          name = "Log download event data"
          field_selector {
            field = "eventCategory"
            equals = ["Data"]
          }
          field_selector {
            field = "resources.type"
            equals = ["AWS::S3::Object"]
          }
          field_selector {
            field = "eventName"
            equals = ["GetObject"]
          }
          field_selector {
            field = "resources.ARN"
            **starts_with = ["aws_s3_bucket.sftp_file_upload_bucket.arn"]**
          }
        }

在这里,我给出了 arn,但日志不是以这种方式创建的,但是如果我对存储桶名称进行硬编码,它就会被创建。

当您想记录存储桶的 object 事件时,ARN 是不够的。 正如 AWS CLI 文档所述 [1]:

例如,如果 resources.type 等于 AWS::S3::Object,则 ARN 必须采用以下格式之一。 要记录特定 S3 存储桶中所有对象的所有数据事件,请使用 StartsWith 运算符,并仅包括存储桶 ARN 作为匹配值。 尾部斜杠是有意的; 不要排除它。

因此,在您的情况下,您必须将最后一个字段选择器修复为:

field_selector {
  field = "resources.ARN"
  starts_with = ["${aws_s3_bucket.sftp_file_upload_bucket.arn}/"]
}

[1] https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudtrail/put-event-selectors.html#id11

使用资源的属性时,您应该像这样指定它

"${aws_s3_bucket.sftp_file_upload_bucket.arn}"

或者没有像这样的引号

aws_s3_bucket.sftp_file_upload_bucket.arn

所以,正确的版本是

      field_selector {
        field = "resources.ARN"
        starts_with = [aws_s3_bucket.sftp_file_upload_bucket.arn]
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM