为网格资源操作配置审计告警

当您需要审计和监控服务网格内的资源操作时,可以开启网格审计并配置SLS的告警,为ASM资源(VirtualService、DestinationRule等)的变更行为添加审计告警能力。在重要资源变动时及时发送告警通知到告警联系人,以保障服务网格的安全性和合规性。本文介绍如何为网格资源操作配置审计告警,并在虚拟服务被删除时发送短信通知给告警联系人。

前提条件

步骤一:开启网格审计

开启网格审计后,ASM实例的KubeAPI操作日志会被收集到SLS作为后续的告警配置的数据来源。

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

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

  3. KubeAPI操作审计页面,选中启用网格审计,然后单击确定

    界面显示如下,表明网格审计启用成功。

    image

步骤二:添加告警接收用户

本示例后续产生的告警会被通知到SLS的服务网格内置用户组,因此需要将能接收通知的账号添加到该用户组中。

  1. 确认测试子账号已经添加了手机号,并且对应号码能够正常接收短信。具体操作,请参见创建用户

  2. 在用户组中添加测试子账号。

    1. 登录日志服务控制台

    2. Project列表区域,单击目标Project名称,然后在左侧导航栏,单击告警

      • 如果是新建的Project(没有在创建网格时或开启审计功能时显式地复用现有Project),则Project名字格式为mesh-log-<Mesh ID>

      • 如果是复用已有的Project,单击复用Project名称。

    3. 告警中心页面,单击通知对象 > 用户组管理

    4. 用户组管理页签,单击SLS 服务网格内置用户组右侧操作列下的修改

      SLS 服务网格内置用户组对应的标识符sls.app.asm.builtin

    5. 修改用户组对话框,添加测试子账号,然后单击确认

步骤三:配置审计告警

配置VirtualService资源删除的短信告警通知。

  1. 登录日志服务控制台

  2. Project列表区域,单击目标Project名称,然后在左侧导航栏,单击告警

  3. 告警中心页面的告警规则页签,单击新建告警

  4. 新建告警面板,配置相关信息,然后单击确定

    部分配置项说明如下。关于配置项的详细说明,请参见创建告警监控规则

    配置项

    说明

    规则名称

    配置为虚拟服务删除

    检查频率

    为了快速验证本示例的效果,因此配置为1分钟

    查询统计

    1. 单击添加,在查询统计对话框的高级配置页签,选择audit开头的日志库

    2. 查询区间选择与检查频率相同的1分钟(相对),以避免重复报警与漏报。

    3. 查询文本框,输入(responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: virtualservices and objectRef.apiGroup: "networking.istio.io" and ( verb: delete ),然后单击预览,确认无误后,单击确定

    触发条件

    配置为当有数据时,严重度高。

    添加标注

    您可以按需修改titledesc,配置告警内容的标题和内容。更多说明,请参见内容模板变量说明(新版)

    输出目标

    选择SLS通知,打开开启开关,行动策略选择SLS 服务网格内置行动策略 (sls.app.asm.builtin)

    告警规则.png

步骤四:验证审计告警

通过删除一个VirtualService资源来验证步骤三配置的审计告警。

  1. 创建并删除虚拟服务。

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

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击使用YAML创建

    3. 创建页面,命名空间选择default场景模板选择HTTP基础路由,然后单击创建

    4. 虚拟服务页面的操作列,单击新建的reviews-route虚拟服务对应的删除,然后在确认对话框,单击确定

  2. 查看审计告警是否成功。

    1. 登录日志服务控制台

    2. Project列表区域,单击目标Project名称,然后在左侧导航栏,单击仪表盘 > 仪表盘列表

    3. 仪表盘列表,单击告警历史统计,查看每次告警的执行记录以及是否产生告警行为。

      步骤1删除虚拟服务的操作将在告警历史区域产生一次告警。告警历史统计.png

    4. 在左侧导航栏,单击日志存储,搜索并单击internal-alert-history日志库,然后在页面右侧,单击查询 / 分析

      可以看到AlertDisplayName虚拟服务删除的告警日志。该条日志的Fired字段为true

      查询分析.png

    5. 查看测试账号绑定的手机是否收到告警通知短信。告警短信.png

相关信息

SLS服务网格内置行动策略细节

告警严重程度

行为

严重

语音通知

短信通知

其他

邮件通知

常用告警条件查询参考

  • ASM网关IstioGateway创建、修改、删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: istiogateways and objectRef.apiGroup: "istio.alibabacloud.com" and ( verb: create or verb: delete or verb: update )
  • 网关规则Gateway删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: gateways and objectRef.apiGroup: "networking.istio.io" and ( verb: delete )
  • 证书ASMCredential删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: asmcredentials and objectRef.apiGroup: "istio.alibabacloud.com" and ( verb: delete )
  • 虚拟服务VirtualService删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: virtualservices and objectRef.apiGroup: "networking.istio.io" and ( verb: delete )
  • 目标规则DestinationRule删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: destinationrules and objectRef.apiGroup: "networking.istio.io" and ( verb: delete )
  • 可观测Telemetry删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: telemetries and objectRef.apiGroup: "telemetry.istio.io" and ( verb: delete )
  • 授权策略AuthorizationPolicies删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: authorizationpolicies and objectRef.apiGroup: "security.istio.io" and ( verb: delete )
  • Envoy过滤器EnvoyFilter删除

    (responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: envoyfilters and objectRef.apiGroup: "networking.istio.io" and ( verb: delete )

相关文档

  • 当您需要为RAM用户授予日志服务告警的只读权限或管理权限,请参见授予RAM用户告警操作权限

  • 您可以在网格中配置工作负载身份、对等身份认证、请求身份认证、授权策略等,更加细粒度地管理网格资源,提高网格的安全性。具体操作,请参见零信任安全概述