【问题标题】:Global Policy to default allow traffic within namespaces全局策略默认允许命名空间内的流量
【发布时间】:2021-03-21 23:38:05
【问题描述】:

我们正在使用 calico 设置严格的默认拒绝策略,以禁用除故障安全规则之外的任何流量。现在我们有多个命名空间,这些命名空间正在增加,因为每个应用程序都有多个命名空间。

现在的想法是默认允许命名空间内的流量,其顺序高于默认拒绝。但是,我在这里没有成功找到可扩展的方法。看来我们需要为每个看起来几乎相同的新命名空间显式创建一个 NetworkPolicy。

我正在寻找这样的东西:您定义一个规则一次,它适用于具有allow-all-in-ns 标签的命名空间中的所有资源。

apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: allow-self-policy
spec:
  namespaceSelector: 'has(allow-all-in-ns)'
  ingress:
  - action: Allow
    source:
      namespaceSelector: has(allow-all-in-ns) && self
  egress:
  - action: Allow
    source:
      namespaceSelector: has(allow-all-in-ns) && self

我不希望在标签为 allow-all-in-ns 的命名空间之间进行任何通信,但我希望在每个命名空间内使用此标签进行通信。目前使用 calico 的功能集可以实现吗?

【问题讨论】:

    标签: networking kubernetes project-calico kubernetes-networkpolicy


    【解决方案1】:

    虽然Namespaces 允许您将对象隔离到特定的组中,但它们不提供任何类型的隔离。可能存在跨名称空间流量(有关更多详细信息,请参阅here),这意味着如果容器仅使用 ,它将解析为名称空间本地的服务。这对于在多个命名空间(例如 Development、Staging 和 Production)中使用相同的配置很有用。如果要跨命名空间进行访问,则需要使用完全限定域名 (FQDN)。

    为了解决这个问题,我们有NetworkPolicy,一旦应用适当的选择器,就可以用来隔离集群对象之间的流量。您可以查看更多信息here

    不幸的是,没有办法获得您所描述的内容,如果我对您要应用的政策的理解正确,您将拒绝访问您的 kube-system pod,尤其是 core-dns,这对于集群网络至关重要。

    由于GlobalNetworkPolicy 在全球范围内适用,您可以将其用于default-deny,除了kube-system 之外的所有豆荚,然后对每个吊舱使用NetworkPolicies,并限制它们的egressingress,并仅留下一些标签对于允许的流量。

    Calico 策略规则可以在 K8s 策略之前或之后强制执行,包括许多操作,例如拒绝和记录。这允许安全/集群运营团队定义基本的高级 moge 通用规则,同时授权开发人员/服务/集群用户团队定义他们自己负责的应用程序和服务的细粒度规则。查看此doc 了解有关评估顺序的更多信息。

    由于 Calico 策略规则可以在 Kubernetes 网络策略之前或之后强制执行,并且可以包括拒绝和日志等操作,这允许安全/集群操作团队定义基本的更高级别更通用的规则,同时授权开发人员/服务团队对他们负责的应用和服务定义他们自己的细粒度约束。

    由于网络策略的灵活性,通常有多种不同的标记和编写策略的方法可以实现相同的特定目标。

    最常见的方法之一是拥有少量适用于所有 pod 的全局策略,然后使用一个特定于 pod 的策略来定义特定于该 pod 的所有入口和出口规则。

    您可以在calico site 阅读有关最佳做法和default-deny 的更多信息。

    总而言之,在查看 calico 文档后,不可能有一个规则可以实现您想要实现的目标。实现它的另一种方法可能是使用 helm 及其图表来自动化这个额外网络策略创建的过程。

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多