【问题标题】:Create CloudWatch Alarm to notify about setting a S3 object to public创建 CloudWatch 警报以通知将 S3 对象设置为公共
【发布时间】:2017-11-14 10:44:50
【问题描述】:

我想在 CloudWatch 上创建一个指标过滤器和一个基于它的警报,以通知我有关 S3 事件的信息,特别是当文件或存储桶设置为公共时。这是我用来创建指标的指标过滤器:

{ ($.eventSource = s3.amazonaws.com) && (($.eventName = PutBucketAcl) || ($.eventName = PutObjectAcl)) && (($.requestParameters.AccessControlPolicy.AccessControlList.Grant.Grantee.type = 组))}

我通过输入以下Custom log data 测试了这个pattern

{
    "Records": [
    {
        "eventVersion": "1.03",
        "userIdentity": {
            "type": "IAMUser",
            "principalId": "111122223333",
            "arn": "arn:aws:iam::111122223333:user/myUserName",
            "accountId": "111122223333",
            "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "userName": "myUserName"
        },
        "eventTime": "2015-08-26T20:46:31Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "DeleteBucketPolicy",
        "awsRegion": "us-west-2",
        "sourceIPAddress": "127.0.0.1",
        "userAgent": "[]",
        "requestParameters": {
            "bucketName": "myawsbucket"
        },
        "responseElements": null,
        "requestID": "47B8E8D397DCE7A6",
        "eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8",
        "eventType": "AwsApiCall",
        "recipientAccountId": "111122223333"
    },
    {
       "eventVersion": "1.03",
       "userIdentity": {
            "type": "IAMUser",
            "principalId": "111122223333",
            "arn": "arn:aws:iam::111122223333:user/myUserName",
            "accountId": "111122223333",
            "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "userName": "myUserName"
        },
      "eventTime": "2015-08-26T20:46:31Z",
      "eventSource": "s3.amazonaws.com",
      "eventName": "PutBucketAcl",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "",
      "userAgent": "[]",
      "requestParameters": {
          "bucketName": "",
          "AccessControlPolicy": {
              "AccessControlList": {
                  "Grant": {
                      "Grantee": {
                          "xsi:type": "Group",
                          "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
                          "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
                       },
                      "Permission": "FULL_CONTROL"
                   }
              },
              "xmlns": "http://s3.amazonaws.com/doc/2006-03-01/",
              "Owner": {
                  "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example"
              }
          }
      },
      "responseElements": null,
      "requestID": "BD8798EACDD16751",
      "eventID": "607b9532-1423-41c7-b048-ec2641693c47",
      "eventType": "AwsApiCall",
      "recipientAccountId": "111122223333"
    },
    {
      "eventVersion": "1.03",
      "userIdentity": {
          "type": "IAMUser",
          "principalId": "111122223333",
          "arn": "arn:aws:iam::111122223333:user/myUserName",
          "accountId": "111122223333",
          "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "userName": "myUserName"
        },
      "eventTime": "2015-08-26T20:46:31Z",
      "eventSource": "s3.amazonaws.com",
      "eventName": "GetBucketVersioning",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "",
      "userAgent": "[]",
      "requestParameters": {
          "bucketName": "myawsbucket"
      },
      "responseElements": null,
      "requestID": "07D681279BD94AED",
      "eventID": "f2b287f3-0df1-4961-a2f4-c4bdfed47657",
      "eventType": "AwsApiCall",
      "recipientAccountId": "111122223333"
    }
  ]
}

我点击了测试模式,我收到了这条消息:

在示例日志中的 50 个事件中找到 0 个匹配项。

metric filter 正确无误吗?我应该有一个结果,但它没有出现。

【问题讨论】:

    标签: amazon-web-services amazon-s3 metrics amazon-cloudwatchlogs amazon-cloudtrail


    【解决方案1】:

    计算一个策略是否提供开放访问是相当复杂的,因为在存储桶策略中可以通过多种方式指定规则(例如,通配符可以提供访问)。

    更简单的方法是在 Trusted Advisor 中使用 Amazon S3 存储桶权限检查:

    检查 Amazon Simple Storage Service (Amazon S3) 中具有开放访问权限或允许任何经过身份验证的 AWS 用户访问的存储桶。

    然后你可以Monitor Trusted Advisor Check Results with Amazon CloudWatch Events

    但是,该特定检查不包含在 Trusted Advisor 的免费套餐中。您需要参与支持计划才能进行该检查。

    Amazon S3 控制台最近也进行了更新——它现在可以清楚地显示所有具有公共权限的存储桶。

    【讨论】:

    • 是的,我知道 Trust Advisor 提供了这一点,但我需要通过 SNS 向我的邮箱发送通知,因为我管理着许多 AWS 账户,而且很难逐个账户检查 Trust Advisor 账户。所有帐户的 CloudTrail 事件都集中在一个存储桶中,我需要在其上放置指标过滤器。
    • 即使它很复杂,我也需要那个警报。
    • 根据上述链接,Trusted Advisor 可以触发 CloudWatch 事件,该事件可以发送 SNS 通知消息。
    • 我们在 eu-west-1 地区工作,Trust Advisor 规则在那里不可用。
    • 正确。如文档中所述,您必须使用 us-east-1 中的 Amazon CloudWatch Events 才能访问 Trusted Advisor。但是,针对 Amazon S3 的 Trusted Advisor 检查是全球性的,因此它们仍可在 us-east-1 中使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2021-02-24
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多