istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别、服务级别和方法级别的访问控制。基于角色的访问控制具有简单易用、灵活和高性能等特性。本文介绍如何在服务网格中为服务进行授权控制。

·前置条件·

•安装istio的k8s集群,启用认证功能、双向TLS认证

•部署bookinfo示例应用

下面基于bookinfo应用实例具体介绍如何启用授权并配置访问控制策略:

1. 创建service accout,启用访问控制

我们在service account的基础上启用访问控制,为了给不同的微服务授予不同的访问权限,需要建立不同的service account,在本例中:

创建Service account: bookinfo-productpage,并用它部署 productpage;

创建 Service account:bookinfo-reviews,并用它部署 reviews(其中包含 reviews-v2 和 reviews-v3 两个版本)。

清理所有现存RBAC规则:

此时,用浏览器打开bookinfo的productpage页面,会看到:

2. 启用Istio授权

使用 RbacConfig 对象启用 Istio Authorization:

此时,bookinfo的productpage页面,会看到:

3. 设置命名空间级的访问控制

这一策略创建service-viewer 的 ServiceRole,通过constraints指定了允许访问的服务范围:

创建 ServiceRoleBinding 对象,用来把 service-viewer 角色指派给所有 istio-system 和 default 命名空间的服务:

用浏览器打开bookinfo的productpage页面,会看到完整的页面:

4. 配置服务级的访问控制

清除命名空间级的访问控制

下面在bookinfo中逐步为服务加入访问:

1) 允许到productpage服务的访问

这条策略中创建了名称为 productpage-viewer的ServiceRole,它允许到 productpage 服务的读取访问,并创建命名为 productpage-viewer的 ServiceRole,将 productpage-viewer 角色赋予给所有用户和服务

此时,用浏览器打开bookinfo的productpage页面,会显示 Error fetching product details 和 Error fetching product reviews 的错误信息:

出现上述现象是因为我们还没有给productpage授权访问details 和 reviews 服务,下面两步修复这个问题。

2) 允许对details和reviews服务的访问

details-reviews-viewer:允许对 details 和 reviews 服务进行只读访问

bind-details-review: 把 details-reviews-viewer 角色授予给productpage 服务的 Service account

3) 允许对ratings服务的访问

ratings-viewer: 允许对ratings服务的访问

rind-ratings: 将ratings-viewer角色指派给bookinfo-reviews这个Service account

此时,用浏览器打开bookinfo的productpage页面,会看到完整的页面。

总结:通过上述步骤,我们可以快捷的启用授权功能,并灵活定制访问控制策略来满足不同的安全访问需求。

相关服务请访问https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019

idou老师教你学istio 21:基于角色的访问控制的更多相关文章

  1. idou老师教你学istio :基于角色的访问控制

    istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...

  2. idou老师教你学Istio 07: 如何用istio实现请求超时管理

    在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...

  3. idou老师教你学Istio 16:如何用 Istio 实现微服务间的访问控制

    摘要 使用 Istio 可以很方便地实现微服务间的访问控制.本文演示了使用 Denier 适配器实现拒绝访问,和 Listchecker 适配器实现黑白名单两种方法. 使用场景 有时需要对微服务间的相 ...

  4. idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输

    众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输 ...

  5. idou老师教你学Istio 27:解读Mixer Report流程

    1.概述 Mixer是Istio的核心组件,提供了遥测数据收集的功能,能够实时采集服务的请求状态等信息,以达到监控服务状态目的. 1.1 核心功能 •前置检查(Check):某服务接收并响应外部请求前 ...

  6. idou老师教你学Istio 26:如何使用Grafana进行可视化监控

    使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...

  7. idou老师教你学Istio 24:如何在Istio使用Prometheus进行监控

    使用Prometheus进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,为网格中的服务收集遥测数据.Mixer是负责提供策略控制和遥测收集的Istio组件. Istio通过Mix ...

  8. idou老师教你学Istio 22 : 如何用istio实现调用链跟踪

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等一些功能. 每一个功能都帮助我们在不同场景中实现不同的业务.那么其中比如流量监控这种复杂的功能Istio是如何让我们在不同的应用中实现 ...

  9. idou老师教你学Istio 19 : Istio 流量治理功能原理与实战

    一.负载均衡算法原理与实战 负载均衡算法(load balancing algorithm),定义了几种基本的流量分发方式,在Istio中一共有4种标准负载均衡算法. •Round_Robin: 轮询 ...

随机推荐

  1. robot:生成随机的8为纯数字

    1.引进random库 2.注意最后面的random为需要引入的包

  2. MySQL初始化脚本mysql_install_db使用简介及选项参数

    mysql_install_db是一个默认放在.../mysql/scripts的一个初始化脚本. 该脚本可以在任何装有perl的操作系统上被使用,在5.6.8之前的版本,该脚本是一个shell脚本, ...

  3. Spring 使用下列表

    模型层需要提供数据选项,设置错误信息 关键代码 @NotEmpty(message = "请选择兴趣爱好") private String[] hobbies; 控制器层需要在显示 ...

  4. Zookeeper开源客户端Curator之事件监听详解

    Curator对Zookeeper典型场景之事件监听进行封装,提供了使用参考.这篇博文笔者带领大家了解一下Curator的实现方式. 引入依赖 对于Curator封装Zookeeper的典型场景使用都 ...

  5. ubuntu的sudo免密

    ubuntu的sudo免密与centos大同小异,都是在/etc/sudoers中添加用户信息,添加的内容也一样,只是位置不一样. centos的位置如下: 而ubuntu的位置如下: 除此之外,两行 ...

  6. python+unittest框架第一天unittest之简单认识Test Fixure:测试固件【8月17更新】

    20万的慢慢会实现的吧,hhh unittest框架,我就不在介绍了,百度有很详细的介绍. 我们只要了解: 1.unittest是单元测试框架 2.它提供用例组织与执行:在实际工作中案例可能有上百条, ...

  7. Beanshell post processor写文件

    byte[] responseData = prev.getResponseData().; private String filePath = "F:/test.txt"; Bu ...

  8. 笔记-7:mysql视图

    1.视图概述 2.创建视图 CREATE [OR REPLACE] VIEW view_name [(column_list)] AS SELECT_statement [WITH { CASCADE ...

  9. 1187: 零起点学算法94——今年暑假不AC(Java)

    1187:零起点学算法94--今年暑假不AC Time Limit: 1 Sec Memory Limit: 32 MB 64bit IO Format: %lld Description " ...

  10. windows通过gcc编译代码

    1.将gcc添加到环境变量 2.检查gcc是否安装成功 cmd下输入gcc –v 3.cd进入需要编译源文件的目录 4.dir查看当前目录下是否有需要编译的文件(linux下用ls) 5.编译文件(H ...