通过操作审计创建跟踪,可以持续将操作日志投递到指定的OSS Bucket中。您可以使用数据湖分析DLA(Data Lake Analytics)可视化地查询和分析OSS Bucket中的操作日志。
背景信息
DLA是一款基于Serverless的交互式数据查询分析服务,能够便捷的对不同格式的数据源进行整合并使用统一SQL查询分析。DLA详情,请参见什么是云原生数据湖分析。
使用DLA分析OSS中操作日志的原理如下:
- 通过操作审计创建跟踪,将操作日志持续投递到OSS Bucket。
- 将操作日志从OSS Bucket导入DLA。
- DLA将OSS Bucket内以Array形式保存的多条日志记录拆分为多条数据,以JSON保存的每条操作日志转换为结构化的数据表,使得面向OSS Bucket的数据解析被大大简化,直接实现可视化的标准SQL分析。

操作步骤
- 在DLA中创建Schema。
- 将操作审计投递到OSS Bucket中的日志数据同步到DLA中。
- 使用标准SQL语法分析操作审计日志数据。
查询案例
查询指定AccessKey的操作日志
- 查询语句:
select * from `action_trail` where `user_identity_access_key_id` = '目标AccessKey ID' limit 20;
。 - 查询结果:前20条目标AccessKey ID产生的操作日志。
查询指定AccessKey访问ECS的操作日志
- 查询语句:
select * from `action_trail` where `user_identity_access_key_id` = '目标AccessKey ID' AND `service_name` = 'Ecs' limit 20;
。 - 查询结果:前20条目标AccessKey ID访问ECS产生的操作日志。
Schema表结构
Schema表包含以下关键字段。
名称 | 类型 | 是否必选 | 示例 | 描述 |
---|---|---|---|---|
event_id | String | 是 | F23A3DD5-7842-4EF9-9DA1-3776396A**** | 事件ID。操作审计为每个操作事件所产生的一个GUID。 |
event_name | String | 是 | CreateNetworkInterface | 事件名称。
|
event_source | String | 是 | ecs.aliyuncs.com | 事件来源。 |
event_time | String | 是 | 2020-01-09T12:12:14Z | 事件的发生时间(UTC格式)。 |
event_type | String | 是 | ApiCall | 发生的事件类型。取值:
|
request_parameters | 字典 | 否 | 不涉及 | API请求的输入参数。 |
response_elements | 字典 | 否 | 不涉及 | API响应的数据。 |
service_name | String | 是 | Ecs | 事件相关的云服务名称。 |
source_ip_address | String | 是 | 11.XX.XX.232 | 事件发起的源IP地址。
说明 如果API请求是由用户通过控制台操作触发的,那么该字段记录的是用户浏览器端的IP地址,而不是控制台Web服务器的IP地址。
|
user_agent | String | 是 | Apache-HttpClient/4.5.7 (Java/1.8.0_152) | 发送API请求的客户端代理标识。取值示例:
|
user_identity_type | String | 是 | ram-user | 身份类型。当前支持的身份类型包括:
|
user_identity_principal_id | String | 是 | 28815334868278**** | 当前请求者的ID。
|
user_identity_account_id | String | 是 | 112233445566**** | 阿里云账号ID。 |
user_identity_accessKey_id | String | 否 | 55nCtAwmPLkk**** | 如果请求者通过SDK访问API,则记录该字段。如果请求者通过控制台登录,则该字段不显示。 |
user_name | String | 否 | B** | 如果type的取值是ram-user,则记录RAM用户名。如果type的取值是assumed-role,则记录RoleName:RoleSessionName。 |