Как ограничить доступ к статическому сайту s3 в VPN

Я пытаюсь обеспечить доступ к внутреннему статическому веб-сайту.

Каждый в компании использует VPN для доступа к нашему VPC Amazon, поэтому я хотел бы ограничить доступ к этому сайту, если вы используете VPN.

Итак, я узнал эту документацию в AWS, чтобы использовать конечную точку VPC, которая, кажется, я ищу.

Итак, я создал VPC endoint с следующей политикой.

{
  "Statement": [
    {
        "Action": "*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    }
  ]
}

В моем ведомости S3 я подтвердил, что могу получить доступ к index.html как из обычного Web, так и из VPN.

Затем я добавил следующую политику ведра для ограничения только конечной точки VPC.

{
  "Id": "Policy1435893687892",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1435893641285",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucket/*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789:user/op"
        ]
      }
    },
    {
       "Sid": "Access-to-specific-VPCE-only",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::mybucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:sourceVpce": "vpce-1234567"
         }
       },
       "Principal": "*"
     }
  ]
}

Теперь Regular Web получает 403, но я также получаю 403, когда я за VPN компании.

Я что-то пропустил?

Ответы

Ответ 1

@Michael - sqlbot является правильным.

Кажется, что вы делаете это ограничение доступа к ведро S3, где вы храните этот статический веб-контент для запросов, поступающих от конкретного VPC VPC, используя конечную точку VPC.

Конечные точки VPC устанавливают ассоциации между службами AWS, чтобы разрешать запросы, поступающие из INSIDE VPC.

Вы не можете получить то, что хотите, с конфигурацией ACC VPC и S3, но вы можете получить ее с помощью ACL и некоторой конфигурации VPN.

Предположим, что подключение к вашей компании VPN не означает, что весь трафик, в том числе интернет-трафик между VPN-клиентами и AWS S3, будет маршрутизироваться через это VPN-соединение, потому что, как правило, работает обычная конфигурация VPN. Если это не так, опустите следующий шаг:

  • Добавить статический маршрут в ваш блок S3 к конфигурации вашего VPN-сервера, поэтому каждый клиент пытается добраться до ведра через VPN вместо того, чтобы пытаться установить прямое подключение к Интернету с ним. Например, в OpenVPN отредактируйте server.conf, добавив следующую строку:

    push "route yourS3bucketPublicIP 255.255.255.255"

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

  1. Используйте поле ACL в поле ACS "IpAddress" для настройки нужной конфигурации. Он должен выглядеть примерно так:

.

{
  "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"} 
      } 
    } 
  ]
}

Вы используете поле IpAddress, чтобы разрешить IP или диапазон IP-адресов, используя CIDR-нотацию и поле NotIpAddress одинаково для ограничения IP или диапазон IP-адресов (вы можете опустить этот). Этот IP-адрес (или диапазон IP-адресов), указанный в IpAddress, должен быть общим адресом (ами) интерфейса (-ов) шлюза, который маршрутизирует ваш интернет-трафик вашей компании (IP-адрес S3 видит, когда кто-либо из ваша VPN пытается подключиться к нему).

Дополнительная информация:

http://www.bucketexplorer.com/documentation/amazon-s3--access-control-list-acl-overview.html

http://aws.amazon.com/articles/5050/

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-3

https://openvpn.net/index.php/open-source/documentation/howto.html

Ответ 2

Собственно, @Michael - sqlbot был до 15 мая 2015 года. Что вы делаете правильно. Вы нашли документацию (опять же, правильно), которая позволяет вам настроить ведро S3 в VPC (возможно, без доступа из внешнего мира), так же, как вы настроили компьютеры EC2. Следовательно,

В моем ведомости S3 я подтвердил, что могу получить доступ к index.html как из обычного Web, так и из VPN.

- проблема. Если вы не ошиблись, вы не сможете получить доступ к ведру из обычной сети. Все, что вы сделали после этого, не имеет значения - потому что вы не создали ведро S3 внутри вашего VPC-соединения, подключенного к VPN.

Вы не даете подробных сведений о том, что вы сделали на самом первом шаге; проще всего удалить это ведро и начать с самого начала. С необходимостью настраивать таблицы маршрутов и что не так просто сделать ошибку. Это представляет собой простой набор инструкций, но он не охватывает столько же, сколько и документ, который вы следовали.

Но любые ссылки, которые предшествуют этой возможности (то есть любые ссылки до мая 2015 года), не имеют значения.