Условие в политике ведра, чтобы разрешить только определенный сервис - PullRequest
0 голосов
/ 17 мая 2019

Я ищу политику сегмента, в которой у меня есть конкретный идентификатор участника для полной учетной записи 'arn: aws: iam :: 000000000000: root', которой разрешено писать в мой сегмент.

Теперь я хочу реализовать условие, которое даст только пожарному шлангу как службе возможность писать в мое ведро.

Мои текущие идеи были:

        {
            "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. Но, похоже, нет: - /

"Condition": {"StringLike": {"aws: PrincipalArn": "* Firehose *"}} я думал, что это сработает, поскольку роль, которую firehose использует для записи файлов, должна содержать имя сеанса с чем-то вроде «firehose». Но это не сработало.

Есть идеи, как заставить это работать?

Спасибо Бен

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Не создавать политику корзины.

Вместо этого назначьте желаемое разрешение для роли IAM и назначьте роль своему пожарному шлангу Kinesis.

См .: Управление доступом с помощью Amazon Kinesis Data Firehose - Amazon Kinesis Data Firehose

0 голосов
/ 19 мая 2019

Этот ответ предназначен для ситуации, когда целевой контейнер S3 находится в другом аккаунте .

Из Форумы разработчиков AWS: Кинесис Firehose, кросс-аккаунт, запись в S3 , метод:

  1. Создайте роли кросс-аккаунта в учетной записи B и включите доверительные отношения для учетной записи A для принятия роли учетной записи B.
  2. Включить политику Bucket в учетной записи B, чтобы позволить учетной записи A записывать записи в учетную запись B.
  3. Привязать корзину S3 учетной записи B к Firehose, пришлось создать пожарную часть, чтобы указать на временную корзину, а затем использовать команды CLI AWS для обновления корзины S3 в учетной записи A.

Команда 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": ""
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...