配置安全访问控制
当Istio双向TLS认证打开时,服务器就会根据其证书来认证客户端,并从证书获取客户端的服务账户。服务账户在的属性中。请参考Istio auth identity了解Istio中服务账户的格式。
根据的说明在开启认证的Kubernetes中安装Istio。注意,应当在installation steps中的第四步开启认证。
部署示例应用。
在示例应用BookInfo中,productpage
服务会同时访问reviews
服务和服务。现在让details
服务拒绝来自productpage
服务的请求:
在浏览器中打开BookInfo的
productpage
(明确拒绝从
productpage
到details
的请求。执行下列命令来安装拒绝规则及对应的handler和实例。
将会看到类似下面的输出:
Created config denier/default/denyproductpagehandler at revision 2877836
注意
denyproductpage
规则中的下述内容:匹配到了来自details服务上的服务账户 “spiffe://cluster.local/ns/default/sa/bookinfo-productpage“的请求。
该规则使用
denier
适配器来拒绝这些请求。适配器通常通过一个预先配置的状态码和消息来拒绝请求。状态码和消息是在denier适配器配置中指定的。在浏览器中刷新
productpage
页面。“Error fetching product details! Sorry, product details are currently unavailable for this book.“
出现在页面的左下部分。这就验证了从
productpage
到的访问是被禁止的。
清除mixer配置:
istioctl delete -f samples/bookinfo/kube/mixer-rule-deny-serviceaccount.yaml
如果不打算继续接下来的更多任务,可参考的指南来关闭应用。