2016-10-04 4 views
0

Я установил ведро в AWS S3. Я предоставил доступ к ведру для моего пользователя IAM с помощью политики ALLOW (с помощью редактора политики Bucket). Мне удалось сохранить файлы в ведро с пользователем. Я работаю с ведром для использования в средствах массовой информации до этого, поэтому кажется, что действие по умолчанию - предоставить публичное разрешение на просмотр файлов (изображений), что отлично подходит для большинства веб-сайтов.AWS S3 запретить доступ только за 1 политику пользователя - ведро

В моем новом проекте я хочу иметь доступ к ведро S3 с пользователем IAM, но хочу отказаться от всего другого доступа. Нет доступа к общедоступному доступу, никакого доступа, кроме пользователя IAM, который должен иметь полный доступ к сохранению/удалению.

Кажется, что я должен был сделать, я читал о here. В нем говорится создать политику Deny с использованием атрибута NotPrincipal, и таким образом он все равно позволит этому пользователю, но откажет всем остальным. Для хорошей мерой Я также добавил Allow политику только для пользователя, я хочу:

{ 
    "Version": "2012-10-17", 
    "Id": "Policy**********", 
    "Statement": [ 
     { 
      "Sid": "Stmt**********", 
      "Effect": "Deny", 
      "NotPrincipal": { 
       "AWS": "arn:aws:iam::*********:user/my_user" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::my_bucket/*" 
     }, 
     { 
      "Sid": "Stmt*************", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::**********:user/my_user" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::my_bucket/*" 
     } 
    ] 
} 

Но это отказ в доступе к каждому даже my_user. Снова я могу подтвердить, что у меня был доступ, когда я только что использовал часть политики Allow выше, но затем публика также имеет доступ на чтение, который я пытаюсь отключить.

Как настроить политику корзины, чтобы предоставить полный доступ только к уникальному пользователю IAM и запретить любой доступ к любому другому пользователю?

Спасибо.

+0

Как, к примеру, «my_user» обращается к ведру? –

ответ

2

Это довольно просто:

  • По умолчанию ведро не имеет никакого публичного доступа
  • НЕ добавить Bucket политика, так как вы не хотите, чтобы предоставить доступ общественности доступа
  • Вместо , добавить политику для пользователя IAM, предоставляя им доступ

Главное, чтобы понять, что пользователь IAM не может получить доступ к контенту через не прошедшие проверку подлинности URL (например, s3.amazonaws.com/bucket/file.jpg), потому что S3 не знает, кто они. Когда IAM пользователь обращается к содержанию, они должны будут использовать аутентификацией доступа так, что S3 знает, кто они такие, например, как:

  • Доступ с помощью консоли управления AWS, используя имя пользователя + пароль
  • Доступ через AWS Command-Line Interface (CLI) с помощью ключа доступа + Secret Key

Эта политика на IAM пользователя будет выглядеть примерно так:

{ 
    "Effect": "Allow", 
    "Action": "s3:*", 
    "Resource": [ 
    "arn:aws:s3:::my_bucket", 
    "arn:aws:s3:::my_bucket/*" 
    ] 
} 
+0

Это золотая, спасибо. Я попробую это. Я заметил, что добавление обеих строк в «Ресурс» было важно. Я пробовал с этой настройкой, которую я получил выше, и потерял контроль над ведром через веб-интерфейс ... Так что это было неправильно. –

+0

Я создал новое ведро, не дал политики ведра и добавил политику IAM, как у вас, и она отлично работает для этого пользователя. Но когда я беру URL-адрес фотографии и помещаю ее в свой браузер, я также могу получить к ней доступ.Вот что я пытался отключить. Таким образом, по умолчанию все ведро имеет открытый доступ. Звучит это правильно? –

+0

Если объект остается общедоступным через анонимный URL-адрес, проверьте сам объект и убедитесь, что он не имеет определенного разрешения «Все». Это связано с тем, что разрешения могут предоставляться на уровне объекта, на уровне пользователя или на уровне пользователя. Также попробуйте его в другом браузере или окне инкогнито в случае, если что-то кэшируется. О, и не используйте команду «Действия -> Открыть», потому что это генерирует предварительно подписанный URL, который предоставляет временный доступ. Вместо этого нажмите синюю ссылку, показанную на панели «Свойства», которая является анонимной. –

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