Запретить Amazon S3 корзины и объекты от общественности - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь написать политики сегментов, чтобы запретить публичный доступ к сегментам и объектам, используя методологию углубленной защиты AWS согласно Как использовать политики групп и применять глубокую защиту, чтобы помочь обезопасить свой Amazon S3 Данные | Блог безопасности AWS .

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "DenyUnSecureCommunications",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::ironman111",
            "arn:aws:s3:::ironman111/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        }
    },
    {
        "Sid": "DenyPublicReadACL",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
        ],
        "Resource": "arn:aws:s3:::ironman111/*",
        "Condition": {
            "StringEquals": {
                "s3:x-amz-acl": [
                    "public-read",
                    "public-read-write",
                    "authenticated-read"
                ]
            }
        }
    },
    {
        "Sid": "DenyPublicReadGrant",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
        ],
        "Resource": "arn:aws:s3:::ironman111/*",
        "Condition": {
            "StringLike": {
                "s3:x-amz-grant-read": [
                    "*http://acs.amazonaws.com/groups/global/AllUsers*",
                    "*http://acs.amazonaws.com/groups/global/AuthenticatedUsers*"
                ]
            }
        }
    },,
    {
        "Sid": "DenyPublicListACL",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:PutBucketAcl",
        "Resource": "arn:aws:s3:::ironman111",
        "Condition": {
            "StringEquals": {
                "s3:x-amz-acl": [
                    "public-read",
                    "public-read-write",
                    "authenticated-read"
                ]
            }
        }
    },
    {
        "Sid": "DenyPublicListGrant",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:PutBucketAcl",
        "Resource": "arn:aws:s3:::ironman111",
        "Condition": {
            "StringLike": {
                "s3:x-amz-grant-read": [
                    "*http://acs.amazonaws.com/groups/global/AllUsers*",
                    "*http://acs.amazonaws.com/groups/global/AuthenticatedUsers*"
                ]
            }
        }
    }
]
  }

Однако я не вижу вышеупомянутой политики, ограничивающей меня от того, чтобы сделать контейнер или объект общедоступным или его списки ACL для публичного чтения / записи.

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

    {
        "Sid": "DenyAuthenticatedUsersAccess",
        "Effect": "Deny",
        "Principal": "*",
        "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
        ],
        "Resource": "arn:aws:s3:::ironman111/*",
        "Condition": {
            "StringNotEquals": {
                "s3:x-amz-acl": "private"
            }
        }
    },
    {
        "Sid": "DenyAuthenticatedUsersAccess",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:PutBucketAcl",
        "Resource": "arn:aws:s3:::ironman111",
        "Condition": {
            "StringNotEquals": {
                "s3:x-amz-acl": "private"
            }
        }
    },

Пожалуйста, предложите, что не так в первой политике.

Я не могу использовать валидатор политики IAM, так как это политика сегмента. Кроме того, я не могу проверить кросс-аккаунт, так как у меня нет другого канонического идентификатора.

Почему порядок важен в массиве ресурсов?


Обновлено:

Я добавил следующую политику для пользователя IAM, и он по-прежнему разрешает создание корзины с открытым доступом.

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Deny",
        "Action": [
            "s3:CreateBucket",
            "s3:PutBucketAcl"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "s3:x-amz-acl": [
                    "public-read",
                    "public-read-write"
                ]
            }
        }
    }
]
}

Мне нужны политики, чтобы блоки не были общедоступными.

1 Ответ

0 голосов
/ 12 мая 2018

Первая политика - запрещение загрузки объектов с помощью Списка контроля доступа, который сделает объекты общедоступными.

Вы правы в том, что политика не остановит вас "от того, чтобы сделать корзину или объект общедоступным илиего списки ACL для публичного чтения / записи ".Скорее, это предотвращает сохранение файлов как общедоступных объектов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...