我是AWS的新手,並且繼承了現有項目。AWS IAM細粒度訪問控制雖然APIGateway和Lambda
該項目使用Vue.js作爲前端,數據存儲在DynamoDB中。用戶身份驗證使用Cognito完成,並附加了IAM角色。數據通過不同的角色從數據庫中通過APIGateway和Lambda檢索。
前端作用
可信實體:cognito-identity.amazonaws.com
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"*"
]
}
]
}
後端作用
可信實體: 身份提供商(一個或多個)apigateway.amazonaws.com, 身份提供者(s)lambda.amazonaws.com
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1493183261000",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:DescribeStream",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:GetRecords",
"dynamodb:GetShardIterator",
"dynamodb:ListStreams",
"dynamodb:ListTables",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem",
"dynamodb:UpdateTable"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:*:table/foo",
"arn:aws:dynamodb:us-east-1:*:table/bar",
"arn:aws:dynamodb:us-east-1:*:table/bar/index/dayKey-captureTime-index"
]
}
]
}
但是,我需要爲用戶實施授權,以便我可以將組分配給特定用戶,以便他們可以訪問特定項目,並限制對DynamoDB中其他項的訪問
我讀了關於IAM細粒度訪問控制,但它不起作用,因爲用戶通過APIGateway與數據庫交談,可以訪問所有數據。
我可以放棄APIGateway和Lambda,讓用戶直接與DynamoDB對話(這似乎是一個壞主意,因爲Lambda對數據做了一些工作,而且這種方法會使我的應用程序與AWS緊密相連) 。
或者我可以用不同的權限創建額外的API,這似乎不是正確的方法。
有沒有人有任何建議?或者知道更好的方法?