- Denials 和黑白名单
- 开始之前
- 简单的 denials
- 基于属性的 白名单 或 黑名单
- 基于 IP 的 白名单 或 黑名单
- 清除
- 相关内容
Denials 和黑白名单
此任务说明了如何使用简单的 denials、基于属性的黑白名单、基于 IP 的黑白名单来控制对服务的访问。
开始之前
- 请按照此安装指南中的说明,在 Kubernetes 上安装 Istio。
对于此任务,您 必须 在集群中启用强制策略。参考启用强制策略文档来该策略是启用的。
部署 Bookinfo 样例应用。
初始化直接访问
reviews
服务的应用程序的版本路由请求,对于测试用户 “jason” 的请求直接指定到 v2 版本,其他用户的请求指定到 v3 版本。
Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
然后执行以下命令:
Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml@
如果您使用的 namespace 不是 default
,使用 kubectl -n namespace …
来指明该 namespace。
简单的 denials
通过 Istio 您可以根据 Mixer 中可用的任意属性来控制对服务的访问。这种简单形式的访问控制是基于 Mixer 选择器的条件拒绝请求功能实现的。
考虑 Bookinfo 示例应用,其中 ratings
服务可通过 reviews
服务的多个版本进行访问。我们想切断对 reviews
服务 v3
版本的访问。
- 将浏览器定位到 Bookinfo
productpage
(http://$GATEWAY_URL/productpage
)。
如果您以 “jason” 用户身份登录,则每个评论都应看到黑色的星标,它表示 ratings
服务是通过 “v2” 版本 reviews
服务访问到的。
如果您以其他任何用户身份登录(或登出),则每个评论都应看到红色的星标,它表示 ratings
服务是通过 “v3” 版本 reviews
服务访问到的。
- 要想明确地拒绝对
v3
版本reviews
服务的访问。
连同处理程序和实例,执行以下命令来配置拒绝规则。
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-label.yaml@
如果您使用 Istio 1.1.2 或更早版本,请使用以下配置:
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-label-crd.yaml@
注意 denyreviewsv3
规则的以下部分:
match: destination.labels["app"] == "ratings" && source.labels["app"]=="reviews" && source.labels["version"] == "v3"
它将带有 v3
标签的 reviews
工作负载请求与 ratings
工作负载进行匹配。
该规则通过使用 denier
适配器来拒绝 v3
版本 reviews 服务的请求。适配器始终拒绝带有预配置状态码和消息的请求。状态码和消息在 denier 适配器配置中指定。
- 在浏览器里刷新
productpage
。
如果您已登出或以非 “json” 用户登录,因为v3 reviews
服务已经被拒绝访问 ratings
服务,所以您不会再看到红色星标。相反,如果您以 “json” 用户(v2 reviews 服务
用户)登录,可以一直看到黑色星标。
基于属性的 白名单 或 黑名单
Istio 支持基于属性的白名单和黑名单。以下白名单配置等同于上一节的 denier
配置。此规则能有效地拒绝 v3
版本 reviews
服务的请求。
- 移除上一节 denier 配置。
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-label.yaml@
如果您正在使用 Istio 1.1.2 或更早版本:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-label-crd.yaml@
当您不登录去访问 Bookinfo
productpage
(http://$GATEWAY_URL/productpage
) 时进行验证,会看到红星。再执行以下步骤之后,除非您以 “json” 用户登录,否则不会看到星标。将配置应用于
list
适配器以让v1, v2
版本位于白名单中;
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-whitelist.yaml@
如果您使用 Istio 1.1.2 或更早版本,请使用以下命令:
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-whitelist-crd.yaml@
- 当您不登录去访问 Bookinfo
productpage
(http://$GATEWAY_URL/productpage
) 时进行验证,不会看到星标。以 “jason” 用户登录后验证,您会看到黑色星标。
基于 IP 的 白名单 或 黑名单
Istio 支持基于 IP 地址的 白名单 和 黑名单 。您可以配置 Istio 接受或拒绝从一个 IP 地址或一个子网发出的请求。
您可以访问位于
http://$GATEWAY_URL/productpage
的 Bookinfoproductpage
来进行验证。一旦应用以下规则,您将无法访问它。将配置应用于
list
适配器以添加 ingress 网关中的子网"10.57.0.0\16"
到白名单中:
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-ip.yaml@
如果您使用 Istio 1.1.2 或更早版本,请使用以下命令:
Zip
$ kubectl apply -f @samples/bookinfo/policy/mixer-rule-deny-ip-crd.yaml@
- 尝试访问位于
http://$GATEWAY_URL/productpage
的 Bookinfoproductpage
进行验证,您会获得一个类似的错误:PERMISSION_DENIED:staticversion.istio-system:<your mesh source ip> is not whitelisted
清除
- 对于简单的 denials,移除 Mixer 配置:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-label.yaml@
- 对于基于属性的黑白名单,移除 Mixer 配置:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-whitelist.yaml@
如果您使用 Istio 1.1.2 或更早版本:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-whitelist-crd.yaml@
- 对于基于 IP 的白黑名单,移除 Mixer 配置:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-ip.yaml@
如果您使用 Istio 1.1.2 或更早版本:
Zip
$ kubectl delete -f @samples/bookinfo/policy/mixer-rule-deny-ip-crd.yaml@
- 移除应用程序路由规则:
ZipZip
$ kubectl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
$ kubectl delete -f @samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml@
- 如果您不打算探索任何后续任务,请参考清除 Bookinfo 指南来关闭应用程序。
相关内容
App Identity and Access Adapter
Using Istio to secure multi-cloud Kubernetes applications with zero code changes.
Mixer and the SPOF Myth
Improving availability and reducing latency.
Mixer Adapter Model
Provides an overview of Mixer's plug-in architecture.
Control Headers and Routing
Shows how to modify request headers and routing using policy adapters.
Enabling Policy Enforcement
This task shows you how to enable Istio policy enforcement.
Mixer Configuration Model
Describes the configuration model for Istio's policy enforcement and telemetry mechanisms.