设置AWS SFTP服务器(公共,服务托管用户)后,我的用户无法访问AWS SFTP服务器中的主文件夹。
我已按照以下说明(here)设置了AWS SFTP服务器。
我按照以下说明(here)创建了角色+政策。
我设置了一个S3存储桶,其中的“主”目录与我选择的用户名(here)相匹配。我还关闭了禁止所有公共访问的功能。
我已经设置了带有相应工件的SFTP服务器:
但是关于我为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"
}
}
答案 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
/
前缀)