You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Amazon Cognito实现S3客户数据独立访问权限方案咨询

架构落地概念指导

核心逻辑完全可以实现你「不需要为每个用户单独创建IAM角色」的需求,通过Cognito属性映射+IAM动态会话权限即可完成全流程适配,具体实现逻辑如下:

前置基础配置

仅需要提前配置1次,后续用户注册不需要再修改IAM侧配置:

  • 在Cognito用户池新增自定义属性custom:sensor_id,设置属性编辑权限为仅管理员可修改,避免用户侧自行篡改绑定的传感器ID
  • 创建1个所有认证用户共用的通用IAM角色,用于Cognito身份池的授权准入,角色的基础权限策略参考如下,仅允许用户访问和自身绑定sensor ID匹配的S3路径资源:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:GetObject", "s3:ListBucket"],
            "Resource": [
                "arn:aws:s3:::你的S3存储桶名称/${aws:PrincipalTag/sensor_id}/*",
                "arn:aws:s3:::你的S3存储桶名称"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["${aws:PrincipalTag/sensor_id}/*"]
                }
            }
        }
    ]
}

如果你的业务是每个传感器对应独立S3桶,只需把Resource字段的桶名部分替换为${aws:PrincipalTag/sensor_id}即可适配。

  • 配置Cognito身份池的主体标签映射规则,将用户池的custom:sensor_id属性映射为IAM会话的sensor_id标签,设置映射属性为只读,避免会话过程中被篡改。

业务流程适配

完全匹配你预期的5步流程,不需要额外调整业务逻辑:

  1. 客户拿到带唯一sensor ID的传感器,无额外变化
  2. 客户注册时提交sensor ID,后台先校验该ID为企业已出货、未被绑定的合法ID,校验通过后写入用户池的custom:sensor_id属性
  3. 不需要单独创建IAM角色,权限控制通过上述通用角色的动态标签匹配实现
  4. 用户登录后,前端用Cognito返回的ID凭证向身份池兑换AWS临时访问密钥,该密钥自动携带当前用户绑定的sensor_id标签,天然只能访问对应路径的S3资源,不需要额外做角色切换逻辑
  5. 对应S3路径/桶新增数据时,不需要更新任何权限配置,用户直接即可访问

额外注意事项

  • 如果需要支持单个用户绑定多个传感器ID,只需将custom:sensor_id改为存储多值的JSON数组,同时调整IAM策略的Condition规则适配多值匹配即可
  • 要确保传感器上传数据时,路径严格按照sensor_id/xxx的规则存储,避免权限匹配失效

内容的提问来源于stack exchange,提问作者crabapus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:45:03