开放策略代理(OPA)插件通过为应用注入OPA Sidecar代理来定义访问控制策略。当您需要对特定命名空间的应用程序进行精细化授权和访问控制时,可以启用OPA注入范围控制功能,仅添加了opa-istio-injection=enabled
标签的命名空间下的Pod会注入OPA Sidecar代理,实现更细粒度的访问控制。
前提条件
已添加集群到ASM实例,且ASM实例为1.12.4.19及以上版本。具体操作,请参见添加集群到ASM实例。
已创建default和develop命名空间。具体操作,请参见管理命名空间与配额。
已在default命名空间下部署Nginx应用,在develop命名空间下部署Sleep应用。更多信息,请参见创建无状态工作负载Deployment。
步骤一:启用OPA插件和注入范围控制
本文启用OPA插件和注入范围控制后,为default命名空间添加opa-istio-injection=enabled
标签,develop命名空间则不添加opa-istio-injection=enabled
标签,查看Nginx应用和Sleep应用是否都注入OPA Sidecar代理,从而验证控制OPA Sidecar代理注入范围是否成功。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在OPA策略页面,选中启用开放策略代理OPA插件和启用OPA注入范围控制,单击开启OPA功能,在提示对话框,单击确定。
步骤二:为命名空间添加标签
下文介绍如何在ACK控制台上为default命名空间添加opa-istio-injection=enabled
标签。您也可以通过kubectl工具连接集群,执行kubectl label namespace default opa-istio-injection=enabled --overwrite
命令,为命名空间添加标签。关于连接集群的具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择命名空间与配额。
在命名空间页面,单击default命名空间右侧操作列下的编辑。
在编辑命名空间对话框,设置标签名称为opa-istio-injection,值为enabled,单击添加,然后单击确定。
步骤三:重启应用
通过删除Pod的方式使应用重启。重启应用后,会自动注入OPA Sideacr代理。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择
。在容器组页面顶部,设置命名空间为default,单击Nginx应用Pod右侧操作列下的 ,在提示对话框,单击确定。
如果应用下有多个Pod,您需要删除多个Pod,使应用重启。Pod状态显示为Running,说明Pod重启成功。
重复执行以上操作,重启develop命名空间下Sleep应用的Pod。
步骤四:验证控制OPA注入范围是否成功
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择
。在容器组页面,查看Nginx和Sleep应用是否注入OPA Sidecar代理。
设置命名空间为default,单击Nginx应用的名称,在容器页签下可以看到opa-istio,说明Nginx应用注入OPA Sidecar代理。
设置命名空间为develop,单击Sleep应用的名称,在容器页签下没有看到opa-istio,说明Sleep应用未注入OPA Sidecar代理。
通过以上操作,可以看到启用OPA注入范围控制功能后,添加
opa-istio-injection=enabled
标签的命名空间下的应用注入了OPA Sidecar代理,没有添加opa-istio-injection=enabled
标签的命名空间下的应用未注入了OPA Sidecar代理,说明控制OPA注入范围成功。