尽管在所有名称空间和服务上启用了RbacConfig,但istio rbac没有任何作用

时间:2019-03-14 06:10:24

标签: kubernetes istio

我在命名空间dev中有2个服务A和B。 A正在对B进行REST调用。A的API / responseTime调用了B的API / about

我在tls上使用istio 1.0.5。

我对istio RBAC还是陌生的,但是我的理解是,一旦在所有名称空间和服务上启用RBAC,A就不应该与B对话吗?

在应用此Yaml时,

apiVersion: "rbac.istio.io/v1alpha1"
kind: RbacConfig
metadata:
  name: default
spec:
  mode: 'ON' #ON: Istio authorization is enabled for all services in the mesh.

但是,看起来A仍然可以与B对话:

我可以将外壳放入A的容器中,并使其正常运行:

curl --user user:password B:8081/about

此外,我有一个istio网关和一个配置为可以打A的虚拟服务。它能够与A对话,而与B对话也很好。

$ curl  --user apsampleapp:apapppass!  http://${GATEWAY_URL}/responseTime
.. 
works as expected
..

上面的卷曲应该不起作用,因为没有用户/服务应该能够与两个A / B通话。

这是网关和VirtualService yaml:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-authz-demo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: istio-authz-demo
spec:
  hosts:
  - "*"
  gateways:
  - istio-authz-demo-gateway
  http:
  - match:
    - uri:
        exact: /responseTime
    - uri:
        exact: /actuator/health
    route:
    - destination:
        host: A
        port:
          number: 8080

0 个答案:

没有答案