Разрешить запрос Athena на ведро S3 - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть эта политика корзины, и она работает правильно. Единственная проблема заключается в том, что это не позволяет Афина запрос. Как я могу изменить это для всей Афины?

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::13cols/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "18.72.1.2/32",
                        "11.119.2.8/32",
                        "12.939.49.346/32",
                        "4.26.2.219/32"
                    ]
                }
            }
        }
    ]
}

Мне известна эта ссылка ...

https://docs.aws.amazon.com/athena/latest/ug/managed-policies.html

Но не уверен, как объединить это с текущей политикой.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Это правильно.Ваша политика сегмента гласит: Если входящий запрос не поступает с одного из этих IP-адресов, не позволяйте никому ничего делать с этим сегментом S3.

Так что, даже если запрос Афинывыполняется кем-то, кому разрешен доступ к корзине, приведенная выше политика блокирует их, потому что Афина не входит на один из этих IP-адресов.

Чтобы избежать этого, вы должны найти любую политику, предоставляющую людямполучить доступ и установить ограничение IP-адреса для этих политик, чтобы они сказали «Разрешить этим людям доступ к корзине, но только если они поступают с одного из этих IP-адресов». Кстати, это чисто политика Allow, а не Allow и Deny.

Тогда Allow предоставляет доступ к пользователю, который выполняет запросы Athena, но не ограничивает ихпо IP-адресу (поскольку запросы Athena не будут поступать из вашего диапазона IP-адресов).

0 голосов
/ 05 апреля 2019

У вас есть политика сегмента, которая относится к области и применяется к любому пользователю или роли, которые пытаются выполнять операции с этим сегментом. Ссылка, на которую вы ссылаетесь, касается политик пользователей и ролей, которые применяются только к конкретным пользователям. Когда пользователь или роль выполняет операции с сегментом, сочетание их политик и политики сегмента определяет, что ему разрешено делать.

Сочетание политики пользователя или роли с политикой сегмента - это не объединение, а скорее пересечение. Под этим я подразумеваю, что, если политика пользователя или роли не предоставляет, скажем, s3:GetObject, не имеет значения, что политика сегмента предоставляет это действие. И политика пользователя или роли и политика сегмента должна предоставлять ее. На самом деле это еще сложнее, когда вы принимаете во внимание принципы - но ваша политика ведра распространяется на всех, так что здесь это не так.

Вы говорите, что ваша политика работает, но не разрешает запросы от Афины. Это правда, так как это политика сегмента, она ничего не предоставляет ни пользователю, ни роли, она просто указывает, что пользователю или роли будет разрешено делать, если им иным образом будет разрешен доступ к блоку. Кроме того, ваша политика просто отрицает вещи. Явное отрицание не означает разрешать все остальное, это просто означает, что, даже если что-то иное разрешает вещи, упомянутые в вашей политике, ваша политика будет отменять это (в данном случае: даже если политика пользователя или роли позволила s3:GetObject, ваша политика будет запрещать это действие, если исходный IP-адрес соответствует одному из упомянутых - я полагаю, что это ваше намерение).

Пользователь или роль, которую вы используете для выполнения запроса Athena, должны иметь разрешение на

  1. выполнение запросов в Афине,
  2. доступ к объектам каталога (то есть базам данных и таблицам) в Glue
  3. доступ к корзине S3, где могут храниться результаты запроса, и
  4. доступ к корзине S3 и объектам, которые необходимо прочитать для выполнения запроса.

Управляемые политики, на которые вы ссылаетесь, помогут с 1-3, но вы должны написать 4. Когда запрос будет выполнен, IAM оценит 1-4 плюс политику сегмента, чтобы увидеть, разрешено ли запускать пользователю или роли запрос.

...