繁体   English   中英

如何将 cognito 身份池与另一个 AWS 帐户集成以进行 API 网关访问

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM