AWS Transfer для доступа к сегменту только для записи по SFTP?

Можно ли предоставить пользователю SFTP доступ только для записи к корзине?

  - Sid: AllowListingOfUserFolder
    Action:
      - s3:ListBucket
    Effect: Allow
    Resource: 
      - arn:aws:s3:::mybucket

  - Sid: HomeDirObjectAccess
    Action: 
      - s3:PutObject*
    Effect: Allow
    Resource: arn:aws:s3:::mybucket/*

У меня есть эта политика для моей роли пользователя SFTP прямо сейчас, и она позволяет мне видеть содержимое корзины и помещать новые файлы. Но когда я удаляю AllowListingOfUserFolder (s3:ListBucket), я больше не могу класть файлы.

Мне нужна политика корзины только для записи для полученного мной пользователя SFTP. Я что-то упускаю или это вообще невозможно?


person Tolga Evcimen    schedule 28.08.2020    source источник
comment
Вы имеете в виду AWS Transfer для управляемого сервиса SFTP или свой собственный STFP-сервер в инстансе Amazon EC2?   -  person John Rotenstein    schedule 31.08.2020
comment
AWS Transfer для SFTP   -  person Tolga Evcimen    schedule 31.08.2020


Ответы (2)


Вы ничего не упускаете. Чтобы поместить объект / файл в ведро s3 через сервер передачи, вам необходимо предоставить пользователю доступ к ведру списка, тогда только пользователь может поместить объект в ваш каталог s3.

Однако вы можете прикрепить к пользователю следующую политику, чтобы разрешить конкретным Amazon S3 размещать разрешения на уровне папки (например, mybucket / in / *).

Example:-
  - Sid: AllowListingOfUserFolder
    Action:
      - s3:ListBucket
    Effect: Allow
    Resource: 
      - arn:aws:s3:::mybucket

  - Sid: HomeDirObjectAccess
    Action: 
      - s3:PutObject*
    Effect: Allow
    Resource: arn:aws:s3:::mybucket/in/*
person pooja singh    schedule 11.02.2021

Используя передачу логических каталогов, вы можете скрывать / переименовывать сегменты и имена папок и даже ограничивать пользователей очень конкретными путями. Если вы объедините их с разрешениями S3, описанными в вашем сообщении, вы можете ограничить клиентов именно так, как вы хотите.

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

Пример: [{Entry: / client-visible-landing-directory, Target: / my bucket / writeonlyfolder}]

Таким образом, когда клиент вошел в систему, он бы и выполнил 'ls /', клиент увидит папку с именем client-visible-landing-directory, но взаимодействие с этим каталогом фактически будет взаимодействовать с S3 uri my bucket / writeonlyfolder, за исключением того, что клиент никогда не видит любые фактические имена папок S3.

Вы можете настроить таргетинг на любое количество папок. Объединение этого с политикой S3, которая разрешает использовать только PutObject в этой папке, приведет к созданию пользователя Transfer только для записи. У вас может быть много таких логических отображений, там

Вы можете увидеть более подробную информацию и примеры в сообщении блога логических каталогов: https://aws.amazon.com/blogs/storage/simplify-your-aws-sftp-structure-with-chroot-and-logical-directories/

person Justin Schoeff    schedule 13.06.2021
comment
Вы видели политику, которую я предоставил в вопросе? Это делает то, что вы предлагаете, но не работает. То, что говорит @pooja, здесь - правильный ответ. - person Tolga Evcimen; 14.06.2021
comment
Хм, не уверен, что понимаю. @pooja имеет минимальные разрешения для S3 и использует папку для записи. Однако в этом сценарии клиент по-прежнему может видеть имя корзины. В моем комментарии указывается, что если вы используете его политику И перенос сопоставления логических каталогов, вы также можете скрыть имя сегмента и папки. Таким образом, клиенты могут помещать файл в /, и он отображается в моем s3: // bucket / in. - person Justin Schoeff; 18.06.2021