AuthorizationPolicy
的时候,我们需要考虑三个部分 。
- 选择要应用该策略的工作负载
- 要采取的行动(拒绝、允许或审计)
- 采取该行动的规则
AuthorizationPolicy
资源中的字段相对应 。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata:name: customers-denynamespace: default spec:selector:matchLabels:app: customersversion: v2action: DENYrules:- from:- source:notNamespaces: ["default"]
使用 selector
和 matchLabels
,我们可以选择策略所适用的工作负载 。在我们的案例中,我们选择的是所有设置了 app: customers
和 version: v2
标签的工作负载 。action 字段被设置为 DENY
。最后,我们在 rules 字段中定义所有规则 。我们例子中的规则是说,当请求来自
default
命名空间之外时,拒绝对 customers v2
工作负载的请求(action) 。除了规则中的
from
字段外,我们还可以使用 to
和 when
字段进一步定制规则 。让我们看一个使用这些字段的例子 。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata:name: customers-denynamespace: default spec:selector:matchLabels:app: customersversion: v2action: DENYrules:- from:- source:notNamespaces: ["default"]- to:- operation:methods: ["GET"]- when:- key: request.headers [User-Agent]values: ["Mozilla/*"]
我们在规则部分添加了 to
和 when
字段 。如果我们翻译一下上面的规则,我们可以说,当客户的 GET 请求来自 default
命名空间之外,并且 User Agent
头的值与正则表达式 Mozilla/*
相匹配时,我们会拒绝 customers v2 的工作负载 。总的来说,
to
定义了策略所允许的行动,from
定义了谁可以采取这些行动,when
定义了每个请求必须具备的属性,以便被策略所允许,selector
定义了哪些工作负载将执行该策略 。如果一个工作负载有多个策略,则首先评估拒绝的策略 。评估遵循这些规则:
- 如果有与请求相匹配的 DENY 策略,则拒绝该请求
- 如果没有适合该工作负载的 ALLOW 策略,则允许该请求 。
- 如果有任何 ALLOW 策略与该请求相匹配,则允许该请求 。
- 拒绝该请求
notNamespaces
。我们还可以使用以下任何一个字段来指定请求的来源,如表中所示 。来源示例释义
principals
principals: ["my-service-account"]
任何是有 my-service-account
的工作负载notPrincipals
notPrincipals: ["my-service-account"]
除了 my-service-account
的任何工作负载requestPrincipals
requestPrincipals: ["my-issuer/hello"]
任何具有有效 JWT 和请求主体 my-issuer/hello
的工作负载notRequestPrincipals
notRequestPrincipals: ["*"]
任何没有请求主体的工作负载(只有有效的 JWT 令牌) 。namespaces
namespaces: ["default"]
任何来自 default
命名空间的工作负载notNamespaces
notNamespaces: ["prod"]
任何不在 prod
命名空间的工作负载ipBlocks
ipBlocks: ["1.2.3.4","9.8.7.6/15"]
任何具有 1.2.3.4
的 IP 地址或来自 CIDR 块的 IP 地址的工作负载notIpBlock
notIpBlocks: ["1.2.3.4/24"]
Any IP address that's outside of the CIDR block3.3 操作操作被定义在 to
字段下,如果多于一个,则使用 AND
语义 。就像来源一样,操作是成对的,有正反两面的匹配 。设置在操作字段的值是字符串:
经验总结扩展阅读
- 五 Istio:使用服务网格Istio进行流量路由
- 2023年八月初十财神方位 九月二十四日财神方位
- 2023年七月十九出生叶姓男孩名字叫什么生辰八字五行查询
- 2024年七月廿九出生熊姓女孩名字生辰八字五行查询
- 不用去上班是什么梗
- 2023年农历八月十九是不是结婚吉日 今天可以迎亲吗
- 2023年农历八月二十九办婚礼好不好 这天宜结婚吗
- 2023年农历九月初一适不适合结婚
- 2023年农历九月初二结婚会幸福吗
- 2023年农历九月初三是不是结婚吉日 今天可以迎亲吗