当前位置: 首页 > 知识库问答 >
问题:

DynamoDB细粒度访问控制和二级索引

越狐若
2023-03-14

所以,我目前正在制作一个包含多个索引的DynamoDB表,并试图管理访问控制。

我有一个键(organizationId),我不想用它作为我的二级索引分区或排序键,因为它在查询方面几乎毫无意义。

DynamoDB工作台

  • 表名:执行
  • 分区键:组织ID(字符串)

DynamoDB二级索引

  • 主分区键:进程ID(String)
  • 主排序键:状态(数字)

以下IAM策略条件是否会有效地限制对基于organizationId的二级索引的访问?

"Condition": {
    "ForAllValues:StringEquals": {
        "dynamodb:LeadingKeys": [
            "anOrganizationId / Variable"
        ]
    }
}

共有2个答案

琴琪
2023-03-14

下面的权限策略允许使用dynamodb:Attributes条件键查询二级索引(这里的示例索引名为:topCoreDateTimeIndex)。该策略还将查询限制为仅请求已投影到索引中的特定属性。请注意资源和条件部分

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "QueryOnlyProjectedIndexAttributes",
            "Effect": "Allow",
            "Action": [
                "dynamodb:Query"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:Attributes": [
                        "TopScoreDateTime",
                        "GameTitle",
                        "Wins",
                        "Losses",
                        "Attempts"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
戚兴邦
2023-03-14

好的,我可以建议什么-你实际上可以做第二个索引为“组织标识#进程标识”-组织标识在搜索时应该总是已知的-正如你计划我猜搜索具有特定进程标识的组织内的所有项目?

这应该适合你(在索引上,而不是在表格上)

"Condition": {
                "ForAllValues:StringLike": {
                    "dynamodb:LeadingKeys": "${aws:PrincipalTag/organizationId}#*"
                },

如果我假设标签上有组织id

 类似资料:
  • Hystrix 隔离策略细粒度控制 Hystrix 实现资源隔离,有两种策略: 线程池隔离 信号量隔离 对资源隔离这一块东西,其实可以做一定细粒度的一些控制。 execution.isolation.strategy 指定了 HystrixCommand.run() 的资源隔离策略:THREAD or SEMAPHORE,一种基于线程池,一种基于信号量。 // to use thread isol

  • 本文向大家介绍权限控制之粗粒度与细粒度概念及实现简单介绍,包括了权限控制之粗粒度与细粒度概念及实现简单介绍的使用技巧和注意事项,需要的朋友参考一下 本文简单介绍了权限控制之粗粒度与细粒度概念及实现,下面看看具体内容。 1.   什么是粗粒度和细粒度权限 粗粒度权限管理,对资源类型的权限管理。资源类型比如:菜单、url连接、用户添加页面、用户信息、类方法、页面中按钮。。 粗粒度权限管理比如:超级管理

  • 原文再续,书折第一回。 很多其他编程语言都有一种”protected“设定,可以限制某些类方法只能被它的子类所使用。 Swift支持了访问控制后,大家给我们的反馈都很不错。而有的开发者问我们:“为什么Swift没有类似protected的选项?” 当我们在设计Swift访问控制的不同等级时,我们认为有两种主要场景: 在一个APP里:隐藏某个类的私密细节。 在一个开源框架里:不让导入这个框架的APP

  • 问题: 主键为复合哈希范围键的DynamoDB表是唯一的。这是否也延伸到二级指数? 示例: 我有一个带有post_id主键和comment_id范围键的comments DynamoDB表。此外,还有一个带有date-user_id范围键的本地辅助索引。 每个条目都是用户在发布时留下的评论。二级索引的目的是统计在特定的一天,有多少唯一的用户在一个帖子上留下了评论。 条目1:post_id:1 co

  • 大多数Web应用程序在使用户可以访问该功能之前验证功能级别访问权限。但是,如果未在服务器上执行相同的访问控制检查,则黑客无法在未经适当授权的情况下进入应用程序。 我们将通过以下每项来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 具有网络访问权限的任何人都可以向应用程序发送请求。 攻击者的方法 - 谁是授权系统用户,只需将URL或参数更改为特权函数即可。 安全弱点

  • 我希望使用DynamoDB表来请求我在查询中创建的二级索引。 从现在开始,对于我正在做的一个二级索引: 我会像这样构建我的KeyConditionExpression: 我读了一遍又一遍这份文件,但我不知道怎么做: https://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/gettingstartedguide/GettingStarted.P