gpt4 book ai didi

amazon-web-services - 具有水平信息隐藏功能的Amazon Dynamo DB的细粒度访问控制

转载 作者:行者123 更新时间:2023-12-04 08:55:12 24 4
gpt4 key购买 nike

我已经经历过documentation,它与我的用例非常相似,除了我不能使用Google,Facebook或Amazon作为身份提供者,但是我已经具有用于身份验证用户的企业级OAuth 2.0访问 token 。

我了解我可能可以使用来自AWS STS的Enterprise Federated支持来获取临时凭证并使用它们来进一步访问AWS资源,但是我无法理解如何配置IAM策略以使用这些凭证来实现水平信息隐藏。

我在DynamoDB中有某些表,用于存储应用程序所有用户的详细信息,并且我的应用程序支持多个租户,因此我希望一个租户的用户不能访问其他租户的数据。我可以配置的IAM策略是以下类型:

"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": ["${www.amazon.com:user_id}"]
}
}

现在,我的用户未通过Amazon(或Google或Facebook)登录,因此我无法使用“$ {www.amazon.com:user_id}”之类的键。此外,某些表的哈希键是复合键。

因此,我的问题是如何在数据库级别实现 Multi-Tenancy 并能够隔离或分离每个租户的数据,即向不应该对其进行访问的用户隐藏我的表的某些行。

是否可以在定义IAM策略时指定自定义策略变量,并指定如何在运行时解析这些变量?还是其他方式?

我在Dynamo中的表当前具有复合哈希键,这些键是Tenant_ID和User_ID的组合,因此我可以在IAM策略中指定某种规则,以便能够实现水平信息隐藏吗?

如果您需要有关我的用例的更多信息,请告诉我。

问候,
阿格拉吉

最佳答案

为了启用fine-grained data access in DynamoDB,您必须在DynamoDB IAM策略中指定IAM Policy Element Variable

一个典型的策略可能如下所示:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessToUserItems",
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:*:table/*"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
}
]
}

其中 ${cognito-identity.amazonaws.com:sub}是IAM策略变量,代表Cognito中用户的子级。

不幸的是,亚马逊未发布可用策略变量的列表。不过,这意味着您的用户管理 具有,可以通过Amazon对其进行管理,以实现细粒度的安全性。您无法定义自己的策略变量-它们必须是预定义的Amazon变量-因此,只有在您的用户在Amazon中进行管理的情况下,细粒度的安全性才可用。

此外,您的DynamoDB分区键必须与策略变量匹配。例如,您的表分区键必须是Cognito子项。

如果您的OAuth token 是从Cognito收到的,则只需将其发布到Amazon Token Endpoint上,这将为您返回一个id_token,其中包含用户Cognito子。

关于amazon-web-services - 具有水平信息隐藏功能的Amazon Dynamo DB的细粒度访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com