Защита активов S3 от прямой загрузки - PullRequest
0 голосов
/ 05 октября 2018

Мои активы (изображения / видео и т. Д.) Хранятся в S3, и все работает отлично.

Однако видео должно быть защищено от скачивания пользователем.Я думал о многочисленных способах использования Ajax и BLOB-объектов, скрытия контекстных меню и т. Д., Но предпочел бы более простую, но более сильную технику.

Идея, о которой я подумал, - добавить защиту в корзину S3, чтобы к ресурсам можно было получить доступ только с самого веб-сайта (роль Iam, к которой имеет доступ экземпляр EC2).

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

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

В дополнение к уже упомянутому Cloudfront вы также можете использовать AWS Elastic Transcoder (https://aws.amazon.com/elastictranscoder/) для преобразования видеофайлов в формат mpeg-dash или hls (https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP). Эти форматы в основном состоят из коротких (дляпример длиной 10 с) видео части, допускающие адаптивный битрейт и значительно усложняющие загрузку как 1 длинное видео.

0 голосов
/ 05 октября 2018

Чтобы CloudFront работал с статическими конечными точками веб-сайта S3, AWS обычно рекомендует иметь публичные разрешения на чтение для корзины S3.Не существует собственного способа обеспечения безопасности между CloudFront и статической конечной точкой веб-сайта S3, однако в этом случае мы можем использовать обходной путь для удовлетворения вашего варианта использования.

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

{
   "Version": "2012-10-17",
   "Id": "http referer policy example",
   "Statement": [
     {
       "Sid": "Allow get requests referred by www.example.com and example.com.",
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::examplebucket/*",
       "Condition": {
         "StringLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
       }
     },
      {
        "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::examplebucket/*",
        "Condition": {
          "StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
        }
      }
   ]
}
0 голосов
/ 05 октября 2018

Вы можете обслуживать видеоконтент через Amazon CloudFront, который передает контент по видеопротоколам, а не для загрузки файлов.Это может обеспечить безопасность вашего контента (в основном).

См .: Потоковое видео по запросу и потоковое видео в реальном времени с CloudFront - Amazon CloudFront

После этого вы сохраните конфиденциальность видео вS3, но используйте Origin Access Identity , который позволяет CloudFront получать доступ к контенту и предоставлять его пользователям.

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