我是AWS新手,并继承了现有项目。
项目使用Vue.js作为前端,数据存储在DynamoDB中。用户身份验证是使用Cognito完成的,附加了IAM角色。通过APIGateway和Lambda从数据库中通过不同的角色检索数据。
前端角色
可信实体:cognito-identity.amazonaws.com
category
后端角色
可信实体: 身份提供者apigateway.amazonaws.com, 身份提供者lambda.amazonaws.com
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"*"
]
}
]
}
但是,我需要为用户实施授权,以便我可以将Group分配给特定用户,这样他们就可以访问特定项目,并限制对dynamoDB中其他项目的访问
我读过有关IAM细粒度访问控制的内容,但由于用户通过APIGateway与数据库通信,因此无法使用,因为APIGateway可以访问所有数据。
要么我可以放弃APIGateway和Lambda,让用户直接与DynamoDB对话(这似乎是一个坏主意,因为Lambda对数据做了一些工作,这种方法会使我的应用程序与AWS紧密相连)。
或者我可以使用不同的权限创建其他API,这看起来不是正确的方法。
有没有人有任何建议?或者知道更好的方法?
答案 0 :(得分:0)
API Gateway支持访问控制,直至方法级别。动态控制对DDB中特定项的访问很困难,但如果您正在讨论特定的静态项,那么您可以将表/项硬编码到API GW或Lambda层并控制对具有API网关权限的API方法。
使用API网关访问控制可能会迫使您稍微调整/重新设计API。
2001 -
2001 - 2002
2002 - 2003
2003 - 2004
3001 -
3001 - 3002
3002 - 3003