0

我是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,這似乎不是正確的方法。

有沒有人有任何建議?或者知道更好的方法?

回答

0

API網關支持直至方法級別的訪問控制。很難動態控制對DDB中特定項目的訪問,但如果您正在討論特定的靜態項目,那麼您可以將表格/項目硬編碼到API GW或Lambda層,並使用API​​控制對該API方法的訪問網關權限。

使用API​​網關訪問控制可能會強制您稍微調整/重新設計API。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Permission", 
     "Action": [ 
     "execute-api:Invoke"   
     ], 
     "Resource": [ 
     "arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/resource-path" 
     ] 
    } 
    ] 
} 

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html