Kubernetes Istio授权政策规则问题
我一直在测试istio(1.6)授权策略,并希望确认以下内容:Kubernetes Istio授权政策规则问题,kubernetes,istio,Kubernetes,Istio,我一直在测试istio(1.6)授权策略,并希望确认以下内容: 我是否可以使用k8s服务名称,如下所示,其中httpbin.bar是部署/工作负载httpbin的服务名称: 我有以下规则;仅允许从foo命名空间中的服务帐户sleep访问httpbin.bar服务 我设置了2个服务httpbin.bar和私有httpbin.bar。我的假设是它会阻止访问privatehttpbin.bar,但事实并非如此。另一方面,我故意避免添加selector.matchLabels,因为据我所知,该规则只适用
httpbin.bar
是部署/工作负载httpbin的服务名称:foo
命名空间中的服务帐户sleep
访问httpbin.bar
服务私有httpbin.bar
。我的假设是它会阻止访问privatehttpbin.bar,但事实并非如此。另一方面,我故意避免添加selector.matchLabels
,因为据我所知,该规则只适用于httpbin.bar
文件规定:
当至少有一个源、操作和条件与请求匹配时,就会发生匹配
根据
我解释说,和逻辑将应用于源
和操作
如果我能找出这可能不起作用的原因,或者我的理解需要纠正,我将不胜感激。在第一点上,您可以通过k8s服务名称指定主机名。因此,主机字段可以使用httpbin.bar 关于第二点, 根据, 授权策略范围(目标)由 “元数据/命名空间”和可选的“选择器” “元数据/命名空间”告诉策略应用的命名空间。如果设置 对于根命名空间,该策略应用于网格中的所有命名空间 因此,授权策略
白名单httpbin bar
适用于命名空间foo
中的工作负载。但是要授权的服务httpbin
和privatehttbin
位于bar
命名空间中。因此,您的授权策略不会限制对这些服务的访问
如果工作负载没有允许策略,请允许请求
上述条件使请求成为有效的请求
希望这有帮助。在第一点上,您可以通过k8s服务名称指定主机名。因此,主机字段可以使用httpbin.bar 关于第二点, 根据, 授权策略范围(目标)由 “元数据/命名空间”和可选的“选择器” “元数据/命名空间”告诉策略应用的命名空间。如果设置 对于根命名空间,该策略应用于网格中的所有命名空间 因此,授权策略
白名单httpbin bar
适用于命名空间foo
中的工作负载。但是要授权的服务httpbin
和privatehttbin
位于bar
命名空间中。因此,您的授权策略不会限制对这些服务的访问
如果工作负载没有允许策略,请允许请求
上述条件使请求成为有效的请求
希望这有帮助。对于您的
授权策略
对象,命名空间栏中有两条规则:
- 允许来自
命名空间的任何请求;使用服务帐户foo
进行任何服务睡眠
- 允许对
服务的任何请求;从任何命名空间,使用任何服务帐户httpbin
foo
和服务帐户sleep
的任何请求与服务httpbin
对话,在命名空间栏中,您需要应用以下规则:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: whitelist-httpbin-bar
namespace: bar
rules:
- from:
- source:
principals: ["cluster.local/ns/foo/sa/sleep"]
to: # <- remove the dash (-) from here
- operation:
hosts: ["httpbin.bar"]
apiVersion:security.istio.io/v1beta1
种类:授权政策
元数据:
名称:白名单httpbin栏
名称空间:bar
规则:
-发件人:
-资料来源:
主体:[“cluster.local/ns/foo/sa/sleep”]
要:#使用
AuthorizationPolicy
对象,命名空间栏中有两条规则:
- 允许来自
命名空间的任何请求;使用服务帐户foo
进行任何服务睡眠
- 允许对
服务的任何请求;从任何命名空间,使用任何服务帐户httpbin
foo
和服务帐户sleep
的任何请求与服务httpbin
对话,在命名空间栏中,您需要应用以下规则:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: whitelist-httpbin-bar
namespace: bar
rules:
- from:
- source:
principals: ["cluster.local/ns/foo/sa/sleep"]
to: # <- remove the dash (-) from here
- operation:
hosts: ["httpbin.bar"]
apiVersion:security.istio.io/v1beta1
种类:授权政策
元数据:
名称:白名单httpbin栏
名称空间:bar
规则:
-发件人:
-资料来源:
主体:[“cluster.local/ns/foo/sa/sleep”]
致:#感谢您确认Q1。在Q2上,名称空间实际上是
bar
。我错误地将它添加到这里,作为foo
(我更新了问题)。如果我按照你所说的去做,它应该可以工作,但是我似乎只有在添加选择器。matchLabels
以匹配httbin
工作负载时,它才会阻止privatehttpin
@kaizenCoder。很抱歉,我在第一点上可能错了。主机字段可以在其他资源中获取k8s值,但我不知道授权策略是否接受它。我认为您必须为用例指定工作负载选择器。感谢您确认Q1。在Q2上,名称空间实际上是bar
。我错误地将它添加到这里,作为foo
(我更新了问题)。如果我按照你所说的去做,它应该可以工作,但是我似乎只有在添加选择器。matchLabels
以匹配httbin
工作负载时,它才会阻止privatehttpin
@kaizenCoder。很抱歉,我在第一点上可能错了。主机字段可以在其他资源中获取k8s值,但我不知道授权策略是否接受它。我认为您必须为使用ca指定工作负载选择器
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: whitelist-httpbin-bar
namespace: bar
rules:
- from:
- source:
principals: ["cluster.local/ns/foo/sa/sleep"]
to: # <- remove the dash (-) from here
- operation:
hosts: ["httpbin.bar"]