第 12 章 使用 Skupper 策略保护服务网络


默认情况下,Skupper 包括许多安全功能,包括将 mutual TLS 用于站点之间的所有服务网络通信。您可以通过安装 Skupper 策略 CRD 来添加额外的安全功能。默认情况下,将 Skupper 策略 CRD 应用到集群可防止所有服务网络通信。您可以指定粒度 Skupper 策略 CR,以只允许您需要的服务网络通信。

注意

Skupper 策略与 Kubernetes 网络策略不同,这是 network-policy 选项,它限制对当前命名空间的访问 Skupper 服务,如 使用 Skupper CLI 所述。

服务网络中的每个站点都运行 Skupper 路由器,并具有专用证书颁发机构(CA)。站点之间的通信是通过 mutual TLS 保护的,因此服务网络会隔离外部访问,从而防止安全攻击、恶意软件和数据利用的问题。一组 Skupper 策略在集群级别上添加另一个层,以帮助集群管理员控制对服务网络的访问。

本指南假定您了解以下 Skupper 概念:

站点(site)
安装 Skupper 的命名空间。
token
在两个站点间建立链接需要一个令牌。
服务网络(service network)
使用 Skupper 公开服务后,您已创建了服务网络。

12.1. 关于 Skupper 策略

集群管理员安装 Skupper 策略自定义资源定义(CRD)后,集群管理员需要配置一个或多个策略,以便开发人员在服务网络上创建和使用服务。

注意

在本指南中,开发人员指的是有权访问命名空间但没有管理员特权的集群用户。

集群管理员使用自定义资源 (CR) 配置一个或多个项目以启用通信:

允许进入的链接
使用 allowIncomingLinks 允许开发人员创建令牌并配置传入的链接。
允许到特定主机的传出链接
使用 allowedOutgoingLinksHostnames 指定开发人员可以创建链接到的主机。
允许服务
使用 allowedServices 指定开发人员可以在服务网络上创建和使用的服务。
允许公开资源
使用 allowedExposedResources 指定开发人员可在服务网络上公开的资源。
注意

集群管理员可以将每个策略 CR 设置应用到一个或多个命名空间。

例如,以下策略 CR 完全允许所有命名空间上的所有 Skupper 功能,但以下情况除外:

  • 仅允许到以 .example.com 结尾的任何域的传出链接。
  • 仅允许 'deployment/nginx' 资源在服务网络中公开。
apiVersion: skupper.io/v1alpha1
kind: SkupperClusterPolicy
metadata:
  name: cluster-policy-sample-01
spec:
  namespaces:
    - "*"
  allowIncomingLinks: true
  allowedExposedResources:
    - "deployment/nginx"
  allowedOutgoingLinksHostnames: [".*\.example.com$"]
  allowedServices:
    - "*"
注意

您可以应用许多策略 CR,如果允许的项目中存在冲突,则应用最宽松的策略。例如,如果您使用 allowedOutgoingLinksHostnames: [] 行(它没有列出任何主机名)应用一个额外的策略 CR,则仍然允许到 *.example.com 的传出链接,因为在原始 CR 中允许。

命名空间
指定此策略应用到的命名空间的一个或多个模式。请注意,您可以使用标签选择器来匹配命名空间。
allowIncomingLinks
指定 true 以允许其他站点创建到指定命名空间的链接。
allowedOutgoingLinksHostnames
指定一个或多个模式,以确定您可以从指定命名空间创建指向的主机。
allowedServices
指定一个或多个模式,以确定指定命名空间中的服务网络中允许的服务的名称。
allowedExposedResources
指定一个或多个允许的资源名称,以允许来自特定命名空间中的服务网络。请注意,不支持模式。
提示

使用正则表达式来创建模式匹配,例如:

  • ipahealthcheck\.com$ 匹配以 .com 结尾的任何字符串。需要使用双引号以避免 YAML 出现问题。
  • ^abc$ 匹配字符串 abc

如果您创建另一个 Skupper 策略 CR 以允许特定命名空间的传出链接,用户可以从该命名空间中创建链接来加入服务网络。也就是说,多个策略 CR 的逻辑是 OR。如果任何单个策略 CR 允许操作,则允许操作。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.