All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning. The format is based on Keep a Changelog.
- Erroneous modification log for non-updated key properties
- Error during non-modifying queries on database level
- Specify charset UTF-8 for requests to SAP Audit Log Service
- Support for @sap/cds^8.2
- Reduce clutter in error raised for outbound requests
- Allow to specify undefined tenant in order to log to provider account in multi-tenant scenarios
- Use kind
audit-log-to-restv2
in profilehybrid
- Automatically promote entities that are associated with data subjects
- Support for @sap/cds^7.5
- Automatic personal data modification logging for data subject details with renamed keys
- Data subject resolution in circular models
- Automatic personal data modification logging for deep data structures with renamings
- Falsy early exit during bootstrapping in case a service does not contain personal data
- Common log entry fields
uuid
,tenant
,user
andtime
can be provided manually
- Support for Premium plan of SAP Audit Log Service
- Support for XSUAA credential type
x509
- Support for generic outbox
- Always use outbox (as configured in project)
- Avoid dangling
SELECT
s to resolve data subject IDs, which resulted in "Transaction already closed" errors
- If the request has no tenant (e.g., Unauthorized), the audit log shall be sent to the provider account
- Defaulting of
@PersonalData.DataSubjectRole
to entity name - Overriding service configuration
- Default value for
cds.requires['audit-log'].handle
changed to['READ', 'WRITE']
, i.e., accessing sensitive data is now logged by default.
- Export class
AuditLogService
for extending in custom implementations as follows:const { AuditLogService } = require('@cap-js/audit-logging') class MyAuditLogService extends AuditLogService { async init() { [...] // call AuditLogService's init await super.init() } } module.exports = MyAuditLogService
- New API:
await audit.log('<event>', <data>)
for asynchronous logs (cf.emit
)await audit.logSync('<event>', <data>)
for synchronous logs (cf.send
)
- New REST API-based schema with auto-filled
LogEntry
aspect - New events
SensitiveDataRead
,PersonalDataModified
,ConfigurationModified
, andSecurityEvent
- Full support for OAuth2 plan of SAP Audit Log Service
- Whether reading sensitive data and modifying personal data is logged is determined by
cds.requires['audit-log'].handle: [...]
. Possible values in the array areREAD
and/ orWRITE
, withWRITE
as the sole default entry. Hence, accessing sensitive data is not logged by default. - Integration with SAP Audit Log Service via REST API instead of client library (
@sap/audit-logging
)
- Various glitches in log calculation
- Old events
dataAccessLog
,dataModificationLog
,configChangeLog
, andsecurityLog
@AuditLog.Operation
annotations are ignored. Having the plugin as dependency signals the intent to audit log.cds.features.audit_personal_data: true
is no longer necessary. Instead, simply add the plugin as a dependency.