web-dev-qa-db-ja.com

cloudFormationテンプレートを介してS3のロギングを有効にしますか?

2つの異なるポリシーで2つのバケットを作成しようとしています。

1つのバケットVendorsWGLogsが、ログ出力の宛先になります。

もう1つのバケットであるVendorsWGは、GetObject、PutObject、およびDeleteObjectに指定されたIAMグループへのアクセスを許可します。

これが私がこれまでに持っているものです:

"Resources": {
    "VendorsWGLogs": {
      "Type": "AWS::S3::Bucket",
      "Properties": {},
    },
    "LogsBucketPolicy": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "VendorsWGLogs"
        },
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Sid": "WeatherGuidance LogBucket permissions",
              "Effect": "Allow",
              "Principal": {
                "AWS" : "arn:aws:s3:::VendorsWG"
              },
              "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
              ],
              "Resource" : { "Fn::Join" : [
                  "", [ "arn:aws:s3:::", { "Ref" : "VendorsWGLogs" } , "/*" ]
               ]}
            }
          ]
        }
      }
    },
    "VendorsWG": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "LoggingConfiguration": {
          "DestinationBucketName": {"Ref" : "VendorsWGLogs"},
          "LogFilePrefix": "testing-logs"
        }
      },
      "Metadata": {
        "AWS::CloudFormation::Designer": {
          "id": "a1169860-d743-406e-a3e5-e12831826439"
        },
      }
    },
    "S3BP4TNQZ": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "VendorsWG"
        },
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Sid": "WeatherGuidance Object permissions",
              "Effect": "Allow",
              "Principal": {
                "AWS" : "arn:aws:iam::someUserGroup"
              },
              "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
              ],
              "Resource" : { "Fn::Join" : [
                  "", [ "arn:aws:s3:::", { "Ref" : "VendorsWG" } , "/*" ]
               ]}
            },
            {
              "Sid": "WeatherGuidance ListBucket",
              "Effect": "Allow",
              "Principal": {
                "AWS" : "arn:aws:iam::someUserGroup"
              },
              "Action": "s3:ListBucket",
              "Resource" : { "Fn::Join" : [
                  "", [ "arn:aws:s3:::", { "Ref" : "VendorsWG" } ]
               ]},
              "Condition": {
                "StringLike": {
                  "s3:prefix": "weatherguidance*"
                }
              }
            }
          ]
        }
      }
    }
  }

スタックを作成しようとすると、このエラーが発生します enter image description here

イベントログ出力:

タイプ:

AWS::S3::Bucket

論理ID:

VendorsWG   

ステータスの理由:

You must give the log-delivery group WRITE and READ_ACP permissions to the target bucket

ターゲットバケットのポリシーのプリンシパルをVendorsWGLogsとして指定するとこれが修正されると思いましたが、今は考えられません。

私は何が間違っているのですか?ロギングを有効にするにはどうすればよいですか?ありがとう

11
c0de

これをログバケットのプロパティの下に配置する必要があります

Properties: {
      AccessControl: "LogDeliveryWrite"
}
17
c0de

あなたの問題は2つあると思います。

  1. アクションにs3:ListBucketがないため、バケットの内容を読み取ることができません
  2. S3バケットに対するアクションは、バケット(VendorsWGLogs)およびコンテンツ(VendorsWGLogs/*)レベルで実行されるため、リソースの下に両方をリストする必要があります。結果のポリシーは次のようになります。

    "リソース":["arn:aws:s3 ::: VendorsWGLogs"、 "arn:aws:s3 ::: VendorsWGLogs/*"]

2
mitramnut