电商网站开发资金预算,公司网站推广现状,网站维护中什么意思,天津logo设计公司#x1f680;『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 #x1f4e3;读完这篇文章里你能收获到
#x1f6e0;️ 了解APISIX身份认证的重要性和基本概念#xff0c;以及如何在微服务架构中实施API安全。#x1f511; 学习如何使…
『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 读完这篇文章里你能收获到
️ 了解APISIX身份认证的重要性和基本概念以及如何在微服务架构中实施API安全。 学习如何使用APISIX的Key Authentication插件进行API密钥管理包括创建消费者和路由。 掌握如何定期轮换API密钥以及如何为不同消费者分配不同权限范围的密钥。 探索如何通过日志记录和监控来增强APISIX的安全性和可审计性。 文章目录 一、引言1.1 APISIX身份认证基础1.2 APISIX支持的身份授权插件 二、APISIX身份认证核心组件2.1 Consumer2.2 Key Authentication 三、身份认证实战3.1 启用 Key Authentication3.1.1 创建消费者3.1.2 创建Routes3.1.3 验证 3.2 自定义请求头Header3.3 禁用 Authentication 四、最佳实践 一、引言
在现代微服务架构中API的安全性至关重要。随着业务系统之间的交互越来越频繁API成为了核心数据和服务的交换通道。Apache APISIX作为一款高性能的云原生API网关提供了丰富的插件生态以满足各种API治理需求其中身份认证就是关键的一环。
1.1 APISIX身份认证基础
API 网关主要作用是连接 API 消费者和提供者。出于安全考虑在访问内部资源之前应先对消费者进行身份验证和授权。
1.2 APISIX支持的身份授权插件
APISIX 拥有灵活的插件扩展系统目前有很多可用于用户身份验证和授权的插件。
Key AuthenticationBasic AuthenticationJSON Web Token (JWT) AuthenticationKeycloakCasdoorWolf RBACOpenID ConnectCentral Authentication Service (CAS)HMACCasbinLDAPOpen Policy Agent (OPA)Forward AuthenticationMultiple Authentications 二、APISIX身份认证核心组件
本文将以Apache APISIX内置的Key-Auth插件为例详细介绍如何实现API的身份认证。
2.1 Consumer
Consumer也称之为消费者是指使用 API 的应用或开发人员。 在 APISIX 中消费者需要一个全局唯一的 名称并从上面的列表中选择一个身份验证 插件。
2.2 Key Authentication
Key Authentication也称之为密钥验证是一个相对比较简单但是应用广泛的身份验证方法基于HTTP Header中的API密钥对请求进行验证。每个客户端都拥有一个唯一的API密钥当客户端发起请求时必须在请求头中包含此密钥服务器端的APISIX将会检查并验证该密钥的有效性。 它的设计思路如下
管理员为路由添加一个身份验证密钥API 密钥。API 消费者在发送请求时在查询字符串或者请求头中添加密钥。 三、身份认证实战
3.1 启用 Key Authentication
3.1.1 创建消费者
创建一个名为 consumer-key 的消费者并启用 key-auth 插件密钥设置为 secret-key。所有携带密钥 secret-key 的请求都会被识别为消费者 consumer-key。
curl -i http://127.0.0.1:9180/apisix/admin/consumers \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{username: consumerkey,plugins: {key-auth: {key: secret-key}}
}3.1.2 创建Routes
创建一个名为routes-key的路由并启用 key-auth 插件
curl -i http://127.0.0.1:9180/apisix/admin/routes \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{id: routes-key,name: routes-key,uri: /ip,upstream: {type: roundrobin,nodes: {httpbin.org:80: 1}},plugins: {key-auth: {}}
}3.1.3 验证
Key-Auth插件默认的Headers前缀为apikey如需修改可继续往下看 我们可以在以下场景中进行验证
发送不带任何密钥的请求
curl -i http://127.0.0.1:9080/ip发送携带正确密钥的请求
curl -i http://127.0.0.1:9080/ip -H apikey: secret-key3.2 自定义请求头Header
如果你不想从默认的 apikey header 获取 key可以自定义 header如下所示
{key-auth: {header: Authorization}
}接下来基于上面的Routes进行更改
curl -i http://127.0.0.1:9180/apisix/admin/routes/routes-key \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PATCH -d
{plugins: {key-auth: {header: Authorization}}
}发送携带Header为Authorization的请求进行验证
curl -i http://127.0.0.1:9080/ip -H Authorization: secret-key3.3 禁用 Authentication
将参数设置 _meta.disable 为 true即可禁用密钥验证插件。
curl http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip -X PATCH -d
{plugins: {key-auth: {_meta: {disable: true}}}
}四、最佳实践
定期轮换密钥为了增加安全性建议定期更换API密钥避免长期使用同一密钥导致安全风险增大。权限细分可以为不同消费者分配不同权限范围的密钥用于访问不同的API资源。监控与日志记录利用Apache APISIX的日志插件记录相关的认证事件以便于审计和异常检测。