Ограничить доступ к корзине s3 только для определенных экземпляров ec2

Я сгенерировал приведенную ниже политику, но она по-прежнему позволяет всем другим экземплярам ec2 получить доступ к моему ведру. какие изменения я должен внести в эту политику? я хочу, чтобы мое ведро было доступно только для экземпляра, о котором я говорил, а не для любого другого экземпляра

{
  "Id": "Policy1507871740101",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1507871738318",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket/*,
      "Principal": {
        "AWS":"arn:aws:ec2:region:userid:instance/instanceid"
      }
    }
  ]
}

2 ответа

Вы не можете указать идентификатор экземпляра, но вы можете указать IP-адрес в политике S3.

Однако у вас есть другая проблема. Если ваши экземпляры EC2 уже могут получить доступ к S3, либо вы сделали корзину общедоступной, либо вы назначили роль для экземпляра, предоставляющего разрешение. Сначала просмотрите это. Сначала найдите ваши дыры в безопасности.

Ниже приведен пример политики для S3, использующей IP-адреса для предоставления или запрета доступа:

    {
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
         "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
      } 
    } 
  ]
}

Просто чтобы прояснить ситуацию: как уже было сказано, вы должны:

  • удалить политику ведра
  • вместо этого создайте роль EC2
  • прикрепите эту роль к экземплярам, ​​к которым вы хотите иметь доступ
  • изменить политику ролей

Образец ниже:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::bucket_name/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::bucket_name"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::"
        }
    ]
}

Не стесняйтесь редактировать первый оператор, чтобы добавить / удалить необходимые действия.

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