SQL 数据库审核日志格式

适用于:Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics

Azure SQL 数据库审核跟踪数据库事件并将其写入 Azure 存储帐户中的审核日志,或者将其发送到事件中心或 Log Analytics 供下游处理和分析。

命名约定

Blob 审核

Azure Blob 存储中存储的审核日志存储在 Azure 存储帐户中名为 sqldbauditlogs 的容器内。 该容器中的目录层次结构采用 <ServerName>/<DatabaseName>/<AuditName>/<Date>/ 格式。 Blob 文件名的格式为 <CreationTime>_<FileNumberInSession>.xel,其中,CreationTime 采用 UTC hh_mm_ss_ms 格式,FileNumberInSession 是运行的索引(如果会话日志跨多个 Blob 文件)。

例如,对于 Server1 上的数据库 Database1,下面是可能的有效路径:

Server1/Database1/SqlDbAuditing_ServerAudit_NoRetention/2019-02-03/12_23_30_794_0.xel

只读副本审核日志存储在同一容器中。 该容器中的目录层次结构采用 <ServerName>/<DatabaseName>/<AuditName>/<Date>/RO/ 格式。 Blob 文件名共享相同的格式。 只读副本的审核日志存储在同一容器中。

事件中心

审核事件将写入命名空间以及配置审核期间定义的事件中心,在 Apache Avro 事件的正文中捕获,并使用 UTF-8 编码的 JSON 格式进行存储。

Log Analytics

审核事件会写入审核配置期间定义的 Log Analytics 工作区、类别为 SQLSecurityAuditEventsAzureDiagnostics 表和适用于 Microsoft 支持部门操作的类别为 DevOpsOperationsAudit 的表。 有关 Log Analytics 搜索语言和命令的其他有用信息,请参阅 Log Analytics 搜索参考

审核日志字段

名称 (Blob) 名称(事件中心/Log Analytics) 说明 Blob 类型 事件中心/Log Analytics 类型
action_id action_id_s 操作的 ID varchar(4) string
action_name action_name_s 操作的名称 空值 string
additional_information additional_information_s 有关事件的任何附加信息,以 XML 形式存储 nvarchar(4000) string
affected_rows affected_rows_d 查询影响的行数 bigint int
application_name application_name_s 客户端应用程序的名称 nvarchar(128) string
audit_schema_version audit_schema_version_d 始终为 1 int int
class_type class_type_s 发生审核的可审核实体的类型 varchar(2) string
class_type_desc class_type_description_s 发生审核的可审核实体的说明 空值 string
client_ip client_ip_s 客户端应用程序的源 IP nvarchar(128) string
connection_id 空值 服务器中的连接的 ID GUID 空值
data_sensitivity_information data_sensitivity_information_s 受审核查询根据数据库中分类的列返回的信息类型和敏感度标签。 详细了解 Azure SQL 数据库数据发现和分类 nvarchar(4000) string
database_name database_name_s 在其中执行操作的数据库上下文 sysname string
database_principal_id database_principal_id_d 在其中执行操作的数据库用户上下文的 ID int int
database_principal_name database_principal_name_s 在其中执行操作的数据库用户上下文的名称 sysname string
duration_milliseconds duration_milliseconds_d 查询执行持续时间,以毫秒为单位 bigint int
event_time event_time_t 激发可审核操作的日期和时间 datetime2 datetime
host_name 空值 客户端主机名 string 空值
is_column_permission is_column_permission_s 指示是否为列级权限的标志。 1 = true,0 = false bit string
空值 is_server_level_audit_s 指示此项审核是否在服务器级别发生的标志 空值 string
object_id object_id_d 发生审核的实体的 ID。 包括:服务器对象、数据库、数据库对象和架构对象。 如果实体是服务器本身,或者审核不是在对象级别执行的,则值为 0 int int
object_name object_name_s 发生审核的实体的名称。 包括:服务器对象、数据库、数据库对象和架构对象。 如果实体是服务器本身,或者审核不是在对象级别执行的,则值为 0 sysname string
obo_middle_tier_app_id obo_middle_tier_app_id_s 使用 OBO 访问连接到 SQL 数据库的中间层应用程序的应用程序 ID。 varchar(120) string
permission_bitmask permission_bitmask_s 在适用的情况下,显示已授予、已拒绝或已撤销的权限 varbinary(16) string
response_rows response_rows_d 在结果集中返回的行数 bigint int
schema_name schema_name_s 在其中执行操作的架构上下文。 如果审核在架构外部发生,则值为 NULL sysname string
空值 securable_class_type_s 映射到正在审核的 class_type 的安全对象 空值 string
sequence_group_id sequence_group_id_g 唯一标识符 varbinary GUID
sequence_number sequence_number_d 跟踪单个审核记录中的记录顺序,该记录太大而无法放在写入缓冲区中以进行审核。 请注意,Azure SQL 数据库和 Azure Synapse 审核在审核记录中存储字符字段的 4000 个字符的数据。 当超过 4000 个字符时,任何超过前 4000 个字符的数据都将被截断 int int
server_instance_name server_instance_name_s 发生审核的服务器实例的名称 sysname string
server_principal_id server_principal_id_d 在其中执行操作的登录上下文的 ID int int
server_principal_name server_principal_name_s 当前登录名 sysname string
server_principal_sid server_principal_sid_s 当前登录名 SID varbinary string
session_id session_id_d 发生事件的会话的 ID smallint int
session_server_principal_name session_server_principal_name_s 会话的服务器主体 sysname string
statement statement_s 执行的 T-SQL 语句(如果有) nvarchar(4000) string
succeeded succeeded_s 指示触发事件的操作是否成功。 对于除登录和批处理以外的事件,此字段仅报告权限检查是成功还是失败,而不会报告操作结果。 1 = 成功,0 = 失败 bit string
target_database_principal_id target_database_principal_id_d 执行 GRANT/DENY/REVOKE 操作的数据库主体。如果不适用,则为 0 int int
target_database_principal_name target_database_principal_name_s 操作的目标用户。 如果不适用,则值为 NULL string string
target_server_principal_id target_server_principal_id_d 执行 GRANT/DENY/REVOKE 操作的服务器主体。 如果不适用,则返回 0 int int
target_server_principal_name target_server_principal_name_s 操作的目标登录名。 如果不适用,则值为 NULL sysname string
target_server_principal_sid target_server_principal_sid_s 目标登录名的 SID。 如果不适用,则值为 NULL varbinary string
transaction_id transaction_id_d 仅适用于 SQL Server(2016 和更高版本)- 对于 Azure SQL 数据库,值为 0 bigint int
user_defined_event_id user_defined_event_id_d 用户定义的事件 ID,作为参数传递给 sp_audit_write。 对于系统事件,值为 NULL(默认值);对于用户定义的事件,值为非零值。 有关详细信息,请参阅 sp_audit_write (Transact-SQL) smallint int
user_defined_information user_defined_information_s 用户定义的信息,作为参数传递给 sp_audit_write。 对于系统事件,值为 NULL(默认值);对于用户定义的事件,值为非零值。 有关详细信息,请参阅 sp_audit_write (Transact-SQL) nvarchar(4000) string

后续步骤

详细了解 Azure SQL 数据库审核