Tango.Audit.Sanitizer (tango v0.1.2)

Copy Markdown View Source

Provides data sanitization for audit logging to prevent information disclosure.

This module ensures that sensitive data is properly masked or removed from audit logs while maintaining sufficient information for security investigation.

Summary

Functions

Creates a security hash of sensitive data for correlation while protecting actual values.

Sanitizes connection data for audit logging.

Sanitizes OAuth error information for audit logging.

Sanitizes provider configuration for audit logging.

Sanitizes session data for audit logging.

Functions

hash_sensitive_data(data)

Creates a security hash of sensitive data for correlation while protecting actual values.

Examples

iex> Tango.Audit.Sanitizer.hash_sensitive_data("sensitive-value")
"SHA256:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"

sanitize_connection(connection)

Sanitizes connection data for audit logging.

Examples

iex> connection = %{access_token: "token123", tenant_id: "tenant-456"}
iex> Tango.Audit.Sanitizer.sanitize_connection(connection)
%{access_token: "[REDACTED]", tenant_id: "tenant***"}

sanitize_error(error_info)

Sanitizes OAuth error information for audit logging.

Examples

iex> error_info = %{reason: "invalid_client", details: %{client_secret: "secret"}}
iex> Tango.Audit.Sanitizer.sanitize_error(error_info)
%{reason: "invalid_client", details: %{client_secret: "[REDACTED]"}}

sanitize_provider(provider)

Sanitizes provider configuration for audit logging.

Examples

iex> provider = %{client_secret: "secret123", name: "GitHub"}
iex> Tango.Audit.Sanitizer.sanitize_provider(provider)
%{client_secret: "[REDACTED]", name: "GitHub"}

sanitize_session(session)

Sanitizes session data for audit logging.

Removes or masks sensitive fields while preserving important metadata.

Examples

iex> session = %{tenant_id: "123", state: "abc", code_verifier: "secret"}
iex> Tango.Audit.Sanitizer.sanitize_session(session)
%{tenant_id: "123", state: "abc***", code_verifier: "[REDACTED]"}