Безопасные URL-адреса файлов AWS S3 - PullRequest
0 голосов
/ 28 мая 2018

У меня на платформе есть несколько бизнес-документов, загруженных каждым пользователем, и после загрузки они хранятся в корзине AWS S3.Мое требование таково, что пользователь должен иметь доступ к этому контенту только по URL-адресам, указанным в приложении.Прямо сейчас у меня есть S3 url, но это может использоваться любое количество раз.

Прежде всего, возможно ли это в AWS S3?

Если возможно, какой метод?Как мы можем это сделать?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Можно создать ссылку S3 с отметкой времени истечения.

Найденный в Python пример здесь :

#!/usr/bin/env python
# Create a time-bombed URL from an S3 object
# Parameters: s3_url [timeout]
# timeout defaults to 1 minute if not specified
# requires the boto module
import sys,re
try:
  testArg=re.match('s3:\/\/',sys.argv[1])
except:
  print ("usage: " + sys.argv[0] + " s3_object ttl_in_sec")
  sys.exit(1)
if not testArg:
  print "need a valid s3 object as arg"
  sys.exit(1)
try:
  sys.argv[2]
  expTime=int(sys.argv[2])
except:
  expTime=60
(bucket,key)=re.split('/',re.sub('^s3:\/\/','',sys.argv[1]),maxsplit=1)
testKey=re.match('\w',key)
if not testKey:
  print ("something wrong with this url - I have a key of: " + key + " - bailing")
  sys.exit(1)
from boto.s3.connection import S3Connection
s3=S3Connection()
url = s3.generate_url(expTime, 'GET', bucket=bucket, key=key)
print (url)

создаст такую ​​ссылку:

https://runascloud -tmp.s3.amazonaws.com / medium / testFile.txt? Подпись = 6eAuqcwJtpy4RLbIB7LsvTDt7g4% 3D & Expires = 1569188257 & AWSAccessKeyId = AKIAIHPTZ74AMD3GGAMQ

101 * *1015* 101 * *1015* * * * *.
0 голосов
/ 28 мая 2018

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

...