这个task展示如何使用k8s labels控制访问服务。

Before you begin

  • 在k8s集群上安装Istio
  • 部署 Bookinfo
  • 初始化应用版本,路由来自 reviews 服务v2版本的测试用户 “jason”的请求直接以及v3版本的其他用户请求。
istioctl create -f samples/bookinfo/kube/route-rule-reviews-test-v2.yaml
istioctl create -f samples/bookinfo/kube/route-rule-reviews-v3.yaml

注意:如果你在之前的tasks中有冲突的rules,使用 istioctl replace 来替代istioctl create

注意: 如果你使用了非 default的其他命名空间,使用 istioctl -n namespace ... 指定命名空间。

Access control using denials

使用Istio,你可以基于Mixer中可用的任何属性来控制对服务的访问。这种简单的访问控制形式基于使用Mixer选择器有条件的拒绝请求。
想一下 Bookinfo 示例, ratings 服务由 reviews 服务的多个版本进行访问。我们将切断reviews 服务的 v3 版本的访问。

1.在你的浏览器访问Bookinfo productpage (http://$GATEWAY_URL/productpage)。
如果你以用户 “jason”登陆,你将会在每条书评看到黑星评级,说明 ratings 服务被 reviews 服务的 “v2” 版本调用。
如果你以其他用户登陆(或登出),你将在每条书评看到红星评级,说明 ratings 服务被reviews 服务的“v3” 版本调用。

2.明确禁止访问 reviewsv3 版本。
运行以下命令以设置拒绝规则以及handler和实例。

istioctl create -f samples/bookinfo/kube/mixer-rule-deny-label.yaml

你将会看到输出类似:

Created config denier/default/denyreviewsv3handler at revision 2882105
Created config checknothing/default/denyreviewsv3request at revision 2882106
Created config rule/default/denyreviewsv3 at revision 2882107

注意下面在denyreviewsv3 规则中的内容:

match: destination.labels["app"] == "ratings" && source.labels["app"]=="reviews" && source.labels["version"] == "v3"

它匹配来自带有 v3 标签的reviews 服务到 ratings 服务的请求。
这个规则使用 denier 适配器来拒绝来自reviews 服务的 v3 版本的请求。这个适配器总是用一个前置状态码和信息来拒绝请求。这个状态码和信息在denier 适配器配置中被指定。

3.在你的浏览器中刷新 productpage
如果你登出或者以非 “jason” 用户登陆,你将不再看到红色星评,因为 reviews:v3 服务已经被拒绝访问ratings 服务。相反,如果你使用 “jason” (the reviews:v2 user)用户登陆,你将继续看到黑色星评。

Access control using whitelists

Istio也支持基于属性的白名单和黑名单。下面白名单的配置和上节 denier 配置相同。规则有效拒绝来自 reviews 服务的 v3 版本的请求。

1.移除你在上节添加的denier 配置。

istioctl delete -f samples/bookinfo/kube/mixer-rule-deny-label.yaml

2.确认当你没有登陆时访问Bookinfo productpage (http://$GATEWAY_URL/productpage)会看到红星。当你执行完下面的步骤,除非你使用“jason”登陆,否则你将不再能看到星级。

3.创建 list 适配器的配置,列出 v1, v2 版本。保存下面YAML段落到 whitelist-handler.yaml

apiVersion: config.istio.io/v1alpha2
kind: listchecker
metadata:name: whitelist
spec:# providerUrl: ordinarily black and white lists are maintained# externally and fetched asynchronously using the providerUrl.overrides: ["v1", "v2"]  # overrides provide a static listblacklist: false

然后运行

istioctl create -f whitelist-handler.yaml

4.创建 listentry 模板实例来提取version标签。将下面的YAML片段保存为 appversion-instance.yaml

apiVersion: config.istio.io/v1alpha2
kind: listentry
metadata:name: appversion
spec:value: source.labels["version"]

然后运行

istioctl create -f appversion-instance.yaml

5.使用 whitelist 检查ratings 服务。将如下YAML片段保存为 checkversion-rule.yaml

apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:name: checkversion
spec:match: destination.labels["app"] == "ratings"actions:- handler: whitelist.listcheckerinstances:- appversion.listentry

然后运行

istioctl create -f checkversion-rule.yaml

6.确认当你不登录访问the Bookinfo productpage (http://$GATEWAY_URL/productpage) 时看不到星级。确认当你以“jason” 登陆后看到黑星。

Cleanup

  • 移除mixer配置
istioctl delete -f checkversion-rule.yaml
istioctl delete -f appversion-instance.yaml
istioctl delete -f whitelist-handler.yaml
  • 移除应用路由规则
istioctl delete -f samples/bookinfo/kube/route-rule-reviews-test-v2.yaml
istioctl delete -f samples/bookinfo/kube/route-rule-reviews-v3.yaml
  • 如果你不打算探索接下来地任何课题,参考 Bookinfo cleanup 指南来关闭应用。

Setting up Basic Access Control相关推荐

  1. CISCO SECURE ACCESS CONTROL SERVER

    CISCO SECURE ACCESS CONTROL SERVER 安全访问控制服务器为思科智能信息网络提供基于身份的全面的访问控制解决方案.它是用于管理企业网络用户.管理员和网络基础设施资源的集成 ...

  2. 【原创】RabbitMQ 之 Access Control(翻译)

    2019独角兽企业重金招聘Python工程师标准>>> Access Control When the server first starts running, and detect ...

  3. 协议簇: Media Access Control(MAC) Frame 解析

    Media Access Control(MAC) Frame 解析 前言 千里之行,始于足下. 因为个人从事网络协议开发,一直想深入的学习一下协议族,从这篇开始,我将开始记录分享我学习到的网络协议相 ...

  4. 记一次ORA-24247: network access denied by access control list (ACL)

    这两天在测试使用UTL_SMTP发送邮件时,遇到了ORA-24247的错误: Error report: ORA-24247: network access denied by access cont ...

  5. android os.access,Establishing mandatory access control on Android OS

    摘要: Common characteristic of all mobile operating systems for smart devices is an extensive middlewa ...

  6. FreeIPA ACI (Access Control Instructions) 访问控制说明

    目录 FreeIPA ACI (Access Control Instructions) 访问控制说明 一.ACI 位置 二.ACI 结构 三.ACI 局限性 四.复制拓扑中的ACI 五.操作ACI ...

  7. remote: HTTP Basic: Access denied

    github 提交项目 提示 remote: HTTP Basic: Access denied 这个一般就是自己更改github账号的密码引起的 处理方法1 进入控制面板-->用户账号--&g ...

  8. [认证授权] 6.Permission Based Access Control

    在前面5篇博客中介绍了OAuth2和OIDC(OpenId Connect),其作用是授权和认证.那么当我们得到OAuth2的Access Token或者OIDC的Id Token之后,我们的资源服务 ...

  9. ORA-24247: network access denied by access control list (ACL)

    Using UTL_SMTP to send email from your oracle database has changed in Oracle 11g. Or – to be more pr ...

最新文章

  1. MySQL学习笔记 约束以及修改数据表
  2. java 逗号运算符_Java 运算符
  3. 简单的文本设计就能影响游戏体验?游戏中提升玩家体验的小设计
  4. snmp服务 2003 镜像_美国掌握全球70%根服务器,一旦对中国关闭,我们将无法上网?...
  5. OPPO或将于本月推出Find X2 英雄联盟 S10 限定版
  6. c socket双向通信 qq linux,请问如何实现像QQ那样2个内网用户的点到点SOCKET通信?...
  7. 一枚比特币变换一台车,特斯拉与比特币还要绑定多久?
  8. Linux动态库soname的使用(转载)
  9. 计算机字体对于现代设计有何意义,字体设计课程计算机授课方式的探索.doc
  10. 什么是互联网外包公司
  11. C#本地化国际化解决方案实现简介
  12. 虚拟账户 FTP 服务器不能上传可下载
  13. 北斗系统海拔高度测试软件,GPS海拔测量仪手机版
  14. 真香!安利 6 个 Python 数据分析神器
  15. 华为设备配置MAC地址
  16. 如何设置谷歌浏览器背景图片
  17. 把一元硬币换成1分,2分5分的硬币有几种不同的方法
  18. 2019校招内推拼多多面试总结
  19. 7.MPLS VP恩 后门链路shamlink
  20. pusher 创建新应用_基于 Laravel + Pusher + Vue 通过事件广播构建实时聊天室应用

热门文章

  1. 收房入住注意事项及程序
  2. 如何快速读懂别人的项目
  3. 2019 年第 13 周 DApp 影响力排行榜 | TokenInsight
  4. windows10 右下角网络连接栏显示一个电脑加上一个红叉,已解决
  5. 一个漂亮的证明与作图:高斯的正十七边形
  6. 多源数据融合 Sar Optical(一)像素级融合
  7. android 苹果 换机,苹果12怎么一键换机安卓?iPhone12一键换机功能操作步骤
  8. C语言小例子【基础】
  9. 猿团君分析-程序员如何成功的提高影响力2.0
  10. 国内TeamViewer正版授权的代理商有哪些?如何查询?