S3 с политикой IAM - PullRequest
       22

S3 с политикой IAM

1 голос
/ 19 января 2012

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 28 мая 2012

Чтобы люди могли получить доступ к вашим файлам, вам нужно либо сделать корзину общедоступной, а затем получить доступ к URL-адресам каждого объекта, который можно узнать, проверив свойства каждого объекта в консоли управления AWS. Суть в том, что любой, кто знает этот URL, может получить доступ к файлам. Чтобы сделать его более безопасным, используйте ACL, чтобы ограничить доступ только для чтения для всех пользователей. Перейдите к разрешениям и добавьте новое разрешение для «Все» и установите только флажок «Открыть / загрузить». если вы хотите ограничить доступ только нескольким пользователям, вам придется использовать политики IAM. С политикой IAM вы получите ключ безопасности и секретный ключ доступа. Теперь вы НЕ МОЖЕТЕ добавить секретный ключ доступа в конце вашей строки, чтобы предоставить доступ пользователям. Секретный пользовательский ключ должен быть «СЕКРЕТНЫМ». Но вы можете предоставить предварительно назначенные URL-адреса своим пользователям через код. Вот пример 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 голосов
/ 19 января 2012

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

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

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

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

ИЛИ

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

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

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

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

0 голосов
/ 19 января 2012

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

...