【问题标题】:Restrict Istio services within the mesh限制网格内的 Istio 服务
【发布时间】:2019-02-05 18:27:55
【问题描述】:

我们有一个应用程序,其中包含多个在 k8s 中运行的服务。我们希望通过 mTLS 将它们移动到 Istio 网格中,在这种情况下,它们都可以相互通信(直到在这里进行测试)。现在,我需要限制网格内中的一些服务只能与一个服务通信。试图与未经授权的其他服务交谈,应该被阻止。这可能吗?

由于我无法配置请求的“来源”,并且在网格中任何人都可以与任何人交谈,所以我不能这样做。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine istio


    【解决方案1】:

    "Micro-Segmentation with Istio Authorization" 不是您要查找的内容,尤其是在“Combinations of Attributes”下,您有不同的分段方式,基于 source.namespace、source.principal。很少看到展示这些功能的演示,虽然没有亲自玩过

    【讨论】:

    • 如果我想限制一项服务的权限(比如不允许 POST),我认为在这种情况下 RBAC 会很有帮助。但是我需要将所有服务权限限制为一个,并与所有其他服务一起使用。这会以指数方式变得复杂,因为我必须开始一个一个地限制。我错了吗?
    • 我一直在用 Istio RBAC 做进一步的测试,我认为配置来自外部集群的流量更有意义。它似乎不会影响网格内服务的请求。
    • 为什么不遵循 medium.com/google-cloud/… 中的 Canary 部署方法,您可以完全隔离服务
    • 不确定金丝雀版本如何解决问题。使用金丝雀,您只是说 Pilot 将一些请求发送到另一个版本的应用程序。我需要它来隔离网格中的服务。想象一下,我有一个包含 5 个服务的应用程序,其中 4 个服务与 1 个服务通信。好吧,那么我希望这 4 个服务不能相互通信。只到第 5 次服务。有意义吗?
    • @suren jan 你的问题解决了吗?目前,我正在尝试将网格中所有服务的流量限制为一项服务,但一项服务除外。您是否为此或其他事情使用过否认?
    【解决方案2】:

    Istio 1.1+ 包含一个新的 Sidecar 资源,可用于配置服务的 envoy sidecar 代理。您应该能够配置服务的出口,以便它们只能访问允许调用的一项服务。

    Documentation

    【讨论】:

      【解决方案3】:

      Istio 可以根据 Mixer 中可用的任何属性来控制对服务的访问。所以 你要找的是Mixer denier adapter - sample denials

      例如:

      "拒绝所有从 server1(s1) 到 server2(s2) 的调用"

      apiVersion: "config.istio.io/v1alpha2"
      kind: handler
      metadata:
        name: denyotherserverhandler
      spec:
        compiledAdapter: denier
        params:
          status:
            code: 7
            message: Not allowed
      ---
      apiVersion: "config.istio.io/v1alpha2"
      kind: instance
      metadata:
        name: denyotherserverrequest
      spec:
        compiledTemplate: checknothing
      ---
      apiVersion: "config.istio.io/v1alpha2"
      kind: rule
      metadata:
        name: denyotherserverrule
      spec:
        match: destination.labels["app"] == "s2" && source.labels["app"]=="s1"
        actions:
        - handler: denyotherserverhandler
          instances: [ denyotherserverrequest ]
      

      【讨论】:

        猜你喜欢
        • 2020-01-09
        • 2020-04-09
        • 2021-11-14
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 2020-10-17
        相关资源
        最近更新 更多