Print this page
NEX-13644 File access audit logging
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>

*** 18,27 **** --- 18,28 ---- * * CDDL HEADER END */ /* * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. All rights reserved. */ #ifndef _BSM_AUDIT_KERNEL_H #define _BSM_AUDIT_KERNEL_H
*** 28,37 **** --- 29,39 ---- /* * This file contains the basic auditing control structure definitions. */ + #include <c2/audit.h> #include <c2/audit_kevents.h> #include <sys/priv_impl.h> #include <sys/taskq.h> #include <sys/zone.h>
*** 183,192 **** --- 185,217 ---- #define TAD_PUBLIC_EV 0x00000400 /* syscall is defined as a public op */ #define TAD_SAVPATH 0x00000800 /* save path for further processing */ #define TAD_TRUE_CREATE 0x00001000 /* true create, file not found */ /* + * These types implement the interface between a consumer and FS for handling + * SACL-based File Access Auditing. A consumer zeroes out the appropriate + * t_audit_sacl_t in T2A(curthread), then sets tad_sacl_ctrl to one of + * sacl_audit_ctrl_t. The FS, when auditing of SACLs is enabled, checks to see + * if tad_sacl_ctrl is not NONE. If so, it collects information from the + * object's SACL (such as NFSv4 Audit and Alarm type ACEs), and stores + * representative Success and Failure masks in the t_audit_sacl_t structure. + * The consumer then compares the requested access to the appropriate mask in + * order to determine whether an audit record should be generated. + */ + typedef struct t_audit_sacl { + uint32_t tas_smask; + uint32_t tas_fmask; + } t_audit_sacl_t; + + typedef enum sacl_audit_ctrl { + SACL_AUDIT_NONE = 0, + SACL_AUDIT_ON, + SACL_AUDIT_ALL, + SACL_AUDIT_NO_SRC + } sacl_audit_ctrl_t; + + /* * The structure t_audit_data hangs off of the thread structure. It contains * all of the audit information necessary to manage the audit record generation * for each thread. * */
*** 206,215 **** --- 231,245 ---- au_defer_info_t *tad_defer_head; /* queue of records to defer */ /* until syscall end: */ au_defer_info_t *tad_defer_tail; /* tail of defer queue */ priv_set_t tad_sprivs; /* saved (success) used privs */ priv_set_t tad_fprivs; /* saved (failed) used privs */ + sacl_audit_ctrl_t tad_sacl_ctrl; + sacl_audit_ctrl_t tad_sacl_backup; + t_audit_sacl_t tad_sacl_mask; + t_audit_sacl_t tad_sacl_mask_src; + t_audit_sacl_t tad_sacl_mask_dest; }; typedef struct t_audit_data t_audit_data_t; /* * The f_audit_data structure hangs off of the file structure. It contains