在ASM安全策略中配置自定义授权服务

当您需要按照自身需求定制访问控制策略时,可以在ASM安全策略中配置自定义授权服务,将请求转发至指定的自定义授权服务进行鉴权,便于实现更加复杂的鉴权逻辑,减少开发和维护成本,提高开发效率。

前提条件

操作步骤

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格安全中心 > ASM安全策略

  3. ASM安全策略页面,单击创建。在创建ASM安全策略对话框,单击自定义授权服务,然后单击确定

  4. 创建自定义授权服务页面的自定义授权服务配置配置向导,单击基于envoy.ext_authz实现的自定义授权服务(HTTP或gRPC协议)页签,进行相关配置,然后单击下一步

    本示例配置如下。关于配置项的说明,请参见接入HTTP协议的自定义授权服务基本信息在鉴权请求中携带header鉴权通过/失败时覆盖Header

  5. 工作负载和匹配规则配置向导,单击添加工作负载组。在新建工作负载组对话框,进行相关配置,然后单击提交

    本示例配置如下。

    配置项

    说明

    工作负载组名称

    配置为test-policy

    工作负载列表

    1. 单击添加工作负载

    2. 添加工作负载对话框,选中工作负载生效,选择命名空间default工作负载类型Service

    3. 选择负载区域,选中productpage,单击添加图标,将选中的负载添加到已选择区域,然后单击确定

    匹配规则列表

    匹配模式选择选中请求必须经过鉴权匹配规则选中自定义匹配规则,然后打开HTTP路径(Path)开关,配置为/productpage

    新建工作负载组

    创建成功后,在完成配置向导,会显示ASM安全策略创建成功。您可以单击查看YAML查看创建的资源,也可以单击完成,返回ASM安全策略页面,查看新创建的安全策略。

  6. 验证自定义授权配置是否生效。

    1. 执行以下命令,请求中携带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

      预期输出表明触发鉴权且鉴权通过。

    2. 执行以下命令,请求中携带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

      预期输出表明触发鉴权但鉴权未通过。

    以上结果表明自定义授权配置生效。

相关操作