MaxCompute会完整地记录用户的各项操作行为,并通过阿里云ActionTrail服务将用户行为日志实时推送给ActionTrail。您可以利用ActionTrail的单账号跟踪功能,将日志投递到日志服务SLS或指定的OSS Bucket中,以满足实时审计、问题回溯分析等需求。本文为您介绍审计日志的使用场景及范围。
流程图
ActionTrail服务捕获MaxCompute用户行为日志,并将日志投递到日志服务或对象存储OSS的流程如下:
使用场景
MaxCompute自动将您使用MaxCompute所产生的操作日志,实时投递到ActionTrail中。您可以执行如下分析:
查询历史事件及明细
在ActionTrail控制台的事件查询页面,可以查看包括MaxCompute在内的各服务历史事件。详情请参见通过操作审计控制台查询事件。
分析实时行为事件
使用ActionTrail的跟踪功能,将事件投递到OSS进行归档分析。或者投递到阿里云日志服务项目内,基于事件触发的实时日志进行分析。例如,敏感数据访问的告警处理。详情请参见创建单账号跟踪。
日志范围
ActionTrail针对作业(Instance)、表(Table)、用户(User)、角色(Role)和授权(Privilege)事件的多种操作行为进行审计,详细事件列表请参见大数据计算服务MaxCompute的审计事件,核心要点如下所示。
事件类型(EventType) | 事件名称(EventName) | 事件描述 |
成功提交一个MaxCompute作业事件。 | ||
引起MaxCompute作业状态变化的事件。例如,作业执行成功或作业被中止事件。 | ||
Tunnel下载事件。 | ||
Tunnel上传事件。 | ||
下载Instance的执行结果。例如,SELECT查询操作会触发InstanceTunnel事件。 | ||
创建角色事件。 | ||
删除角色事件。 | ||
添加用户事件。 | ||
移除用户事件。 | ||
创建表。 | ||
修改表结构信息。例如,执行ALTER TABLE命令。 | ||
删除表。 | ||
查看表结构(Desc table)。 | ||
读表数据事件。 | ||
表数据变化事件。例如,INSERT INTO、INSERT OVERWRITE、Truncate和Tunnel导入表数据等操作会触发该事件。 | ||
角色授权事件。 | ||
角色授权撤回事件。 | ||
ACL授权事件。 | ||
ACL授权撤回事件。 | ||
Label授权事件。 | ||
Label授权撤回事件。 | ||
上传MaxCompute角色Policy事件。 | ||
项目级别设置权限策略(Policy)事件。 | ||
设置Table的列级权限(Label)事件。 | ||
设置用户的Label权限事件。 | ||
创建MaxCompute项目事件。 | ||
更新MaxCompute项目事件。 | ||
删除MaxCompute项目事件。 |
日志字段
不同事件类型的字段记录了该类型事件的具体操作行为,您可以通过查看和分析事件的字段满足审计需求。每种事件包含的公共日志字段如下。
字段名 | 说明 | 样例 |
eventId | ActionTrail为每个事件所产生的一个GUID。 | 918510a4-7b63-47d2-b053-8f9db82c431a |
acsRegion | 阿里云地域。 | cn-hangzhou |
eventName | 事件名称。 | InsertJob |
eventTime | 事件的发生时间,UTC格式。 | 2020-01-09T12:12:14Z |
eventType | 事件类型。 | JobEvent |
errorCode | 发生错误时,上报的错误码。 | ODPS-10000 |
errorMessage | 错误描述。 | ODPS-0130161:[1,18] Parse exception - invalid token 'bigstring' |
requestId | API请求ID。 | 6df41e8c-cfd0-4beb-8dd0-13b8490fdf5b |
serviceName | 事件相关的云服务名称。 | MaxCompute |
sourceIpAddress | 提交API请求的源IP地址。 | 47.100.XX.XX |
userAgent | 发送API请求的客户端代理标识。 |
|
userIdentity | 标识请求者的身份信息。包含accountId、principalId、type和userName信息。 |
|
referencedResources | 事件涉及的资源,比如JobEvent中有InstanceId,TableEvent中有表名。每种事件的该字段信息不相同。 |
|
additionalEventData | 事件特有的附加信息,例如作业状态、查询语句。每种事件的该字段信息不相同。 |
|
JobEvent
InsertJob
字段名
说明
样例
referencedResources
InsertJob事件涉及的作业ID信息。
"referencedResources": { // 事件影响的资源列表 "Instance": ["2020102713575683gc2j****" ] }
additionalEventData
InsertJob事件的附加信息。包含内容如下:
ProjectName:作业所属项目空间名称。
TaskName:作业所属任务名称。
InstanceId:作业ID。
TaskType:作业类型,例如SQL、LOT、CUPID。
OperationText:执行语句。
"additionalEventData": { "ProjectName": "meta", "TaskName": "console_query_task_1603807075919", "InstanceId": "2020102713575683gc2j****", "TaskType": "SQL", "OperationText": "create table a(a string);" }
JobChange
字段名
说明
样例
referencedResources
JobChange事件涉及的作业ID信息。
"referencedResources": { // 事件影响的资源列表 "Instance": ["2020102713575683gc2j****" ] }
additionalEventData
JobChange事件的附加信息。包含内容如下:
Status:作业状态。
ProjectName:作业所属项目空间名称。
TaskName:作业所属任务名称。
InstanceId:作业ID。
TaskType:作业类型,例如SQL、LOT、CUPID。
OperationText:执行语句。
"additionalEventData": { "Status": "Failed", "ProjectName": "meta", "TaskName": "console_query_task_1603807075919", "InstanceId": "2020102713575683gc2j****", "TaskType": "SQL", "OperationText": "create table a(a string);" }
TunnelEvent
DownloadTable
字段名
说明
样例
referencedResources
DownloadTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "source_xml_instid_flt_2" ] }
additionalEventData
DownloadTable事件的附加信息。包含内容如下:
TableName:表名称。
Partition:分区信息。
CurrentProject:发起下载操作的项目空间名称。
ProjectName:下载的表所属项目空间名称。
SesssionId:Tunnel Session ID。
"additionalEventData": { "TableName": "source_xml_instid_flt_2", "Partition": "projectname=inst_200233,ds=20201027", "CurrentProject": "project1", "ProjectName": "project2", "SesssionId": "20201027200931a3baca0b037518a7" }
UploadTable
字段名
说明
样例
referencedResources
UploadTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "source_xml_instid_flt_2" ] }
additionalEventData
UploadTable事件的附加信息。包含内容如下:
TableName:表名称。
Partition:分区信息。
ProjectName:上传的表所属项目空间名称。
SesssionId:Tunnel Session ID。
"additionalEventData": { "TableName": "m_rt_privilege_event", "Partition": "ds=20201027,hh=22,mm=00", "ProjectName": "meta2", "SesssionId": "202010272209332231f60b08182dfb" }
InstanceTunnel
字段名
说明
样例
referencedResources
InstanceTunnel事件涉及的作业ID信息。
"referencedResources": { // 事件影响的资源列表 "Instance": [ "20201027080131990gf23****"] }
additionalEventData
InstanceTunnel事件的附加信息。包含内容如下:
CurrentProject:发起下载Instance操作的项目空间名称。
ProjectName:下载的Instance所属项目空间名称。
InstanceId:作业ID
SesssionId:Tunnel Session ID。
"additionalEventData": { "CurrentProject": "meta", "ProjectName": "meta", "InstanceId": "20201027080131990gf23****", "SesssionId": "2020102716014017c4ca0b036850f6" }
RoleEvent
CreateRole
字段名
说明
样例
referencedResources
CreateRole事件涉及的角色名称。
"referencedResources": { // 事件影响的资源列表 "Role": [ "test1" ] }
additionalEventData
CreateRole事件的附加信息。包含内容如下:
RoleName:创建的角色名称。
CurrentProject:发起创建角色操作的项目空间名称。
ProjectName:角色所属项目空间名称。
OperationText:执行语句。
"additionalEventData": { "RoleName": "test1", "CurrentProject": "meta_dev", "ProjectName": "dev1", "OperationText": "create role test1;" }
DropRole
字段名
说明
样例
referencedResources
DropRole事件涉及的角色名称。
"referencedResources": { // 事件影响的资源列表 "Role": [ "test1" ] }
additionalEventData
DropRole事件的附加信息。包含内容如下:
RoleName:删除的角色名称。
CurrentProject:发起删除角色操作的项目空间名称。
ProjectName:角色所属项目空间名称。
OperationText:执行语句。
"additionalEventData": { "RoleName": "test1", "CurrentProject": "meta_dev", "ProjectName": "dev1", "OperationText": "drop role test1;" }
UserEvent
AddUser
字段名
说明
样例
referencedResources
AddUser事件涉及的用户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "ram$xxxx@aliyun.com:sub" ] }
additionalEventData
AddUser事件的附加信息。包含内容如下:
UserName:添加的用户名称。
ProjectName:添加用户的项目空间名称。
OperationText:执行语句。
"additionalEventData": { "UserName": "ram$xxxx@aliyun.com:sub", "ProjectName": "project1", "OperationText": "add user RAM$xxxx@aliyun.com:sub;" }
RemoveUser
字段名
说明
样例
referencedResources
RemoveUser事件涉及的用户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "ram$xxxx@aliyun.com:sub" ] }
additionalEventData
RemoveUser事件的附加信息。包含内容如下:
UserName:删除的用户名称。
ProjectName:删除用户所属项目空间名称。
OperationText:执行语句。
"additionalEventData": { "UserName": "ram$xxxx@aliyun.com:sub", "ProjectName": "project1", "OperationText": "remove user RAM$xxxx@aliyun.com:sub;" }
TableEvent
CreateTable
字段名
说明
样例
referencedResources
CreateTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "ttt" ] }
additionalEventData
CreateTable事件的附加信息。包含内容如下:
TableName:创建的表名称。
ProjectName:表所属项目空间名称。
CorrelationId:与Source配合使用,如果Source是INSTANCE,则表示作业ID,如果Source是Tunnel,则表示Tunnel请求ID。
Source:INSTANCE或TUNNEL。
OperationText:CREATE_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "CREATE_TABLE" }
DropTable
字段名
说明
样例
referencedResources
DropTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "ttt" ] }
additionalEventData
DropTable事件的附加信息。包含内容如下:
TableName:删除的表名称。
ProjectName:表所属项目空间名称。
CorrelationId:与Source配合使用,如果Source是INSTANCE,则表示作业ID,如果Source是Tunnel,则表示Tunnel请求ID。
Source:INSTANCE或TUNNEL。
OperationText:DROP_TABLE表示用户主动请求删除,RECYCLE_TABLE表示设置了生命周期被系统回收。
"additionalEventData": { "TableName": "hot_user_hs_top30", "ProjectName": "prj1", "CorrelationId": "20201023024002372giqvmv21", "Source": "INSTANCE", "OperationText": "DROP_TABLE" }
ChangeTable
字段名
说明
样例
referencedResources
ChangeTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "ttt" ] }
additionalEventData
ChangeTable事件的附加信息。包含内容如下:
TableName:修改的表名称。
ProjectName:表所属项目空间名称。
CorrelationId:与Source配合使用,如果Source是INSTANCE,则表示作业ID,如果Source是Tunnel,则表示Tunnel请求ID。
Source:INSTANCE或TUNNEL。
OperationText:ALTER_TABLE_RENAME、ADD_PARTITION、ALTER_TABLE_ADD_COLUMNS、ALTER_TABLE_CHANGE_LIFECYCLE、ALTER_TABLE_DROP_PARTITION或ALTER_PARTITION。
"additionalEventData": { "TableName": "ttt", "ProjectName": "proj1", "CorrelationId": "20201028161651750g05e0tsa", "Source": "INSTANCE", "OperationText": "ADD_PARTITION" }
DescribeTable
字段名
说明
样例
referencedResources
DescribeTable事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "ttt" ] }
additionalEventData
DescribeTable事件的附加信息。包含内容如下:
TableName:查看的表名。
ProjectName:表所属项目空间名称。
"additionalEventData": { "TableName": "ttt", "ProjectName": "prj1", }
ChangeTableData
字段名
说明
样例
referencedResources
ChangeTableData事件涉及的表名称。
"referencedResources": { // 事件影响的资源列表 "Table": [ "ttt" ] }
additionalEventData
ChangeTableData事件的附加信息。包含内容如下:
TableName:修改的表名称。
ProjectName:表所属项目空间名称。
CorrelationId:与Source配合使用,如果Source是INSTANCE,则表示作业ID,如果Source是Tunnel,则表示Tunnel请求ID。
Source:INSTANCE或TUNNEL。
OperationText:TRUNCATE_TABLE、INSERT_OVERWRITE_TABLE、INSERT_OVERWRITE_PARTITION、INSERT_PARTITION或INSERT_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "DATA_INGESTION" }
ReadTableData
字段名
说明
样例
referencedResources
无
无
additionalEventData
ReadTableData事件的附加信息。包含内容如下:
TableName:读取数据的表名称。
ProjectName:表所属项目空间名称。
CorrelationId:与Source配合使用,如果Source是INSTANCE,则表示作业ID,如果Source是Tunnel,则表示Tunnel请求ID。
Source:INSTANCE或TUNNEL。
OperationText:READ_TABLE。
"additionalEventData": { "TableName": "ttt", "ProjectName": "meta_dev", "CorrelationId": "20201027083345196gsjgpv21", "Source": "INSTANCE", "OperationText": "READ_TABLE" }
PrivilegeEvent
GrantRole
字段
说明
样例
referencedResources
GrantRole事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantRole事件的附加信息。包含内容如下:
UserName:被授权的云账户名称。
ProjectName:授权的项目空间名称。
OperationText:执行语句。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "grant test_role to ALIYUN$xxx@aliyun.com" }
RevokeRole
字段名
说明
样例
referencedResources
RevokeRole事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeRole事件的附加信息。包含内容如下:
UserName:被撤销授权的云账户名称。
ProjectName:撤销授权的项目空间名称。
OperationText:执行语句。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "revoke test_role from ALIYUN$xxx@aliyun.com" }
GrantACL
字段名
说明
样例
referencedResources
GrantACL事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantACL事件的附加信息。包含内容如下:
ObjectType:授权对象类型,PROJECT、RESOURCE、TABLE或FUNCTION。
CurrentProject:发起授权操作的项目空间名称。
UserName:被授权的云账户名称。
ProjectName:授权的项目空间名称。
OperationText:执行语句。
ObjectName:授权对象名称。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "grant createtable on project meta to ALIYUN$xxx@aliyun.com;", "ObjectName": "meta" }
RevokeACL
字段名
说明
样例
referencedResources
RevokeACL事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeACL事件的附加信息。包含内容如下:
ObjectType:撤销授权对象类型,PROJECT、RESOURCE、TABLE或FUNCTION。
CurrentProject:发起撤销授权操作的项目空间名称。
UserName:撤销授权的云账户名称。
ProjectName:撤销授权的项目空间名称。
OperationText:执行语句。
ObjectName:撤销授权对象名称。
"additionalEventData": { "ObjectType": "PROJECT", "CurrentProject": "meta", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "project1", "OperationText": "revoke createtable on project project1 from ALIYUN$xxx@aliyun.com;", "ObjectName": "project1" }
GrantLabel
字段名
说明
样例
referencedResources
GrantLabel事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
GrantLabel事件的附加信息。包含内容如下:
ObjectType:授权对象类型,TABLE。
UserName:被授权的云账户名称。
ProjectName:发起授权操作的项目空间名称。
OperationText:执行语句。
ObjectName:授权对象名称。
"additionalEventData": { "ObjectType": "TABLE", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "GRANT LABEL 4 ON TABLE t1 TO USER ALIYUN$xxx@aliyun.com;", "ObjectName": "meta" }
RevokeLabel
字段名
说明
样例
referencedResources
RevokeLabel事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
RevokeLabel事件的附加信息。包含内容如下:
ObjectType:撤销授权对象类型,PROJECT、RESOURCE、TABLE、FUNCTION。
UserName:被撤销授权的云账户名称。
ProjectName:撤销授权的项目空间名称。
OperationText:执行语句。
ObjectName:撤销授权对象名称。
"additionalEventData": { "ObjectType": "TABLE", "UserName": "aliyun$xxx@aliyun.com", "ProjectName": "meta", "OperationText": "Revoke LABEL 4 ON TABLE t1 from USER ALIYUN$xxx@aliyun.com;", "ObjectName": "t1" }
PutRolePolicy
字段名
说明
样例
referencedResources
PutRolePolicy事件涉及的角色名称。
"referencedResources": { // 事件影响的资源列表 "Role": [ "test1_role" ] }
additionalEventData
PutRolePolicy事件的附加信息。包含内容如下:
RoleName:角色名称。
CurrentProject:发起角色Policy操作的项目空间名称。
ProjectName:角色所属项目空间名称。
OperationText:Policy内容。
"additionalEventData": { "RoleName": "test1_role", "CurrentProject": "meta_dev", "ProjectName": "meta_dev", "OperationText": "{\n \"Statement\": [{\n \"Action\": [\"odps:Read\",\n \"odps:List\"],\n \"Effect\": \"Allow\",\n \"Resource\": [\"acs:odps:*:projects/p1\"]},\n {\n \"Action\": [\"odps:Describe\",\n \"odps:Select\"],\n \"Effect\": \"Allow\",\n \"Resource\": [\"acs:odps:*:projects/p1/tables/m_*\"]}],\n \"Version\": \"1\"}" }
SetProjectPolicy
字段名
说明
样例
referencedResources
无
无
additionalEventData
SetProjectPolicy事件的附加信息。CurrentProject表示发起项目级Policy操作的项目空间名称。
"additionalEventData": { "CurrentProject": "test_prj"}" }
SetTableLabel
字段名
说明
样例
referencedResources
无
无
additionalEventData
SetTableLabel事件的附加信息。包含内容如下:
ObjectType:对象类型,TABLE。
OperationText:执行语句。
ObjectName:对象名称。
"additionalEventData": { "ObjectType": "TABLE", "OperationText": "SET LABEL 3 TO TABLE t1test(col1);", "ObjectName": "t1test" }
SetUserLabel
字段名
说明
样例
referencedResources
SetUserLabel事件涉及的云账户名称。
"referencedResources": { // 事件影响的资源列表 "User": [ "aliyun$xxxx@aliyun.com" ] }
additionalEventData
SetUserLabel事件的附加信息。UserName表示设置用户列级权限的云账户名称。
"additionalEventData": { "UserName": "aliyun$xxxx@aliyun.com" }
AdminEvent
CreateProject
字段名
说明
样例
referencedResources
无
无
additionalEventData
CreateProject事件的附加信息。ProjectName表示新增的MaxCompute项目名称。
"additionalEventData": { "ProjectName": "xxxx" }
UpdateProject
字段名
说明
样例
referencedResources
无
无
additionalEventData
UpdateProject事件的附加信息。包含内容如下:
ProjectName:更新的MaxCompute项目名称。
Properties:更新的属性项(Flag)。
State:可选。项目的状态,取值为FROZEN(欠费停服)或AVAILABLE(续费重开)。
"additionalEventData": { "ProjectName": "xxx", "Properties": "{\"odps.sql.decimal.odps2\":\"true\",\"odps.sql.hive.compatible\":\"false\",\"odps.sql.type.system.odps2\":\"true\"}" }
DeleteProject
字段名
说明
样例
referencedResources
无
无
additionalEventData
DeleteProject事件的附加信息。ProjectName表示删除的MaxCompute项目名称。
"additionalEventData": { "ProjectName": "xxxx" }