当您需要按照自身需求定制访问控制策略时,可以在ASM安全策略中配置自定义授权服务,将请求转发至指定的自定义授权服务进行鉴权,便于实现更加复杂的鉴权逻辑,减少开发和维护成本,提高开发效率。
前提条件
操作步骤
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在ASM安全策略页面,单击创建。在创建ASM安全策略对话框,单击自定义授权服务,然后单击确定。
在创建自定义授权服务页面的自定义授权服务配置配置向导,单击基于envoy.ext_authz实现的自定义授权服务(HTTP或gRPC协议)页签,进行相关配置,然后单击下一步。
本示例配置如下。关于配置项的说明,请参见接入HTTP协议的自定义授权服务。
在工作负载和匹配规则配置向导,单击添加工作负载组。在新建工作负载组对话框,进行相关配置,然后单击提交。
本示例配置如下。
配置项
说明
工作负载组名称
配置为test-policy。
工作负载列表
单击添加工作负载。
在添加工作负载对话框,选中工作负载生效,选择命名空间为default,工作负载类型为Service。
在选择负载区域,选中productpage,单击图标,将选中的负载添加到已选择区域,然后单击确定。
匹配规则列表
匹配模式选择选中请求必须经过鉴权,匹配规则选中自定义匹配规则,然后打开HTTP路径(Path)开关,配置为/productpage。
创建成功后,在完成配置向导,会显示ASM安全策略创建成功。您可以单击查看YAML查看创建的资源,也可以单击完成,返回ASM安全策略页面,查看新创建的安全策略。
验证自定义授权配置是否生效。
执行以下命令,请求中携带
x-ext-authz: allow
,访问productpage服务。curl -I -H "x-ext-authz: allow" http://${ASM网关IP地址}/productpage
预期输出:
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 5288 server: istio-envoy date: Tue, 17 Jan 2023 07:53:14 GMT x-envoy-upstream-service-time: 20
预期输出表明触发鉴权且鉴权通过。
执行以下命令,请求中携带
x-ext-authz: deny
,访问productpage服务。curl -I -H "x-ext-authz: deny" http://${ASM网关IP地址}/productpage
预期输出:
HTTP/1.1 403 Forbidden x-ext-authz-check-result: denied date: Tue, 17 Jan 2023 07:55:27 GMT server: istio-envoy x-envoy-upstream-service-time: 2 transfer-encoding: chunked
预期输出表明触发鉴权但鉴权未通过。
以上结果表明自定义授权配置生效。
相关操作
关于ASM安全策略的概念和相关功能说明,请参见ASM安全策略概述。
您可以启用网格审计功能,记录或追溯不同用户的日常操作,也可以为网格资源操作配置审计告警,在重要资源变动时及时发出告警通知到告警联系人。具体操作,请参见使用KubeAPI操作审计和为网格资源操作配置审计告警。