无法访问AWS SFTP服务器中的主文件夹

时间:2019-10-23 13:41:32

标签: amazon-web-services amazon-s3 sftp amazon-iam

设置AWS SFTP服务器(公共,服务托管用户)后,我的用户无法访问AWS SFTP服务器中的主文件夹。

我已按照以下说明(here)设置了AWS SFTP服务器。

我按照以下说明(here)创建了角色+政策。

我设置了一个S3存储桶,其中的“主”目录与我选择的用户名(here)相匹配。我还关闭了禁止所有公共访问的功能。

我已经设置了带有相应工件的SFTP服务器:

  • S3存储桶+主目录
  • 用户
  • 角色+政策

但是关于我为SFTP用户设置的角色+政策的某些内容,并没有使该用户访问其S3 bucker / folder。也就是说,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 :(得分:0)

所以我能够弄清楚这个问题。我确保我在这些点上具有正确的设置。

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用户
  • 我取消了将其公开的限制。我仍然认为您需要一个角色/政策才能看到它。