Политика корзины S3 запрещает все, кроме конкретной роли службы AWS и роли IAM - PullRequest
1 голос
/ 06 августа 2020

Можете ли вы написать политику корзины s3, которая будет запрещать доступ всем участникам, кроме конкретной роли IAM и AWS роли службы (например, billingreports.amazon aws .com ).

Я пробовал использовать ' Deny ' с ' NotPrincipal ', но ни один из приведенных ниже примеров не работает, поскольку я не думаю, что возможность иметь несколько типы принципалов поддерживаются AWS?

Это позволяет вам сохранить политику, но блокирует из корзины (предупреждение: только root пользователь может затем обновить политику для разблокировки)

"Effect": "Deny",
     "NotPrincipal": {
          "AWS": [
          "arn:aws:iam::<account_id>:root",
          "arn:aws:iam::<account_id>:role/specialBillingRole"
     ],
     "Service": "billingreports.amazonaws.com"
}

Поэтому я пытаюсь использовать условия , но не могу найти правильные комбинации, которые будут работать. Вот пример политики.

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "billingreports.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Sid": "",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-bucket/*",
                "arn:aws:s3:::my-bucket"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:PrincipalArn": [
                        "arn:aws:iam::<account_id>:role/specialBillingRole",
                        "billingreports.amazonaws.com",
                        "<account_id>"
                    ]
                }
            }
        }
    ]
}

ОБНОВЛЕНО вопрос в соответствии с некоторыми предложениями комментариев.

2-е ОБНОВЛЕНИЕ Также попробовал следующее, которое по-прежнему дает доступ ко всем ролям / пользователям в учетной записи (нельзя использовать подстановочные знаки в Principal).

{
     "Effect": "Deny",
     "Principal": {
          "AWS": "arn:aws:iam::<account_id>:root"
     },
     "Action": "s3:*",
     "Resource": [
          "arn:aws:s3:::my-bucket/*",
          "arn:aws:s3:::my-bucket"
     ],
     "Condition": {
          "ArnNotEquals": {
               "aws:PrincipalArn": [
                    "arn:aws:iam::<account_id>:role/specialBillingRole",
                    "<account_id>"
               ]
          }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...