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

问题描述

我正在将数据从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}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)