在存储策略中的条件仅允许特定服务



我正在寻找一个保管策略,其中我为完整帐户'arn:aws:iam :: 00000000000000:root'有一个特定的主体ID,可以写入我的水桶。

我现在想实现一种条件,该条件只会使FireHose作为服务,以写信给我的存储桶。

我目前的想法是:

        {
            "Sid": "AllowWriteViaFirehose",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::000000000000:root"
            },
            "Action": "s3:Put*",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Condition": {
                #*#
            }
        }

#*#应该是特定条件。我已经尝试了一些:

{" ipaddress":{" aws:sourceip":" firehose.amazonaws.com"}}} >我认为这些要求来自AWS的消防端点。但这似乎不是: -/

"条件":{" stringlike":{" aws:aws:principalarn":"*firehose*"}} >我认为这将起作用,因为Firehose用来编写文件的角色应包含一个会话名称,其中包含" Firehose"之类的内容。但这无效。

任何想法如何使此工作?

谢谢ben

不创建存储措施策略。

相反,将所需权限分配给 iam角色,并将角色分配给您的kinesis firehose。

请参阅:使用Amazon Kinesis Data Firehose控制访问-Amazon Kinesis Data FireHose

此答案是针对目标S3存储桶在其他帐户中的情况

来自AWS开发人员论坛:Kinesis Firehose Cross帐户写信给S3,该方法是:

  1. 在帐户b中创建跨帐户角色,并启用帐户A的信任关系来担任帐户B的角色。
  2. 启用帐户b中的存储策略允许帐户a将记录写入帐户b。
  3. 地图帐户B的S3存储桶到Firehose,必须创建Firehose以指向临时存储桶,然后使用AWS CLI命令更新帐户中的S3存储桶。

cli命令:

aws firehose update-destination --delivery-stream-name MyDeliveryStreamName --current-delivery-stream-version-id 1 --destination-id destinationId-000000000001 --extended-s3-destination-update file://MyFileName.json

myfilename.json看起来像下面的一个:

{
    "BucketARN": "arn:aws:s3:::MyBucketname",
    "Prefix": ""
}

最新更新