Доступ к корзине AWS S3 запрещен

Вот политика корзины, которую я реализовал в своей корзине.

    {
    "Id": "Policy1535460101139",
    "Version": "2012-10-17",
    "Statement": [
      {
       "Sid": "Stmt1535460099601",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": "arn:aws:s3:::bucketname",
       "Condition": {
       "StringNotEquals": {
          "aws:SourceVpc": "vpc-id"
        }
      },
      "Principal": "*"
    }
  ]
}

Просто после сохранения этой политики я не могу вывести список или что-либо сделать с моим хранилищем из консоли (у меня полный доступ к s3), и все, что отображает доступ запрещен. Следовательно, когда я пытался скопировать файл из одного из экземпляров ec2 в VPC, копирование было успешным, но я не смог перечислить объекты в корзине. Я получаю сообщение об ошибке "Отказано в доступе" (у экземпляра ec2 есть роль с полным разрешением на ведро). Вот роль, прикрепленная к экземпляру EC2.

    {
     "Version": "2012-10-17",
     "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::bucketname/*"
      }
    ]
  }

То, что я хочу знать, является ли это странное поведение причиной моей политики ведра, или это может быть что-то еще. Если да, какие-либо советы о том, как я могу изменить свою политику ведра сейчас Более того, вот скриншот с моей консоли.

2 ответа

Решение

Причина, по которой я не смог получить доступ к корзине даже из экземпляра внутри vpc, заключалась в том, что у меня не было конечной точки VPC-S3, присоединенной к таблице маршрутизации подсети, которой принадлежал экземпляр. Слово "aws:SourceVpc" используется, чтобы разрешить множественные подключения к конечной точке от одного и того же VPC, как указано в документах, вопреки тому, что я думал, т.е. он будет разрешать все запросы от упомянутого VPC. Таким образом, окончательное решение этого вопроса состоит в том, что вы можете удалить "корзину" из экземпляра, присутствующего внутри упомянутого VPC, при условии, что он принадлежит подсети, к которой присоединена конечная точка VPC - S3.

Да, это на 100% из-за вашей политики.

Политика говорит:

  • "Effect": "Deny", -- Запретить доступ
  • "Principal": "*" -- Для всех
  • "Resource": "arn:aws:s3:::bucketname" - к этому ведру
  • "StringNotEquals": {"aws:SourceVpc": "vpc-id" - Если запрос не приходит от этого VPC

Что касается того, как это исправить, это зависит от ваших требований, которые вы не указали в своем вопросе.

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