写点什么

基于服务网格的集群访问控制

  • 2024-09-29
    山东
  • 本文字数:1169 字

    阅读完需:约 4 分钟

随着容器化、云原生等概念的火热,越来越多的应用都开始选择支持云原生部署,但是对于大型企业应用来说,各种为服务的拆分会导致集群运维的压力越来越大,尤其是服务之间的安全通信至关重要。

在容器化集群中,传统的基于 IP 或端口的访问控制方式已经无法满足需求。引入服务网格(如 Istio)不仅可以简化服务间的通信,还能通过强大的访问控制策略增强安全性。下面我们将通过一个简单的示例来说明如何利用 Istio 中的 AuthorizationPolicy 资源实现细粒度的访问控制。


1. 什么是服务网格?

服务网格是一种轻量级的基础设施层,用于服务间的网络通信。它提供了一种统一的方式来管理服务之间的交互,包括身份验证、授权、监控等。Istio 是一个非常流行的服务网格框架实现,可以帮助我们轻松实现这些功能。


2. 实现细粒度访问控制

对于在集群中服务网格的访问控制主要有以下两种场景:

  • 集群外请求访问集群内应用

  • 集群内应用之间的互相调用

假设我们有一个简单的微服务架构,包含两个服务:frontend 和 backend。我们需要实现两个需求

  • 只有 1.2.3.4/16IP 段能访问 frontend

  • 只有 frontend 才能访问 backend 应用服务。


3. 示例实现

配置 1:只有 1.2.3.4/16IP 段能访问 frontend

apiVersion: security.istio.io/v1beta1kind: AuthorizationPolicymetadata:  name: testspec:  action: DENY  rules:  - from:    - source:        ipBlocks:        - 1.2.3.4/16  selector:    matchLabels:      app: frontend
复制代码


配置 2: 只有 default 资源池下的 frontend 才能访问 backend 服务。

apiVersion: security.istio.io/v1beta1kind: AuthorizationPolicymetadata:  name: testspec:  action: DENY  rules:  - from:    - source:        ipBlocks:        - 1.2.3.4/16  selector:    matchLabels:      app: frontend
复制代码

通过以上的配置 1,frontend 应用(选择器为 app:frontend)只会接受 1.2.3.4/16 网段的请求访问,而在集群内惊醒服务调用 backend 时,配置 2 通过集群 RBAC 机制的 ServiceAccount 识别,只允许 frontend 通过 GET 或 POST 访问/api/*接口,由此可实现简易的集群访问控制。

对于集群外访问的应用控制,Heimdall 云原生网关系统提供了黑白名单相关功能用以实现对集群外访问的 IP(段)地址或域名进行访问权限的控制。通过提供的菜单页面可以快速实现 IP(段)以及域名黑白名单,可以为紧急安全事件提供快捷处理的入口。


以上只是 istio 服务网格在访问控制方面的简单应用。随着其不断迭代升级,现在的 istio 通过 AuthorizationPolicy 等诸多资源的配合,可实现鉴权、认证、访问控制、外接三方认证以及自定义扩展等与权限相关的功能,通过这些功能可以实现各种细粒度需求的权限控制。


欢迎大家积极留言共建,期待与各位技术大咖的深入交流!


此外,欢迎大家下载我们的inBuilder低代码平台开源社区版,可免费下载使用,加入我们,开启开发体验之旅!

用户头像

还未添加个人签名 2023-03-07 加入

塑造企业一体化研发新范式

评论

发布
暂无评论
基于服务网格的集群访问控制_云原生_inBuilder低代码平台_InfoQ写作社区