如何在存储桶策略中使用“ NotPrincipal”将S3存储桶访问限制为仅对运动型消防水带交付流进行访问?

时间:2020-09-29 13:35:46

标签: amazon-web-services amazon-s3 amazon-kinesis-firehose

我正在将数据从AWS IoT核心发送到Kinesis数据流。数据流最终将设备数据转储到名为dtmu-mock-bucket-1的S3存储桶中。 Kinesis传递流使用KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569角色(具有对S3的完全访问权限)。

因此,如果未指定S3策略,则将数据写入存储桶。当使用"Effect":"Allow"Principal:arn:aws:iam::247590354562:role/service-role/KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569定义存储桶策略时,一切也按预期进行。

但是,当存储桶策略如下时,我会遇到问题。基本上NotPrincipal不能按预期工作。即使在NotPrincipal中将Kinesis角色作为例外,S3存储桶仍会通过以下策略拒绝所有来源(我的控制台用户和kinesis角色)的PUT

{
  "Version": "2012-10-17",
  "Id": "MYBUCKETPOLICY",
  "Statement": [
{
      "Sid": "KinesisDeny",
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": [
          "arn:aws:iam::247590354562:role/service-role/KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569",
          "arn:aws:iam::247590354562:root"
      ]
      },
      "Action": [
          "s3:PutObject",
          "s3:PutObjectAcl"
          ],
      "Resource": [
                "arn:aws:s3:::dtmu-mock-bucket-1/*",
                "arn:aws:s3:::dtmu-mock-bucket-1"
            ]
    }
]
}

即使针对目标S3存储桶采用了上述策略,是否有任何有关kinesis传递流日志为何显示S3访问被禁止的指针?基本上,我希望S3存储桶策略取代为dtmu-mock-bucket-1存储桶分配给用户的IAM角色。只有运动学应该能够PUT {@ 1}

0 个答案:

没有答案