【问题标题】:AWS IAM Grant permission based on dynamodb attribute valuesAWS IAM 根据 dynamodb 属性值授予权限
【发布时间】:2020-04-28 18:57:00
【问题描述】:

我有一个具有以下属性值的 dynamodb 表 | UserID | Name | paid | |--------|------|-------| | 0001 | Sam | false |

我有一个 IAM polivy 文档,写在一个无服务器 yml 文件中,如下所示

- PolicyName: PaidPolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "s3:PutObject" Resource: - Fn::Join: - "" - - arn:aws:s3:::uploads - "/protected/*"

是否可以根据paid 列值将策略的效果更改为AllowDeny

注意:我发现可以使用Condition属性添加条件,但找不到引用dynamodb表值的方法

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb serverless-framework aws-serverless


    【解决方案1】:

    通过this doc 快速搜索没有任何意义,所以我想到的解决方案是:

    1. 为付费用户和免费用户创建用户组
    2. 将具有允许和拒绝 S3 操作的策略附加到相应的组
    3. 创建 lambda 函数,该函数将根据 DynamoDB 中的列值将用户放入所述组中
    4. 通过流触发 DynamoDB 表更改的 lambda

    【讨论】:

    • 我真的很喜欢这个答案:)。但是我已经在使用两个用户组,一个用于管理员,另一个用于普通用户以及相应的权限和用户角色。如果我再添加两个组,我不确定如何管理角色
    • 然后可能使用 IAM 角色并要求使用这些角色来访问存储桶。然后 lambda 可以更新角色的信任关系以允许这个或那个用户承担它。有很多方法可以做到这一点,很难猜测没有看到设置。
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2022-10-08
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多