You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Dmitry Konstantinov (Jira)" <ji...@apache.org> on 2025/01/15 11:16:00 UTC

[jira] [Updated] (CASSANDRA-20208) audit_logging_options parameters are not sanitized when loaded from a configuration file

     [ https://issues.apache.org/jira/browse/CASSANDRA-20208?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dmitry Konstantinov updated CASSANDRA-20208:
--------------------------------------------
    Description: 
based on the discussion in [https://lists.apache.org/thread/3whc30bqfcr1vgwv73zwlv74l2v3c0gt]

a configuration like this:
{code:java}
audit_logging_options:
  enabled: true
  logger:
    - class_name: FileAuditLogger
  included_categories: DCL, ERROR, AUTH {code}
is not sanitized when it is loaded on startup from cassandra.yaml file - spaces here are remaining here: " ERROR", " AUTH" after parsing. As a result the audit logs filtering works not in a way as a user may expect and it is hard to troubleshoot.


When we run nodetool enableauditlog the following logic is invoked: https://github.com/apache/cassandra/blob/cassandra-4.1.7/src/java/org/apache/cassandra/service/StorageService.java#L6459 which rebuild AuditLogOptions using builder API.AuditLogOption.build() has sanitisation logic which does the trimming: https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/audit/AuditLogOptions.java#L235 

org.apache.cassandra.config.Config#audit_logging_options is created a generic reflective code which does not use the builder, so there is no trimming during a startup.

It can be fixed by adding sanitisation during the startup parsing too to make the behaviour more consistent and less error prone. 

  was:
based on the discussion in [https://lists.apache.org/thread/3whc30bqfcr1vgwv73zwlv74l2v3c0gt]

a configuration like this:
{code:java}
audit_logging_options:
  enabled: true
  logger:
    - class_name: FileAuditLogger
  included_categories: DCL, ERROR, AUTH {code}
is not sanitized when it is loaded on startup from cassandra.yaml file - spaces here are remaining: " ERROR", " AUTH" after parsing. As a result the audit logs filtering works not in a way as a user may expect and it is hard to troubleshoot.


When we run nodetool enableauditlog the following logic is invoked: https://github.com/apache/cassandra/blob/cassandra-4.1.7/src/java/org/apache/cassandra/service/StorageService.java#L6459 which rebuild AuditLogOptions using builder API.AuditLogOption.build() has sanitisation logic which does the trimming: https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/audit/AuditLogOptions.java#L235 

org.apache.cassandra.config.Config#audit_logging_options is created a generic reflective code which does not use the builder, so there is no trimming during a startup.

It can be fixed by adding sanitisation during the startup parsing too to make the behaviour more consistent and less error prone. 


> audit_logging_options parameters are not sanitized when loaded from a configuration file
> ----------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-20208
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20208
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Observability/Logging
>            Reporter: Dmitry Konstantinov
>            Priority: Normal
>
> based on the discussion in [https://lists.apache.org/thread/3whc30bqfcr1vgwv73zwlv74l2v3c0gt]
> a configuration like this:
> {code:java}
> audit_logging_options:
>   enabled: true
>   logger:
>     - class_name: FileAuditLogger
>   included_categories: DCL, ERROR, AUTH {code}
> is not sanitized when it is loaded on startup from cassandra.yaml file - spaces here are remaining here: " ERROR", " AUTH" after parsing. As a result the audit logs filtering works not in a way as a user may expect and it is hard to troubleshoot.
> When we run nodetool enableauditlog the following logic is invoked: https://github.com/apache/cassandra/blob/cassandra-4.1.7/src/java/org/apache/cassandra/service/StorageService.java#L6459 which rebuild AuditLogOptions using builder API.AuditLogOption.build() has sanitisation logic which does the trimming: https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/audit/AuditLogOptions.java#L235 
> org.apache.cassandra.config.Config#audit_logging_options is created a generic reflective code which does not use the builder, so there is no trimming during a startup.
> It can be fixed by adding sanitisation during the startup parsing too to make the behaviour more consistent and less error prone. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org