Amazon dynamodb 如何为DynamoDB创建一个用户id等于DyanmoDB表名的策略?
我试图创建一个DDB策略,其中Cognito用户id(sub)应该等于DynamoDB表名。DDB中的表名是用户的id(sub)。 因此,策略应仅限制该用户对用户表的访问。 下面是我创建的一个伪策略 我不清楚的是如何指定用户id(sub)应等于DDB表名Amazon dynamodb 如何为DynamoDB创建一个用户id等于DyanmoDB表名的策略?,amazon-dynamodb,amazon-cognito,Amazon Dynamodb,Amazon Cognito,我试图创建一个DDB策略,其中Cognito用户id(sub)应该等于DynamoDB表名。DDB中的表名是用户的id(sub)。 因此,策略应仅限制该用户对用户表的访问。 下面是我创建的一个伪策略 我不清楚的是如何指定用户id(sub)应等于DDB表名 { "Version": "2020-11-01", "Statement": [ { "Sid": "
{
"Version": "2020-11-01",
"Statement": [
{
"Sid": "xxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"dynamodb:Scan",
"dynamodb:Query",
],
"Resource": [ "arn:aws:dynamodb:<REGION>:<ACCOUNT_ID>:table/<${www.amazon.com:user_id}>"]
}
DDB TABLE NAME SHOULD MATCH USER ID HERE ${www.amazon.com:user_id}
]
}
{
“版本”:“2020-11-01”,
“声明”:[
{
“Sid”:“XXXXXXXXXXXXX”,
“效果”:“允许”,
“行动”:[
“dynamodb:扫描”,
“dynamodb:Query”,
],
“资源”:[“arn:aws:dynamodb:::table/”]
}
DDB表名应与此处的用户ID匹配${www.amazon.com:USER_ID}
]
}
不幸的是,您目前无法使用DynamoDB执行此操作。这是因为DynamoDB的表资源不支持任何条件键(请参阅)
您唯一可以做的就是使用dynamodb:LeadingKeys
条件限制每个前导键的访问。这同样只适用于查询
操作。在扫描上不起作用(显然)。您的策略将如下所示:
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“dynamodb:GetItem”,
“dynamodb:查询”
],
“资源”:[“arn:aws:dynamodb:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,
“条件”:{
“ForAllValues:StringEquals”:{
“dynamodb:LeadingKeys”:[“${cognito identity.amazonaws.com:sub}”]
}
}
}
]
}