Не удается получить доступ к домашней папке на SFTP-сервере AWS - PullRequest
0 голосов
/ 23 октября 2019

После настройки SFTP-сервера AWS (общедоступные, управляемые пользователями службы) мой пользователь не может получить доступ к домашней папке на SFTP-сервере AWS.

Я настроил SFTP-сервер AWS, выполнив следующие действия. эти инструкции ( здесь ).

Я создал роль + политику, следуя этим инструкциям ( здесь ).

Я настроил корзину S3 с каталогом "Home", который соответствует выбранному имени пользователя( здесь ). Я также отключил блокировку всего публичного доступа.

Я настроил SFTP-сервер с соответствующими артефактами:

  • S3 bucket + Домашний каталог
  • Пользователь
  • Роль + политика

Но кое-что из политики «роль +», которую я настроил для пользователя SFTP, не дает пользователю доступ к его папке / хранилищу S3. Т.е. политика IAM не применяет ожидаемые разрешения к домашнему каталогу пользователя SFTP. Это ошибка, которую я получаю от sftp ( A ).

Проверка того, что пользователь SFTP также дает мне правильную роль, домашний каталог и политику ( B ).

Чего здесь не хватает, что даст пользователю SFTP только егодомашний каталог?

A

λ sftp -i my_key_pair my-user@sftp.my.domain

Enter passphrase for key 'my_key_pair':
Connected to my-user@sftp.my.domain.
sftp>
sftp> ls
remote readdir("/s3-bucket/my-home-dir"): Permission denied
sftp>
sftp> put foobar.txt input/
Uploading foobar.txt to /s3-bucket/my-home-dir/input/
remote open("/s3-bucket/my-home-dir/input/"): Permission denied
sftp>

B

λ AWS_ACCESS_KEY_ID=FOO \
AWS_SECRET_ACCESS_KEY=BAR \
aws --region us-east-2 transfer describe-user --server-id my-server --user-name my-user
{
    "ServerId": "my-server",
    "User": {
        "UserName": "my-user",
        "Tags": [],
        "SshPublicKeys": [
            {
                ...
            }
        ],
        "Role": "arn:aws:iam::123456789:role/my-role",
        "HomeDirectory": "/s3-bucket/my-home-dir/",
        "Policy": 
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowListingOfUserFolder",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::${transfer:HomeBucket}"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "${transfer:HomeFolder}/*",
            "${transfer:HomeFolder}"
          ]
        }
      }
    },
    {
      "Sid": "HomeDirObjectAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObjectVersion",
        "s3:DeleteObject",
        "s3:GetObjectVersion",
        "s3:GetObjectACL",
        "s3:PutObjectACL"
      ],
      "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*"
    }
  ]
}
,
        "Arn": "arn:aws:transfer:us-east-2:12345687:user/my-server/my-user"
    }
}

1 Ответ

0 голосов
/ 24 октября 2019

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

S3 bucket + Home directory
User
Role + policy
public + private keys
Trust policy

Я также удостоверился, что у меня есть две отдельные политики, как указано здесь: https://docs.aws.amazon.com/transfer/latest/userguide/users.html#users-policies-scope-down

  • общие , привязанные к роли (убедитесь, чтов имени сегмента нет префикса /)
  • область действия вниз , привязана к SFTP-пользователю
  • Я снял ограничение корзины, чтобы оно не было общедоступным. Я все еще думаю, что вам нужна роль / политика, чтобы увидеть это.
...