1

CloudWatchにメトリックフィルタとそれに基づくアラームを作成して、特にファイルまたはバケットがpublicに設定されているときにS3イベントを通知します。これは私がメトリックを作成するために使用されるメトリックフィルタである:S3オブジェクトをパブリックに設定することを通知するCloudWatchアラームを作成します。

{($ .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は正しく、正確ですか?私は1つの結果を持っているはずですが、それは起きていません。

答えて

0

ポリシーがオープンアクセスを提供しているかどうかを計算することは、バケットポリシーでルールを指定できる多くの方法のために非常に複雑です(たとえば、ワイルドカードでアクセスできます)。

より簡単なアプローチは、信頼できるアドバイザーにAmazon S3のバケット権限チェックを使用することです:

オープンアクセス権限を持っているか、いずれかへのアクセスを許可Amazonでシンプルなストレージサービス(アマゾンS3)で

をチェックバケット認証されたAWSユーザー

Monitor Trusted Advisor Check Results with Amazon CloudWatch Eventsにすることができます。

ただし、この特別な小切手は、Trusted Advisorのフリーティアには含まれていません。そのチェックを行うには、のサポートプランでになる必要があります。

Amazon S3コンソールも最近更新されました。パブリックパーミッションのバケットが明確に表示されます。

+0

はい私はTrust Advisorが提供していることを知っていますが、多くのAWSアカウントを管理しているためSNSからの通知が必要です。アカウントごとにトラストアドバイザーアカウントを確認するのは難しいです。すべてのアカウントのCloudTrailイベントは1つのバケットに集約されており、その上にメトリックフィルタを配置する必要があります。 – Somar

+0

複雑であっても警告が必要です。 – Somar

+0

上記のリンクに従って、Trusted AdvisorはSNS通知メッセージを送信できるCloudWatchイベントをトリガーできます。 –

関連する問題