видео-файлы amazon s3 доступны только с моего домена / сервера? - PullRequest
6 голосов
/ 12 марта 2012

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

Если это поможет, я использую jwplayer, который загружается из списка воспроизведения XML, который имеет все ссылки.Этот плейлист определенно можно открывать и просматривать из любого места, и я ожидаю, что его легко скопировать и вставить.

Я не хочу маскировать URL, потому что это означает, что мое ведро доступно для чтения всем.Вероятно, есть некоторый шанс, что кто-то найдет URL моего контейнера и имена файлов и соединит все вместе ...

Ответы [ 4 ]

7 голосов
/ 12 марта 2012

Это возможно с помощью с использованием Bucket Policies , что позволяет определять права доступа к ресурсам Amazon S3 - есть пара примеров случаев для Amazon S3 Bucket Policies иллюстрирует функциональность, и среди них вы найдете пример для Ограничения доступа к определенным IP-адресам :

Этот оператор дает разрешения любому пользователю выполнятьлюбое действие S3 над объектами в указанном сегменте.Однако запрос должен исходить из диапазона IP-адресов, указанных в условии.

В зависимости от специфики вашего варианта использования, политика сегмента для этого может выглядеть так:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*" 
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.168.143.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.168.143.188/32" 
                } 
            } 
        } 
    ]
}

Как показано, значение aws:sourceIp для параметров IPAddress и NotIpAddress выражено в CIDR-нотации , что обеспечивает соответствующую гибкость при составлении требуемой области.

Наконец, выВозможно, вы захотите проверить рекомендуемый Генератор политик AWS , выберите тип Политика S3 Bucket и изучите доступные Действия и Условия , чтобы составить большецелевые политики для вашего варианта использования в конечном итоге - документация для Условия объясняет это подробно.

6 голосов
/ 03 апреля 2014

IP-адрес поможет, если ваш сервер собирается получить доступ к вашему ведру.Но JWPlayer со стороны клиента.Таким образом, запрос напрямую идет от jwplayer (браузера) к URL-адресу корзины s3, а не через ваш сервер.В этом случае вам поможет «политика корзины реферера».

{
"Version": "2008-10-17",
"Statement": [
  {
    "Sid": "1",
    "Effect": "Deny",
    "Principal": {
      "AWS": "*"
    },
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::yourbucketname/*",
    "Condition": {
      "StringNotLike": {
        "aws:Referer": [
          "http://yoursitename.com/*",
          "http://*.yoursitename.com/*"
        ]
      }
    }
  }
]
}

Так что теперь s3 разрешит, если этот запрос поступит только с вашего сайта.

1 голос
/ 12 марта 2012

Вы можете защитить свое ведро, что по умолчанию так и есть.(имеется в виду, что у вас есть доступ только к объектам в нем). Затем вы можете запросить файлы из Amazon S3 со своего веб-сайта и указать для него время, в течение которого пользователь может их видеть.

//set time so that users can see file for 1 minute. then it is protected again.
$response = $s3->get_object_url(YOUR_A3_BUCKET, PATH/TO/FILE, '1 minutes');

Это автоматически предоставит вамURL, с которым связаны параметры, который доступен только в течение 1 минуты.Вы можете использовать его в качестве источника на своем веб-сайте, а затем они не смогут скопировать и вставить его в браузер через 1 минуту.

Подробнее об этом можно прочитать в Amazon SDK для PHP * 1007.*

0 голосов
/ 15 октября 2014

Ограничение доступа к определенному HTTP рефереру

Предположим, у вас есть веб-сайт с доменным именем (www.example.com или example.com) со ссылками на фотографии и видео, хранящиеся в вашем корзине Amazon S3, например, корзине.По умолчанию все ресурсы Amazon S3 являются частными, поэтому только учетная запись AWS, создавшая ресурсы, может получить к ним доступ.Чтобы разрешить доступ для чтения к этим объектам с вашего веб-сайта, вы можете добавить политику сегментов, которая разрешает s3: GetObject разрешение с условием, используя ключ aws: referer, что запрос get должен исходить от определенных веб-страниц.Следующая политика задает условие StringLike с помощью aws: ключ условия Referer.

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

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