联邦API管理:从WSO2部署API到AWS API网关
随着企业的发展和壮大,组织越来越多地在多云环境(如云、本地和边缘)中运营API。在这种设置中,联邦API网关部署已成为一种强大的架构模式。这种方法将控制平面与运行时网关分离,实现集中式API治理,同时允许API在更接近用户或服务的位置运行,以提高性能和弹性。
这种架构的核心思想是:
- 集中式API管理:在一个地方(如WSO2 API管理器)定义、版本控制、保护和监控API
- 分布式API网关:跨多个运行时网关部署API,如云原生网关(如AWS API网关)、区域边缘节点或Kubernetes集群
这种模式不仅减少了延迟,还提高了跨团队或业务单元的可用性和运营独立性。
为什么选择联邦网关?
- 性能:流量路由到最近或最优的网关
- 弹性:一个网关的故障不会影响其他网关
- 治理:策略和生命周期在异构环境中集中执行
- 云灵活性:API可以在AWS、Azure、本地或混合/多云设置中运行
有多种方法可以实现联邦API架构。开源API管理解决方案(如WSO2 API管理器)使这种模式更加易于访问和扩展。在本文中,我们将逐步介绍一个实际实现:如何使用WSO2 API管理器将API部署联邦到AWS API网关。
WSO2 API管理器作为控制平面,AWS API网关作为联邦网关
AWS API网关是一项完全托管服务,使开发人员能够创建、部署、管理和保护任何规模的API。WSO2 API管理器预装了内置的AWS网关连接器,使用该连接器能够将使用WSO2 API管理器创建的API部署/取消部署到AWS API网关。
图1:与AWS API网关的网关联邦
上图说明了联邦API管理架构,其中一个或多个WSO2 API管理器控制平面可以作为集中点来设计、发布和管理API。这些API随后部署到多个联邦网关,包括:
- AWS API网关(用于基于云的部署)
- 不同区域的WSO2网关(用于区域或本地部署)
该设置实现了集中治理与分布式执行,提高了混合环境中的性能、容错能力和部署灵活性。
了解AWS中API网关的身份和访问管理(IAM)
在AWS生态系统中,IAM在以下方面发挥着关键作用:
- API请求的授权:IAM允许对谁可以在API中执行特定操作进行细粒度控制
- 对API调用者的控制:通过利用IAM,可以精确定义哪些用户、应用程序或服务有权调用API
- API管理:IAM还扩展到管理谁可以在AWS API网关中配置、部署或修改API
为了促进API的管理和部署到AWS API网关,必须通过创建和分配IAM用户或角色来配置访问权限。
在AWS API网关中设置用户
- 登录AWS账户并导航到控制台主页
- 在搜索栏中搜索"IAM"
- 点击IAM服务,导航到访问管理下的用户
- 点击创建用户并输入用户名
- 点击下一步
- 在选择权限选项卡下选择"直接附加策略"
- 搜索AmazonAPIGatewayAdministrator权限并选择它
- 点击下一步,然后点击创建用户
- 从列表中点击创建的用户,转到安全凭据选项卡
- 导航到访问密钥,点击创建访问密钥
- 选择第三方服务作为用例,勾选确认,点击下一步
- 点击创建访问密钥,复制访问密钥和秘密访问密钥的值以备后用
在WSO2 API管理器中注册AWS API网关作为联邦网关
- 启动WSO2 API控制平面
- 通过https://localhost:9444/admin登录管理门户
- 导航到网关部分,点击添加网关环境
- 选择网关类型为AWS,并在相应字段中提供相关详细信息
- 提供从上一步AWS门户获得的访问密钥和秘密访问密钥
- 点击添加保存详细信息
创建和设计示例API
- 通过https://localhost:9444/publisher登录发布者门户
- 点击创建API,然后导航到REST API部分,点击从零开始
- 填写详细信息并提供有效的端点URL
- 选择AWS网关作为网关类型
- 点击创建和发布
已部署API的AWS网关访问URL可以在部署页面中访问。
通过Lambda授权器在AWS中实现OAuth 2.0安全性
您可以实现Lambda授权器来处理来自外部身份提供商(如Okta、Auth0、Azure AD)的OAuth 2.0令牌。Lambda授权器在AWS API网关中充当看门人。它使用自定义Lambda函数来验证传入的OAuth 2.0承载者令牌(通常是由您选择的身份提供商颁发的JWT)。
OAuth 2.0安全策略将Lambda ARN和Lambda调用角色ARN作为参数,此信息将用于在AWS API网关配置Lambda授权器。
主要步骤包括:
- 客户端与身份提供商进行身份验证
- 客户端将包含令牌的请求发送到API网关端点
- API网关触发Lambda授权器验证令牌
- Lambda验证令牌并返回授予或拒绝访问的IAM策略
- 授予或拒绝访问
图2:使用令牌调用API并接收响应的流程图
配置第三方密钥管理器
为了为创建的API启用安全性,您需要首先配置在云环境中运行的第三方密钥管理器。
为API配置安全性
接下来的步骤需要授予在"在AWS API网关中设置用户"步骤中创建的IAM用户额外权限。
要授予所需权限,请导航到IAM -> 用户 -> apim-aws-gw-test-user -> 权限,并将AWSLambda_FullAccess权限附加给用户。
在AWS中,sts:AssumeRole操作允许用户或服务临时获取与IAM角色关联的权限。将以下自定义策略附加到用户以允许sts:AssumeRole操作。
在AWS中配置Lambda函数以验证令牌
配置AWS中的Lambda函数,以验证从身份提供商生成的令牌。按照以下步骤在AWS端设置和创建函数:
- 下载index.mjs文件并本地保存到lambda-authorizer文件夹
- 更新index.mjs文件中密钥客户端的’jwksUri’字段
- 导航到’lambda-authorizer’文件夹并执行命令安装所需的节点模块
- 创建包含项目文件夹内容的.zip文件
- 转到AWS账户的函数页面,点击创建函数
- 提供详细信息并点击创建函数
- 点击上传,从下拉菜单中选择.zip文件选项
- 点击上传并提供上面生成的zip文件
- 点击保存,点击部署在AWS API网关中部署lambda-authorizer函数
在AWS IAM中,为Lambda函数配置执行角色。在AWS控制台中导航到IAM > 角色,并使用以下详细信息创建新角色:
- 可信实体类型:AWS服务
- 用例:Lambda
在添加权限阶段,附加AWSLambdaRole权限。如果希望为Lambda函数启用CloudWatch日志,还可以附加AWSLambdaBasicExecutionRole。
在WSO2 API发布者门户中配置安全策略
- 在WSO2 API发布者门户中,导航到先前步骤中创建的SampleAPI的策略部分,进入API级策略选项卡
- 从请求策略选项卡附加AWS OAuth策略
- 获取Lambda函数的ARN和上面创建的执行角色的ARN
- 在AWS OAuth策略中提供ARN值并将其附加到API
- 点击保存并部署
调用启用安全的API
您现在已将启用安全的API部署到AWS API网关。作为下一步,让我们从Auth0获取令牌并通过WSO2开发者门户调用API。
对于部署到AWS API网关的API,不需要订阅。
通过https://localhost:9444/devportal登录开发者门户,您可以看到已部署的示例API。
您可以从开发者门户创建新应用程序,并为Auth0密钥管理器生成密钥。然后您可以生成令牌并将其复制到剪贴板。
将生成的令牌粘贴到上面创建的SampleAPI的API控制台选项卡中。
调用API并观察响应。
结论
将API部署到WSO2中的联邦网关使组织能够运营分布式、可扩展且符合策略的API管理架构。联邦网关部署促进了敏捷性、容错性和大规模策略执行,使其成为具有复杂API生态系统的现代企业的理想方法。当正确配置时,联邦网关部署在本地执行和全局控制之间取得了平衡,确保了运营灵活性和战略治理。