В интеграции DataDog CloudTrail отсутствует разрешение ListObject

Сегодня я установил интеграцию DataDog AWS CloudTrail в свою учетную запись AWS (она создает стек CloudFormation и создает, среди прочего, Lambda, которая перенаправляет журналы из ваших журналов CloudTrails в S3 в вашу учетную запись DataDog).

После установки интеграции я вижу ошибку на экране конфигурации DataDog:

      <MY_AWS_ACCOUNT_ID>

management-events - aws-cloudtrail-logs-<redacted>-<redacted>

An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

Кто-нибудь знает, какие разрешения IAM мне нужно предоставить роли IAM, созданной DataDog (как часть этого стека CF), чтобы она моглаListObjects? Я предполагаю, что это разрешение, связанное с S3?

Я вижу, что стек DataDog также создал для меня корзину S3 с именемdatadogintegration-forwarderstack-forwarderbucket-<redacted>и его текущая политика ведра:

      {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSSLRequestsOnly",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::datadogintegration-forwarderstack-forwarderbucket-<redacted>",
                "arn:aws:s3:::datadogintegration-forwarderstack-forwarderbucket-<redacted>/*"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}

Но я не уверен, нужно ли мне вносить изменения в эту политику, разрешение IAM или что-то еще.

Может ли кто-нибудь заметить, где я иду наперекосяк?

1 ответ

Вам нужно будет назначить соответствующую политику роли IAM, созданной Cfn.

Поток будет:

  • создать политику
  • прикрепите его к своей роли

Политика будет такой: добавьте соответствующие разрешения, если вам нужно больше доступа.

      {
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "s3:ListBucket",
            "s3:GetObject",
            "s3:GetObjectAcl"
        ],
        "Resource": [
             "arn:aws:s3:::<bucketname>",
            "arn:aws:s3:::<bucketname>/*"
        ],
        "Effect": "Allow"
    }
 ]
}

Примечание:

Вы всегда можете проверить свой доступ к роли или службе к определенному ресурсу с помощью симулятора политик AWS.

Вы также можете сделать это с помощью политики ведра, но, на мой взгляд,

      {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::ACCOUNT-A:role/xxxx"
                },
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::bucket-name/*"
                ]
            }
        ]
    }

Я использую политику корзины, когда собираюсь столкнуться с тремя подобными ситуациями, хотя вы предпочитаете выбрать политику IAM или политику корзины:

  • если единственным сервисом AWS, который вы используете, является S3, вам может быть проще управлять разрешениями непосредственно в S3 с помощью политик корзины.
  • где вы можете захотеть использовать политики сегментов, чтобы разрешить доступ из другой учетной записи AWS.
  • где вам может понадобиться использовать политики корзин, когда вы хотите разрешить доступ к ресурсам S3 на основе чего-то другого, кроме удостоверения AWS IAM. Например, вы можете ограничить доступ S3 к запросам с определенных IP-адресов. Вы также можете ограничить доступ к медиаресурсам в своей корзине S3 запросами от определенного реферера, чтобы разрешить вашему веб-сайту отображать только изображения и видео.

Поскольку ваша существующая политика корзины применяется, обязательно получите доступ к корзине s3 https, иначе вы не сможете получить доступ.

Другие вопросы по тегам