Skip to content

Industry Compliance Configuration ​

DD provides three industry-compliance preset configurations covering medical, financial, and government sensitive-data protection requirements.

HIPAA Medical Compliance ​

Applicable Scenarios ​

  • Electronic Health Record (EHR) systems
  • Hospital information management systems
  • Telemedicine platforms
  • Medical data research platforms

Filtering Rules ​

HealthcareConfig() filters additionally on top of SecurityConfigForLevel(dd.SecurityLevelStandard) (the full pattern set; the former DefaultSecureConfig() is deprecated and is equivalent):

Data TypePatternExample
ICD-10 codesDiagnostic-code format in log messagesdiagnosis=J18.9
Medical Record Number (MRN)Medical record identifier in log messagesmrn=MRN123456
Health Insurance Claim Number (HICN)HICN identifier in log messageshicn=123456789A
Patient identifierPatient identifier in log messagespatient_id=PAT123456

Configuration Example ​

go
func NewHIPAACompliantLogger() (*dd.Logger, error) {
    cfg := dd.DefaultConfig()
    cfg.Level = dd.LevelInfo
    cfg.Format = dd.FormatJSON
    cfg.Security = dd.HealthcareConfig()
    cfg.Targets = []dd.OutputTarget{
        dd.FileOutput("logs/hipaa-audit.json"),
    }
    return dd.New(cfg)
}

Audit Requirements ​

go
// HIPAA requirements: security-event audit + integrity protection
integrityCfg, _ := dd.DefaultIntegrityConfigSafe()
signer, _ := dd.NewIntegritySigner(integrityCfg)

auditFile, _ := os.OpenFile("logs/hipaa-audit.json", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
auditLogger, _ := dd.NewAuditLogger(dd.AuditConfig{
    Enabled:          true,
    Output:           auditFile,
    JSONFormat:       true,
    IncludeTimestamp: true,
    BufferSize:       2000,
    MinimumSeverity:  dd.AuditSeverityInfo,
    IntegritySigner:  signer,
})

PCI-DSS Financial Compliance ​

Applicable Scenarios ​

  • Online payment systems
  • Credit-card processing services
  • Core banking systems
  • E-commerce transaction platforms

Filtering Rules ​

FinancialConfig() filters additionally on top of SecurityConfigForLevel(dd.SecurityLevelStandard) (the full pattern set):

Data TypePatternExample
SWIFT codeInternational bank code in log messagesswift=BOFAUS3N
IBAN accountInternational bank account number in log messagesiban=DE89370400440532013000
CVV/CVCCard verification code in log messagescvv=123
Bank routing numberABA routing number in log messagesrouting_number=021000021
Bank accountBank account number in log messagesaccount_number=12345678

Configuration Example ​

go
func NewPCICompliantLogger() (*dd.Logger, error) {
    cfg := dd.DefaultConfig()
    cfg.Level = dd.LevelInfo
    cfg.Format = dd.FormatJSON
    cfg.Security = dd.FinancialConfig()
    cfg.Targets = []dd.OutputTarget{
        dd.FileOutput("logs/pci-audit.json"),
    }
    return dd.New(cfg)
}

Log Retention Policy ​

go
fwCfg := dd.DefaultFileWriterConfig()
fwCfg.MaxSizeMB = 100    // 100MB per file
fwCfg.MaxAge = 365 * 24 * time.Hour // Keep 1 year (PCI-DSS requirement)
fwCfg.MaxBackups = 50    // Keep plenty of backups
fwCfg.Compress = true    // Compress old files to save space

fw, _ := dd.NewFileWriter("logs/pci-audit.json", fwCfg)

cfg := dd.DefaultConfig()
cfg.Level = dd.LevelInfo
cfg.Format = dd.FormatJSON
cfg.Security = dd.FinancialConfig()
cfg.Targets = []dd.OutputTarget{dd.CustomOutput(fw)}
logger, _ := dd.New(cfg)

Government Standard ​

Applicable Scenarios ​

  • Government information systems
  • Public service platforms
  • Social-security management systems
  • Tax processing systems

Filtering Rules ​

GovernmentConfig() filters additionally on top of SecurityConfigForLevel(dd.SecurityLevelStandard) (the full pattern set):

Data TypePatternExample
Passport numberPassport identifier in log messagespassport_number=123456789
Driver's license numberDriver's license identifier in log messagesdl_number=D123456789
US Federal Tax ID (EIN)EIN format in log messages12-3456789
UK National Insurance NumberNINo format in log messagesAB123456C
Canadian Social Insurance NumberSIN format in log messages123 456 789
Case numberCase identifier in log messagescase_number=CR202400123

Configuration Example ​

go
func NewGovernmentLogger() (*dd.Logger, error) {
    cfg := dd.DefaultConfig()
    cfg.Level = dd.LevelInfo
    cfg.Format = dd.FormatJSON
    cfg.Security = dd.GovernmentConfig()
    cfg.Targets = []dd.OutputTarget{
        dd.FileOutput("logs/gov-audit.json"),
    }
    return dd.New(cfg)
}

Compliance Comparison ​

DimensionHIPAAPCI-DSSGovernment
Extra filter patterns+4+5+6
Log retention6 years1 yearAs required
Integrity signingRecommendedRequiredRequired
Audit loggingRequiredRequiredRequired
Encrypted transmissionRequiredRequiredRecommended

Custom Compliance Configuration ​

When a preset does not fully meet your needs, you can compose custom configurations:

go
// Add custom patterns
filter, err := dd.NewCustomSensitiveDataFilter(
    // Custom medical-system-specific patterns
    `(?i)insurance_id\s*[:=]\s*\S+`,
    `(?i)prescription\s*[:=]\s*\S+`,
)
if err != nil {
    log.Fatal(err) // Regex safety validation failed
}

cfg := dd.DefaultConfig()
cfg.Format = dd.FormatJSON
cfg.Security = &dd.SecurityConfig{
    SensitiveFilter: filter,
}
cfg.Targets = []dd.OutputTarget{dd.FileOutput("logs/custom.json")}
logger, _ := dd.New(cfg)

Next Steps ​