2012-01-18 5 views
1

Я создал группу с доступом только для чтения к объектам S3, а затем добавил нового пользователя в эту группу.S3 с политикой IAM

У меня возникли проблемы с пониманием того, каким будет URL-адрес файла. У меня есть связь до сих пор, как:

https://s3.amazonaws.com/my-bucket/ 

Мне нужно передать в какой-то id и key, чтобы люди в этой группе получить доступ ли? Каковы эти параметры и где я нахожу эти ценности?

ответ

2

Чтобы люди могли получить доступ к вашим файлам, вам необходимо либо сделать ведро общедоступным, а затем получить доступ к URL-адресам каждого объекта, который вы можете узнать, проверив свойства каждого объекта в консоли управления AWS. Уловка в том, что любой, кто знает этот URL, может получить доступ к файлам. Чтобы сделать его более безопасным, используйте ACL, чтобы ограничить доступ только для чтения для всех пользователей. Перейдите к разрешениям и добавьте новое разрешение для «Все» и установите флажок «Открыть/загрузить». , если вы хотите ограничить доступ только к нескольким пользователям, тогда вы будете использовать политики IAM. С помощью политики IAM вы получите ключ безопасности и секретный ключ доступа. Теперь вы не можете добавить секретный ключ доступа в конце строки, чтобы предоставить доступ к пользователям. Секретный ключ пользователя должен быть «SECRET». Но вы можете сделать это с помощью кода. Вот пример C#

private void GetWebUrl() 
     { 
      var request = 
       new GetPreSignedUrlRequest().WithBucketName(your bucketName) 
       .WithKey(Your obj KEY); 
      request.WithExpires(DateTime.Now.Add(new TimeSpan(0, 0, 0, 50)));// Time you want URL to be active for 
      var url = S3.GetPreSignedURL(request); 

     } 

Улов является URL активным только в течение данного времени. вы можете увеличить его, хотя. Кроме того, в приведенной выше функции «S3' является экземпляром AmazonS3 клиента, который я создал:

private AmazonS3Client S3; 
public static AmazonS3Client CreateS3Client() 
     { 

      var appConfig = ConfigurationManager.AppSettings; 
      var accessKeyId = appConfig["AWSAccessKey"]; 
      var secretAccessKeyId = appConfig["AWSSecretKey"]; 
      S3= new AmazonS3Client(accessKeyId, secretAccessKeyId); 
      return S3; 
     } 
0

У каждого пользователя IAM будет свой собственный сертификат и ключ, который они устанавливают с помощью любых S3tools, которые они используют. Просто дайте им URL-адрес для входа в их IAM AWS accont и их учетные данные для входа в систему, и они должны быть хорошими. URL-адрес ведра будет таким же.

0

URL-адрес файла на S3 не изменяется.

Обычно вы бы не пользовались той формой, которую имеете, а скорее: https://my-bucket.s3.amazonaws.com/path/to/file.png - где путь/to/file.png - это ключ. (см. виртуальные размещенные совместимые имена ковша).

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

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

ИЛИ

Вы можете использовать API AWS, и использовать учетные данные, которые вы должны напрямую загрузить файл.

Это зависит от того, что вы делаете.

Например, чтобы создать веб-страницу со ссылками на файлы, вы можете создать кучу ограниченных по времени URL-адресов, по одному для каждого файла. Эта страница будет сгенерирована кодом на вашем сервере при входе пользователя в систему и наличии каких-либо учетных данных IAM.

Или, если вы хотите написать инструмент для управления репозиторией S3, вы можете просто загрузить/загрузить и т. Д. Напрямую с помощью API.

+0

Так что я не могу связаться с моим-bucket.s3 ... и добавьте секретный ключ пользователя IAM и Если я правильно понимаю, единственный способ, которым я могу получить объекты, чтобы быть видимым для аутентифицированного пользователя IAM по прямой ссылке, - написать скрипт, который служит файлу с использованием S3 API? – doremi

Смежные вопросы