当您需要审计和监控服务网格内的资源操作时,可以开启网格审计并配置SLS的告警,为ASM资源(VirtualService、DestinationRule等)的变更行为添加审计告警能力。在重要资源变动时及时发送告警通知到告警联系人,以保障服务网格的安全性和合规性。本文介绍如何为网格资源操作配置审计告警,并在虚拟服务被删除时发送短信通知给告警联系人。
前提条件
步骤一:开启网格审计
开启网格审计后,ASM实例的KubeAPI操作日志会被收集到SLS作为后续的告警配置的数据来源。
-
登录ASM控制台,在左侧导航栏,选择。
-
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
-
在KubeAPI操作审计页面,选中启用网格审计,然后单击确定。
界面显示如下,表明网格审计启用成功。
开启成功后,网格审计页面将展示API访问概览和资源操作详细列表两个页签。Mesh API访问概览中包含访问来源分布饼图、非法访问次数统计以及公网访问列表(含源地址、访问次数、失败率、非法访问次数、是否高危IP、地域及运营商等列),页面右上角提供关闭网格审计入口。
步骤二:添加告警接收用户
本示例后续产生的告警会被通知到SLS的服务网格内置用户组,因此需要将能接收通知的账号添加到该用户组中。
-
确认测试子账号已经添加了手机号,并且对应号码能够正常接收短信。具体操作,请参见创建用户。
-
在用户组中添加测试子账号。
登录日志服务控制台。
-
在Project列表区域,单击目标Project名称,然后在左侧导航栏,单击告警。
-
如果是新建的Project(没有在创建网格时或开启审计功能时显式地复用现有Project),则Project名字格式为
mesh-log-<Mesh ID>。 -
如果是复用已有的Project,单击复用Project名称。
-
-
在告警中心页面,单击。
-
在用户组管理页签,单击SLS 服务网格内置用户组右侧操作列下的修改。
SLS 服务网格内置用户组对应的标识符为sls.app.asm.builtin。
-
在修改用户组对话框,添加测试子账号,然后单击确认。
步骤三:配置审计告警
配置VirtualService资源删除的短信告警通知。
登录日志服务控制台。
-
在Project列表区域,单击目标Project名称,然后在左侧导航栏,单击告警。
-
在告警中心页面的告警规则页签,单击新建告警。
-
在新建告警面板,配置相关信息,然后单击确定。
部分配置项说明如下。关于配置项的详细说明,请参见创建告警监控规则。
配置项
说明
规则名称
配置为虚拟服务删除。
检查频率
为了快速验证本示例的效果,因此配置为1分钟。
查询统计
-
单击添加,在查询统计对话框的高级配置页签,选择audit开头的日志库。
-
查询区间选择与检查频率相同的1分钟(相对),以避免重复报警与漏报。
-
在查询文本框,输入
(responseStatus.code: 200 or responseStatus.code: 201) and objectRef.resource: virtualservices and objectRef.apiGroup: "networking.istio.io" and ( verb: delete ),然后单击预览,确认无误后,单击确定。
触发条件
配置为当有数据时,严重度高。
添加标注
您可以按需修改title和desc,配置告警内容的标题和内容。更多说明,请参见内容模板变量说明(新版)。
输出目标
选择SLS通知,打开开启开关,行动策略选择SLS 服务网格内置行动策略 (sls.app.asm.builtin)。
分组评估选择不分组。添加标注中,title和desc的值均设为
${alert_name}告警触发。输出目标同时勾选事件库和云监控事件中心。告警策略选择普通模式,重复等待设为1 分钟。 -
步骤四:验证审计告警
通过删除一个VirtualService资源来验证步骤三配置的审计告警。
-
创建并删除虚拟服务。
-
登录ASM控制台,在左侧导航栏,选择。
-
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择,然后单击使用YAML创建。
-
在创建页面,命名空间选择default,场景模板选择HTTP基础路由,然后单击创建。
-
在虚拟服务页面的操作列,单击新建的reviews-route虚拟服务对应的删除,然后在确认对话框,单击确定。
-
-
查看审计告警是否成功。
登录日志服务控制台。
-
在Project列表区域,单击目标Project名称,然后在左侧导航栏,单击。
-
在仪表盘列表,单击告警历史统计,查看每次告警的执行记录以及是否产生告警行为。
步骤1删除虚拟服务的操作将在告警历史区域产生一次告警。确认 告警历史 表格中目标告警记录的 执行结果 和 通知发送状态 均为 Success,是否触发告警 为 true,表示审计告警配置已生效。
-
在左侧导航栏,单击日志存储,搜索并单击internal-alert-history日志库,然后在页面右侧,单击查询 / 分析。
可以看到AlertDisplayName为虚拟服务删除的告警日志。该条日志的Fired字段为true。
-
查看测试账号绑定的手机是否收到告警通知短信。
相关信息
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用户操作告警。
-
您可以在网格中配置工作负载身份、对等身份认证、请求身份认证、授权策略等,更加细粒度地管理网格资源,提高网格的安全性。具体操作,请参见零信任安全概述。