Azure Synapse Analytics审计跟踪数据库事件并将其写入Azure 存储,或发送给Azure 事件中心或Azure Monitor Log Analytics进行下游处理和分析。
命名约定
Blob 审计
存储在 Azure Blob 存储 中的审计日志存储在名为 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
事件中心
审计事件写入了配置好的命名空间和事件中心。 事件被记录在Apache Avro 事件的正体中,并使用带有UTF-8编码的JSON格式。
Log Analytics
审计事件写入AzureDiagnostics配置后的 Log Analytics 工作区中的表格。 数据库审核事件使用SQLSecurityAuditEvents类别,Azure 支持操作使用该DevOpsOperationsAudit类别。 查询指导请参见 Log Analytics 查询。
审计日志字段
| 名称(blob) | 名称(Event Hubs/Log Analytics) | Description | Blob 类型 | Event Hubs/Log Analytics 类型 |
|---|---|---|---|---|
action_id |
action_id_s |
操作的 ID | varchar(4) |
string |
action_name |
action_name_s |
动作名称 | N/A | 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 |
审计对象的可审计实体描述 | N/A | string |
client_ip |
client_ip_s |
客户端应用程序的源 IP | nvarchar(128) |
string |
connection_id |
N/A | 服务器上连接的 ID | GUID |
N/A |
data_sensitivity_information |
data_sensitivity_information_s |
受审核查询根据数据库中分类的列返回的信息类型和敏感度标签。 欲了解更多信息,请参见 Azure Synapse Analytics 安全:威胁防护 | 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 |
N/A | 客户端主机名 | string |
N/A |
is_column_permission |
is_column_permission_s |
指示这是否为列级权限的标志。 1 = true,0 = false | bit |
string |
| N/A | is_server_level_audit_s |
标识该审计是否发生在服务器端 | N/A | string |
object_ 身份证 |
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 |
中间层应用的应用程序ID,该应用通过OBO访问连接到Azure Synapse Analytics。 | 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 |
| N/A | securable_class_type_s |
可保障的对象,映射到被审计对象class_type |
N/A | string |
sequence_group_id |
sequence_group_id_g |
唯一标识符 | varbinary |
GUID |
sequence_number |
sequence_number_d |
跟踪单个审核记录中的记录顺序,该记录太大而无法放在写入缓冲区中以进行审核。 Azure Synapse Analytics 审计在审计记录中存储 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 |
事件发生的会话编号 | 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//DENYREVOKE为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 |
未为Azure Synapse Analytics填充 | bigint |
int |
user_defined_event_id |
user_defined_event_id_d |
作为参数 sp_audit_write传递给的用户定义的事件 ID。
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 |