本文为您介绍审计日志的概述、使用场景、范围以及字段定义。

概述

MaxCompute完整地记录用户的各项操作行为,并通过阿里云ActionTrail服务将用户行为日志实时推送给ActionTrail。

您可以在ActionTrail中查看和检索用户行为日志,同时通过ActionTrail将日志投递到日志服务项目或指定的OSS Bucket中,满足实时审计、问题回溯分析等需求。**

使用场景

MaxCompute自动将您使用MaxCompute所产生的操作日志,实时投递到ActionTrail中。您可以执行如下分析:
  • 查询历史事件及明细

    ActionTrail控制台事件查询页面,可以查看包括MaxCompute在内的各服务历史事件。详情请参见通过操作审计控制台查询事件

  • 分析实时行为事件

    使用ActionTrail的跟踪列表功能,将事件投递到OSS进行归档分析。或者投递到阿里云日志服务项目内,基于事件触发的实时日志进行分析。例如,敏感数据访问的告警处理。详情请参见创建单账号跟踪

日志范围

ActionTrail针对作业(Instance)、表(Table)、用户(User)、角色(Role)和授权(Privilege)事件的多种操作行为进行审计,如下所示。
事件类型(EventType) 事件名称(EventName) 事件描述
JobEvent InsertJob 成功提交一个MaxCompute作业事件。
JobChange 引起MaxCompute作业状态变化的事件。例如,作业执行成功或作业被中止事件。
TunnelEvent DownloadTable Tunnel下载事件。
UploadTable Tunnel上传事件。
InstanceTunnel 下载Instance的执行结果。例如,SELECT查询操作会触发InstanceTunnel事件。
RoleEvent CreateRole 创建角色事件。
DropRole 删除角色事件。
UserEvent AddUser 添加用户事件。
RemoveUser 移除用户事件。
TableEvent CreateTable 创建表。
ChangeTable 修改表结构信息。例如,执行ALTER TABLE命令。
DropTable 删除表。
DescribeTable 查看表结构(Desc table)。
ReadTableData 读表数据事件。
ChangeTableData 表数据变化事件。例如,INSERT INTO、INSERT OVERWRITE、Truncate和Tunnel导入表数据等操作会触发该事件。
PrivilegeEvent GrantRole 角色授权事件。
RevokeRole 角色授权撤回事件。
GrantACL ACL授权事件。
RevokeACL ACL授权撤回事件。
GrantLabel Label授权事件。
RevokeLabel Label授权撤回事件。
PutRolePolicy 上传MaxCompute角色Policy事件。
SetProjectPolicy 项目级别设置权限策略(Policy)事件。
SetTableLabel 设置Table的列级权限(Label)事件。
SetUserLabel 设置用户的Label权限事件。
AdminEvent CreateProject 创建MaxCompute项目事件。
UpdateProject 更新MaxCompute项目事件。
DeleteProject 删除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请求的客户端代理标识。 JavaSDK Revision:992f8d1 Version:0.35.9 JavaVersion:1.8.0_242 CLT(0.35.3 : a2af3f4); Mac OS X(ip/ali-4c32758ab657)
userIdentity 标识请求者的身份信息。包含accountId、principalId、type和userName信息。 "userIdentity": { // 请求者的身份信息"accountId“: "196550154****", // 阿里云主账号ID "principalId": "10095174****", // 当前请求者的类型 "type": "root-account", // 阿里云主账号 "userName": "root" }
referencedResources 事件涉及的资源,比如JobEvent中有InstanceId,TableEvent中有表名。每种事件的该字段信息不相同。 "referencedResources": { // 事件影响的资源列表"Instance": ["2020102713575683gc2j****"] }
additionalEventData 事件特有的附加信息,例如作业状态、查询语句。每种事件的该字段信息不相同。 "additionalEventData": { "Status": "Failed", "ProjectName": "test_audit", "TaskName": "console_query_task_1603807075919", "InstanceId": "2020102713575683gc2j****", "TaskType": "SQL", "OperationText": "create table a(a bigstring);" }

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:更新的MaxCmpute项目名称。
    • 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" }