第16天 — 服务之间的身份验证(龙弓手的问题)
Source: Dev.to
故事
雪在侧面飘荡,Gord 和 Rothütle 在 Schattenburg 的破碎塔楼中越走越深。废墟不再显得荒凉。石头似乎被摆放好,走廊被指引。
一声尖锐的哨声划破空气。
Rothütle 的红帽子从他头上消失——被一支黑羽箭钉在他身后的树干上。他僵住了。
一个巨大的生物从阴影中出现。它拥有森林龙的四足、翠绿鳞片的身体。背上长出一个手持巨型长弓的壮硕人类躯干。但人类半身并不孤单;从前方蜿蜒而起的是第二条细长的龙颈,爬行类的眼睛发出黄色光芒。
“鲜艳的颜色,”生物平静地说。“它们是极佳的目标。”
Rothütle 吞了口口水,仍然惊讶不已。
“我们需要通过,”Gord 稳定地说。
“嘿,Gord,”弓手回答道。“你知道规矩的,你得先回答我的问题。”
“当然,问吧,”Gord 说。
“你第一只宠物的名字是什么?”龙‑弓手带着讥笑问道。
“真的?”Rothütle 插话道。“这就是你的安全问题?”
Gord 在回答时看向 Rothütle:“Aži Dahāka。”
“好了,”弓手点头,但随后看向身后的树木,指向弓。“有人在那里。”
“我们去看看,”Gord 抬起剑说。“你们留在这里守望。”
随后 Gord 和 Rothütle 小心翼翼地走进阴影。
今日小贴士
在复杂系统中,不同服务在交换数据之前应相互认证。仅依赖网络位置或 IP 地址是不够的。
在像 Kubernetes 集群这样的复杂系统中,服务会不断通信并交换数据。仅凭网络位置或 IP 地址来信任这些通信是有风险的。如果某个服务被攻破,它可以冒充其他服务并获得未授权的访问权限。这就是服务间认证至关重要的原因。
服务间认证的策略
-
相互 TLS(mTLS)
使用 mTLS 确保客户端和服务器双方使用证书相互认证。这可以防止未授权的服务连接。 -
服务网格
实施服务网格(例如 Istio、Linkerd),为服务通信提供内置的认证和加密。 -
API 网关
使用 API 网关管理和认证服务之间的请求,执行策略和访问控制。 -
身份与访问管理(IAM)
为服务分配唯一身份,并使用 IAM 策略控制每个服务的访问权限。
通过在服务之间实现强大的认证机制,你可以显著提升系统的安全性,防止未授权访问。不要只在前门设立巡逻——要确保每个检查点都有守卫核查身份证件。