AWS를 처음 사용하며 기존 프로젝트를 상속 받았습니다.AWS IAM 고급 액세스 제어 (APIGateway 및 Lambda)
프로젝트는 Vue.js를 프런트 엔드로 사용하며 데이터는 DynamoDB에 저장됩니다. 사용자 인증은 IAM 역할이 첨부 된 Cognito를 사용하여 수행되었습니다. 데이터는 다른 역할을 통해 데이터베이스에서 APIGateway 및 Lambda를 통해 검색됩니다.
프론트 엔드 역할
신뢰할 수있는 기관 : cognito-identity.amazonaws.com
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"*"
]
}
]
}
백엔드 역할
신뢰할 수있는 엔티티 : ID 공급자 (들) apigateway.amazonaws.com, 아이디 공급자 lamda.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 Fine-Grained Access에 대해 읽었습니다. 제어하지만 사용자가 모든 데이터에 액세스 할 수있는 APIGateway를 통해 데이터베이스와 대화하기 때문에 작동하지 않습니다.
APIGateway 및 Lambda를 삭제하고 DynamoDB와 직접 대화 할 수 있습니다. (Lambda가 데이터에 일부 작업을 수행하기 때문에 잘못된 생각 인 것 같습니다.이 방법을 사용하면 내 응용 프로그램이 AWS에 너무 밀접하게 첨부됩니다) .
다른 권한으로 추가 API를 만들 수 있습니다. 올바른 접근 방식이 아닌 것 같습니다.
누구에게 의견이 있습니까? 또는 더 나은 접근법을 알고 있습니까?