Skip to content

BSI-Bund/securitydatabaseconfigurations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ Secure Database Configurations


πŸ“˜ Contents

This repository provides secure configurations for multiple database systems.
It also includes scripts to initialize the databases and notes on hardening tools.
Database deployments are provided for:

  • 🐧 Linux with Docker Compose β†’ containerized, automated setups
  • πŸͺŸ Windows without Docker β†’ local, manual installs (e.g., development environments)

🎯 Audience

This repository is aimed at:

  • IT administrators
  • Database administrators
  • Developers focused on secure database operations

πŸ“˜ Security objectives

Goal: reproducible, secure database setups covering these aspects:

🌐 Encrypted network configuration (TLS/SSL)

  • Enforce encrypted communication (TLS/SSL)
  • Restrict access to trusted networks or hosts

🧾 Logging

  • Enable meaningful logs to trace activity
  • Log failed or suspicious access attempts

πŸ’Ύ Storage configuration

  • Define secure locations for database files
  • Use restrictive permissions on data and log directories

♻️ Backups

  • Automated, regular, encrypted backups
  • Verify restorability (restore tests)

πŸ‘€ Secure authentication & privileges

  • Use role-based access control (RBAC)
  • Minimal privileges following the least-privilege principle

The following must be done continuously in operations:

🧱 Updates & maintenance

  • Apply security updates regularly
  • Monitor database logs for security incidents

πŸ“ Repository structure

DBMS folders generally follow this structure:

DatabaseSystem/                             # DBMS name
└── Version_X/                              # Version number
    β”œβ”€β”€ Linux/                              # Docker Compose setup (container, .env, volumes, init scripts)
    β”‚   β”œβ”€β”€ compose/                        # Docker Compose configuration
    |   |   β”œβ”€β”€ init_db/                    # Collection of scripts to initialize the DBMS
    |   |   β”œβ”€β”€ .env.default                # Template for environment variables (e.g., username, port, password)
    |   |   └── docker-compose.yml          # Docker Compose file
    β”‚   β”œβ”€β”€ config_description-linux.md     # Description of security-relevant settings and their purpose
    |   └── *configuration file*            # DBMS-specific configuration file
    └── Windows/                            # Classic configuration for local Windows installation
        β”œβ”€β”€ init_scripts/                   # Scripts for database initialization
        β”œβ”€β”€ config_description-windows.md   # Description of security-relevant settings and their purpose
        └── *configuration file*            # DBMS-specific configuration file

πŸ› οΈ Supported databases

βœ… MariaDB
βœ… MongoDB
βœ… MySQL
βœ… Weaviate

Coming soon:

➑️ PostgreSQL
➑️ Redis


βš™οΈ Installation & usage

  1. Choose a configuration file from configs/.
  2. Adjust it to your environment and security requirements.
  3. Apply the configuration to your database.
  4. Test connectivity, authentication, and backups.

πŸ”’ TLS configuration

This guide shows how to create your own Certificate Authority (CA) with OpenSSL and issue server and client certificates for applications such as MongoDB.


βš™οΈ Prerequisites

  • Installed OpenSSL for Windows
  • Write access to the certificate directory (e.g., C:\data)
  • Path to openssl.cnf (e.g., C:\Users\<User>\openssl-3.5.3\apps\openssl.cnf)

πŸ—οΈ 1. Create CA

# Generate CA key
openssl genrsa -out test-ca.key 4096

# Create CA certificate
openssl req -x509 -new -nodes -key test-ca.key -sha256 -days 365 -out test-ca.pem -config "C:\Users\<User>\openssl-3.5.3\apps\openssl.cnf"

Result:

  • test-ca.key β†’ CA private key
  • test-ca.pem β†’ self-signed CA certificate

πŸ–₯️ 2. Create and sign server certificate

# Generate server key
openssl genrsa -out mongo-server1.key 4096

# Create CSR
openssl req -new -key mongo-server1.key -out mongo-server1.csr -config "C:\Users\<User>\openssl-3.5.3\apps\openssl.cnf"

# Sign CSR with CA
openssl x509 -req -in mongo-server1.csr -CA test-ca.pem -CAkey test-ca.key -CAcreateserial -out mongo-server1.crt -days 365 -sha256

# Combine key + cert for MongoDB
copy /b mongo-server1.key+mongo-server1.crt mongo-server1.pem

Result:

  • mongo-server1.pem β†’ certificate MongoDB uses (includes key + CRT)

πŸ‘€ 3. Create and sign client certificate

# Generate client key and CSR
openssl genrsa -out mongo-client.key 4096
openssl req -new -key mongo-client.key -out mongo-client.csr -config "C:\Users\<User>\openssl-3.5.3\apps\openssl.cnf"

# Sign CSR with CA
openssl x509 -req -in mongo-client.csr -CA C:\data\test-ca.pem -CAkey C:\data\test-ca.key -CAcreateserial -out mongo-client.crt -days 365 -sha256

# Combine key + cert for the client
copy /b mongo-client.key+mongo-client.crt mongo-client.pem

Result:

  • mongo-client.pem β†’ certificate the client uses (includes key + CRT)

⚑ 4. MongoDB TLS configuration

🧩 mongod.conf example

net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: requireTLS
    certificateKeyFile: C:\data\mongo-server1.pem
    CAFile: C:\data\test-ca.pem

πŸ“‹ Summary

  • CA created (test-ca.pem, test-ca.key)
  • Server certificate created and signed (mongo-server1.pem)
  • Client certificate created and signed (mongo-client.pem)
  • MongoDB TLS enabled via mongod.conf

⚠️ Disclaimer

These files serve as general security guides.
Before using them in production, review them carefully and adapt them to your internal requirements.


Β© 2025 – Secure database configurations

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors