我们使用ECS来部署基于flask的应用程序,并使用API网关来允许经过身份验证的用户。只有托管在ECS上的应用程序才能访问数据库,而最终用户不能访问数据库。
我的问题是,如果用户从Cognito用户池(来自facebook或google)登录,他是否能够超越api网关,到达ECS并访问DB?或者,用户是否会面临API网关的AWS凭据和权限问题?
(我知道,如果用户通过身份池登录,Idp的最终用户将被分配IAM权限,然后AWS将对其进行管理)
谢谢
发布于 2019-12-15 07:09:59
您可以同时使用这两种方法。但是,我建议使用Cognito用户池和托管UI。Cognito User Pool具有集成Facebook和Google for Social Sign In等身份提供商的能力,并且可以将属性自动映射到Cognito User Pool属性。然后,您可以配置Cognito身份池以注册已注册/登录到Cognito用户池的用户(通过社交身份提供者或常规登录),以获取临时AWS凭据。
示例代码:
const AWS = require('aws-sdk');
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: <identity pool id>,
Logins: {
'cognito-idp.<region>.amazonaws.com/<user pool id>': <user jwt token>
}
});另外请记住,授权访问API Gateway的方式有三种:
通过身份池进行
Authorization: 'Bearer <jwt>'头提供使用身份和用户池,您可以通过选择通过令牌传递角色(例如使用由组角色授予的角色)或通过您根据用户池中的用户属性设置的规则来实现细粒度RBAC。
有关该here的更多信息
希望我能帮上忙:)
https://stackoverflow.com/questions/59330278
复制相似问题