[英]Access AWS API Gateway method using Cognito Identity pool for unauthorized users using Amplify SDK for Javascript
[英]How to integrate cognito identity pool with another AWS account for API Gateway access
我在 AWS 账户 A 中有一个工作项目,它使用 cognito 用户池对用户进行身份验证。 通过使用细粒度的角色、策略和身份池,已成功限制对某些 API 网关端点的访问(使用 AWS_IAM 授权方)。 这一切都很好。 现在,我想弄清楚如何在另一个 AWS 账户(账户 B)中获取 API 网关端点,以使用账户 A 中的这些相同凭证(AccesskeyId、SecretAccessKey 和 SessionToken),以便能够访问账户 B 中的 API 网关端点无需在账户 B 中创建身份池 ID 等。
我尝试了一种方法,我将另一个资源添加到帐户 A 中的现有策略,用于附加到用户所附加角色的其中一个策略。 像这样
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:us-east-1:<Account A id>:<api gateway resourceId account A>/*/*/*",
"arn:aws:execute-api:us-east-1:<Account B id>:<api gateway resourceId account B>/*/*/*"
]
}
]
}
所以通过添加第二个资源arn:aws:execute-api:us-east-1:<Account B id>:<api gateway resourceId account B>/*/*/*
当在账户 A 中进行身份验证、获取凭据(AccesskeyId、SecretAccessKey 和 SessionToken)并使用相同凭据的用户可以访问账户 B 中的端点。为了使其正常工作,在账户 B api 网关上,我还必须启用 AWS_IAM 授权方。
所以想知道这是否是一种有效的跨帐户授权方法? 有没有其他方法我们不必专门手动更新这些策略? 有什么想法吗?
IMO 方法是有效的,请确保 API 资源策略仅允许假定身份角色执行操作(假设这是您的用例)。
您还可以将授权类型更改为 Cognito,并使用 Cognito 用户访问令牌和范围来授权访问。 然后你不需要管理政策,见https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-cross-account-cognito-authorizer.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.