machine-to-machine authorization

Amazon Cognito 是一项以开发人员为中心且注重安全性的客户身份与访问管理(CIAM)服务,能够简化在移动和 Web 应用程序中添加用户注册、登录和访问控制的流程。Cognito 是一项高可用性服务,支持多种使用场景,从管理用户身份验证和授权,到启用对您的 API 和工作负载的安全访问。它是一项托管服务,可以作为应用程序的身份提供商(IdP),能够扩展到数百万用户,提供高级安全功能,并支持与第三方 IdP 的身份联合。

Amazon Cognito 其中的一个功能就是支持 OAuth 2.0 client credentials grants, 用于机器对机器(M2M)授权。随着您的 M2M 使用案例的扩展,拥有适当的监控、优化令牌发放以及了解安全最佳实践和注意事项变得非常重要。应用程序客户端在令牌仍然有效且未过期的情况下,本地缓存并重用访问令牌是一种最佳实践。您可以自定义发放的令牌的有效时长,因此确保该时间范围符合您的安全要求非常重要。如果在客户端级别无法缓存和重用访问令牌,或者无法强制执行,那么将您的机器对机器(M2M)使用案例与使用 Amazon API Gateway 的 REST API 代理集成结合起来,可以实现 cache token responses。通过使用 API Gateway 缓存,您可以优化 M2M 授权中访问令牌的请求和响应。这减少了对 Cognito 获取访问令牌的冗余调用,从而提高了您的 M2M 使用案例的整体性能、可用性和安全性。

在本文中,我们探讨了如何监控、优化和保护 Amazon Cognito 机器对机器(M2M)授权的策略。首先,您将了解一些有效的监控技术,以便跟踪您的使用情况;然后,我们将深入探讨使用 API Gateway 和令牌缓存的优化策略;最后,我们将介绍安全最佳实践和注意事项,以增强您的 M2M 使用案例的安全性。让我们深入研究,发现如何充分利用您的 Amazon Cognito M2M 实施。

Machine-to-machine authorization

Amazon Cognito 使用 OAuth 2.0 client credentials grant 来处理机器对机器(M2M)授权。Cognito 用户池可以发放客户端 ID 和客户端密钥,允许您的服务请求一个符合 JSON Web Token(JWT)标准的访问令牌,以访问受保护的资源。图 1 展示了应用程序客户端如何使用客户端凭证授权流程向 Amazon Cognito 请求访问令牌。

Figure 1: Client credentials grant flow

客户端凭证授权流程(图 1)包括以下步骤:

  1. 应用程序客户端向 Amazon Cognito 用户池的 /token 端点发起 HTTP POST 请求(有关更多信息,请参阅《 The token issuer endpoint》),该请求提供一个包含客户端 ID 和客户端密钥的授权头,以及包含授权类型、客户端 ID 和作用域的请求参数。

  2. 在验证请求后,Cognito 将返回一个符合 JSON Web Token(JWT)标准的访问令牌。

  3. 客户端可以使用 Cognito 发放的访问令牌,向下游资源服务器发起后续请求。

  4. 资源服务器从 Cognito 用户池获取 JSON Web Key Set(JWKS)。JWKS 包含用户池的公钥,应使用这些公钥来验证令牌签名。

  5. 资源服务器使用公钥验证访问令牌的签名是否有效(证明令牌未被篡改)。资源服务器还需要验证令牌是否未过期,以及是否存在所需的声明和值,包括作用域。资源服务器应使用 aws-jwt-verify library 来验证访问令牌是否有效。

  6. 在验证访问令牌并授权应用程序客户端后,请求的资源将返回给应用程序客户端。

您可以在《 How to use OAuth 2.0 in Amazon Cognito: Learn about the different OAuth 2.0 grants.》中了解 Amazon Cognito 支持的客户端凭证授权和其他认证流程的 OAuth 2.0 支持。

监控用量和成本

M2M功能是收费的, Amazon Cognito introduces tiered pricing for machine-to-machine (M2M) usage

为了更好地了解您现有的 Amazon Cognito 使用情况,您可以使用成本和使用情况仪表板操作解决方案Cost and Usage Dashboards Operations Solution (CUDOS) 的安全性 Security 标签页。CUDOS 仪表板是 Cloud Intelligence Dashboard 的一部分,这是一个开源框架,为 AWS 客户提供组织级别的可操作见解和优化机会。如图 2 所示,CUDOS 仪表板的安全性标签页提供了可视化图表,显示了按使用类型划分的 Amazon Cognito 成本和支出,以及在豁免期结束后,按日粒度计算的 M2M 应用程序客户端和令牌请求的预计成本。这种按日细分的方式使您能够跟踪您的成本优化工作趋势

Figure 2: Example Amazon Cognito spend and projected cost with daily granularity

也可以按照账户查看每月的费用情况,如图3所示:

您可以查看图4中显示的用户池的每个资源ID的使用情况和支出。这种资源级别的细粒度数据使您能够识别支出最高的用户池,并据此优先考虑使用和成本管理的工作。该仪表板的交互式演示是可用的。更多信息,请参阅云智能仪表板

参考资料

AWS Blog - How to monitor, optimize, and secure Amazon Cognito machine-to-machine authorization

最后更新于