将AWS S3设置为类SFTP服务用于数据上传

S3的一个好用的功能是能设置为类似SFTP的共享文件夹让用户上传数据,由于S3不是一部机器而是云原生服务,因此在维护上非常简单,而且价钱便宜,非常适合于大量文件保存和共享。

设置的难点在于policy的设定,以下是步骤。

  1. 进入IAM设置policy

具体策略如下,按需要修改

整个bucket full权限

复制代码
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "S3:*",
      "Resource": "arn:aws:s3:::BUCKET/*",
      "Condition": {}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::BUCKET",
      "Condition": {}
    }
  ]
}

只允许bucket下某个文件夹full权限

复制代码
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "s3:ListBucket",
         "s3:ListBucketMultipartUploads",
         "s3:ListBucketVersions"
       ],
      "Resource": "arn:aws:s3:::BUCKET",
      "Condition": {
        "StringLike": {
          "s3:prefix": "FOLDER/*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action":  "s3:*" ,
      "Resource": "arn:aws:s3:::BUCKET/FOLDER/*",
      "Condition": {}
    }
  ]
}

给予存储桶只读权限

复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "S3:ListBucket",
            "Resource": "arn:aws:s3:::bucket name",
            "Condition": {}
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket name/*",
            "Condition": {}
        }
    ]
}

只允许只读访问存储桶下某个指定文件夹

复制代码
{
  "Version": "2012-10-17",
  "Statement" : [{
    "Sid" : "GiveSimpleListAccessToSharedFolder",
    "Effect" : "Allow",
    "Action" : "s3:ListBucket",
    "Resource" : "arn:aws:s3:::BUCKET",
    "Condition" : {
        "StringLike" : {
       "s3:prefix": "FOLDER/*"
        }
    }
  },
  {
    "Sid" : "GiveReadAccessToSharedFolder",
    "Effect" : "Allow",
    "Action" : "s3:GetObject",
    "Resource" : "arn:aws:s3:::BUCKET/FOLDER/*"
  }]
}
  1. 添加policy后,命名,然后保存

  2. 返回IAM,点Group,添加组4. 设置与policy一样的名字,便于识别

  3. 将之前创建的policy添加到这个组上,等于设定后续用户加入这个组所拥有的用户访问S3的权限

  4. 完成后可以开始创建添加用户,返回IAM,点用户

  5. 勾选编程访问

  6. 添加用户到对应权限组


完成后即可通过S3客户端,例如Cloudberry, Cyberduck访问,把产生的用户IAM key添加到软件即可,如下是Cloudberry界面截图,跟SFTP访问文件夹类似


注意的点,对于中国区S3 policy的权限设定,与外国区有点区别,具体policy如下。如果客户端需要填写S3 server地址,用这个:s3.cn-north-1.amazonaws.com.cn

存储桶full权限

复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws-cn:s3:::bucket"
            ],
            "Condition": {}
        },
        {
            "Sid": "AllowUserToReadWriteObjectDataInDevelopmentFolder",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws-cn:s3:::bucket/*"
            ]
        }
    ]
}

full权限,但是没有删除权限

复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws-cn:s3:::BUCKET"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": "FOLDER/*"
                }
            }
        },
        {
            "Sid": "AllowUserToReadWriteObjectDataInDevelopmentFolder",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws-cn:s3:::BUCKET/FOLDER/*"
            ]
        }
    ]
}
相关推荐
云老大TG:@yunlaoda3604 小时前
开通华为云国际站代理商的UCS服务需要哪些资质?
大数据·数据库·华为云·云计算
TG:@yunlaoda360 云老大6 小时前
如何评估华为云国际站代理商跨境合规要求?
大数据·数据库·华为云·云计算
@HNUSTer6 小时前
基于 GEE 的 Landsat 9 数据实现 11 种植被指数批量计算与导出
云计算·数据集·遥感大数据·gee·云平台·植被指数·landsat 9
TG:@yunlaoda360 云老大6 小时前
如何了解华为云国际站代理商的GACS主要有什么作用呢?
大数据·华为云·云计算
咕噜企业分发小米6 小时前
阿里云基因测序数据分析平台有哪些成功案例?
阿里云·数据分析·云计算
Zhou-XueLin7 小时前
虚拟环境(云主机)下使用多显示器环境连接RDP远程桌面提示协议错误0x112f需禁用WDDM驱动
windows·云计算
wanhengidc7 小时前
巨 椰 云手机 性能稳定
运维·服务器·arm开发·智能手机·云计算
翼龙云_cloud7 小时前
阿里云渠道商:阿里云GPU怎么搭建部署个人作品集博客?
运维·服务器·阿里云·云计算
Elastic 中国社区官方博客7 小时前
Elastic 在 AWS re:Invent:总结一年在 agentic AI 创新中的合作
大数据·人工智能·elasticsearch·搜索引擎·云计算·全文检索·aws
TG:@yunlaoda360 云老大7 小时前
华为云国际站代理商的CCE主要有什么作用呢?
大数据·华为云·云计算·产品运营