AWS Transfer Family SFTP添IP限制后上传权限拒绝问题排查
AWS Transfer Family SFTP添加IP限制后上传权限拒绝问题解决
问题核心原因
你在带IP限制的IAM策略里加了"Bool": {"aws:ViaAWSService": "false"}条件,但AWS Transfer Family作为AWS托管服务,在代表用户调用S3时,aws:ViaAWSService的值是true,这个条件直接导致S3操作的权限校验失败——和IP限制本身无关,也不需要在角色的信任策略中添加IP限制。
修正后的IAM策略
移除aws:ViaAWSService的条件,保留IP限制即可:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-east-1:XXXXX:key/XXXXX" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::data/*", "arn:aws:s3:::data" ], "Condition": { "IpAddress": { "aws:SourceIp": "X.X.X.X/32" } } } ] }
补充说明
- CloudWatch日志里的
SourceIP是客户端真实IP,IAM策略里的aws:SourceIp会正确识别这个值(Transfer Family会把客户端IP传递到IAM上下文),只要IP匹配就会生效。 - 信任策略的作用是控制谁能扮演该角色,Transfer Family服务本身需要通过它操作S3,修改信任策略加IP限制会导致服务无法正常扮演角色,反而引发更多问题,完全没必要。
内容的提问来源于stack exchange,提问作者user19644362
相关产品推荐
相关产品推荐

