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.
- Properly encode request body parameters using in audit-log-to-restv2
- Resolved server crash when
@PersonalDataannotations are applied to composition targets whose DataSubject is only reachable via the parent entity's sibling association
- Updated the audit log service plan detection logic to support the new URL format
- The absence of
req.targetdoes not lead to an error
- Adjusted auto-detection of kind
audit-log-to-alsto now check for a VCAP service name matching "auditlog-ng" - Adjusted how the handlers for emitting audit logs are registered to support feature toggle and extensibility scenarios.
- Improved debug logging in cases where emitting audit log fails
- Data subject lookup when data subject is not exposed in the same service
audit-log-to-alsng: Support for sending generic audit log events
audit-log-to-alsng: Correctly retrieveappIdfrom theVCAP_APPLICATIONenvironment variable
audit-log-to-alsng: EventDataPayload to Support Multi-Key Object and DataSubject IDs
- Beta support for next generation SAP Audit Log Service
- Use explicit kind
audit-log-to-alsngor alpha auto-detect kindaudit-log-to-als
- Use explicit kind
- Support for
@sap/cds^9
- Preperation for
@sap/cds^9
- 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-restv2in 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,userandtimecan 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
SELECTs 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.DataSubjectRoleto entity name - Overriding service configuration
- Default value for
cds.requires['audit-log'].handlechanged to['READ', 'WRITE'], i.e., accessing sensitive data is now logged by default.
- Export class
AuditLogServicefor 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
LogEntryaspect - 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 areREADand/ orWRITE, withWRITEas 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.Operationannotations are ignored. Having the plugin as dependency signals the intent to audit log.cds.features.audit_personal_data: trueis no longer necessary. Instead, simply add the plugin as a dependency.