Open expani opened 4 months ago
[Triage] Thank you for filing this issue with detailed steps to reproduce. Marking the issue as triaged.
I believe the full request body being added is because of this line which gets executed when read_metadata_only
is set to true.
I'm not familiar with the history of this file so I will see if I can dig into why the full request body is being logged here.
Edit: I believe the body is getting audit logged here for this request. The logic in place is to audit log the whole body is write_metadata_only
is false
and the request is on the security index.
Edit2: This was already identified in the issue itself. I support the fix proposed:
A simple fix is to also add log_request_body == true at the same place AND ensure that it's not the first time when document is being inserted.
I created a quick POC pr on my fork here: https://github.com/cwperks/security/pull/31
Currently, there is a test for a non-security index that is configured with write_watched_indices
, but another similar test should be added utilizing security APIs to create and modify security resources and ensure that the diffs are audit logged or the entire body is audit logged when a resource is first created.
What is the bug?
When we enable Compliance logging with diffs (
write_log_diffs
) and disable writing metadata (write_metadata_only
) , request body is always logged even whenlog_request_body
is disabled and it's not the first document insert.How can one reproduce the bug?
Launch Opensearch 2.13.0 cluster locally and enable security using the default configurations.
Additionally, set
plugins.security.audit.type
inopensearch.yml
tolog4j
to see the audit logs generated easily.Update the audit logging config as follows :
Insert a document in an index
Audit log generated will look like
Since, this is the first time inserting the doc,
audit_compliance_diff_is_noop
istrue
and it makes sense foraudit_request_body
to be logged.Audit log generated looks like
Note both
audit_request_body
andaudit_compliance_diff_content
are getting logged even iflog_request_body
is disabled and we are updating the same document.What is the expected behavior?
audit_request_body
should not be always logged for compliance audit logs whenlog_request_body
is disabled and it's not the first document insert.What is your host/environment?
Do you have any additional context? We check that
write_metadata_only == false
andwrite_log_diffs == true
here before loggingaudit_compliance_diff_content
Whereas we only check
write_metadata_only == false
before loggingaudit_request_body
hereA simple fix is to also add
log_request_body == true
at the same place AND ensure that it's not the first time when document is being inserted.