Console Login

Schrems II & Data Sovereignty: The Technical Case for Norwegian Hosting in 2020

Data Sovereignty after Schrems II: A Technical Guide to Hosting in Norway

July 16, 2020, changed everything. When the CJEU (Court of Justice of the European Union) struck down the Privacy Shield framework in the Schrems II ruling, they didn't just create a legal headache; they created a technical emergency for every CTO in Europe. If you are relying on US-owned hyperscalers, even in their "European" availability zones, your data compliance is now theoretically compromised by FISA 702 and the CLOUD Act.

I have spent the last three months migrating workloads back to sovereign infrastructure. The era of blindly trusting a flag icon in a cloud console is over. For businesses targeting the Nordics, the solution isn't just legal paperwork—it's engineering. It requires a return to physical data residency and strict encryption implementations.

Here is how we architect for compliance in late 2020, focusing on the technical realities of hosting in Norway.

The "Region" Fallacy vs. Physical Sovereignty

Many developers assume that selecting eu-central-1 or similar regions satisfies GDPR. It doesn't. If the provider is a US Electronic Communication Service provider, they are subject to US subpoenas for data held overseas. Datatilsynet (The Norwegian Data Protection Authority) has been clear: the transfer mechanism matters.

This is where local infrastructure wins. By utilizing a provider like CoolVDS, where the corporate entity and the physical NVMe storage arrays are legally and geographically bound to Norway, you remove the extraterritorial jurisdiction risk. We are not just talking about latency—though 3ms to NIX (Norwegian Internet Exchange) is a nice bonus—we are talking about legal shielding.

Technical Implementation: Defense in Depth

Moving to a Norwegian VPS is step one. Step two is hardening the environment so that even if a disk is seized, the data remains opaque. We rely on three layers: Full Disk Encryption (FDE), Database-level Encryption, and Transport Security.

1. LUKS Encryption for Sensitive Volumes

On a virtualized instance, you should never trust the underlying storage layer blindly. We create encrypted containers for sensitive customer data (PII). In 2020, dm-crypt with LUKS2 is the standard.

Here is how we provision an encrypted volume on a CoolVDS instance for mounting /var/lib/mysql or sensitive file stores:

# 1. Initialize the partition with LUKS2
cryptsetup luksFormat --type luks2 /dev/vdb1

# 2. Open the encrypted volume (maps to /dev/mapper/secure_data)
cryptsetup luksOpen /dev/vdb1 secure_data

# 3. Create filesystem
mkfs.ext4 /dev/mapper/secure_data

# 4. Mount it
mount /dev/mapper/secure_data /mnt/secure_store

# Verify status
cryptsetup status secure_data

Pro Tip: Do not store the LUKS passphrase on the boot partition. Use a remote key server or enter it manually upon reboot if your threat model requires maximum secrecy. Automated unlocking via TPM is an option, but often complex in virtualized environments.

2. Database Encryption at Rest

Even with disk encryption, database backups can leak data. We use MariaDB's Data-at-Rest Encryption. As of MariaDB 10.4 (stable in 2020), this is performant enough for production even on standard vCPUs.

Add this to your my.cnf or mariadb.conf.d/encryption.cnf:

[mysqld]
# Encryption Config
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/encryption/keyfile.enc
file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key
file_key_management_encryption_algorithm = AES_CTR

# Force encryption
innodb_encrypt_tables = FORCE
innodb_encrypt_log = ON
innodb_encryption_threads = 4

This ensures that .ibd files are useless if copied off the server. Note the innodb_encryption_threads directive; setting this to match your CoolVDS core count prevents I/O bottlenecks during heavy write operations.

3. Modern Transport Layer Security (TLS 1.3)

TLS 1.3 was finalized in RFC 8446 two years ago. There is no excuse for running TLS 1.1 in 2020. TLS 1.3 reduces the handshake latency (1-RTT), which pairs perfectly with the low latency of local Norwegian routing.

Your Nginx configuration should look like this to pass strict security audits:

server {
    listen 443 ssl http2;
    server_name secure.example.no;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
    ssl_prefer_server_ciphers off;
    
    # HSTS (Strict-Transport-Security)
    add_header Strict-Transport-Security "max-age=63072000" always;
}

The Private Networking Factor

One often overlooked aspect of GDPR compliance is internal data flow. If you have a web worker communicating with a database, that traffic must be secured. CoolVDS offers private networking options, but we prefer an application-layer mesh for total control.

In 2020, WireGuard has finally hit the mainstream, having been merged into the Linux 5.6 kernel earlier this year. It is faster and leaner than OpenVPN/IPsec.

Setup for a secure link between App and DB servers:

# /etc/wireguard/wg0.conf on DB Server
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <DB_PRIVATE_KEY>

[Peer]
PublicKey = <APP_PUBLIC_KEY>
AllowedIPs = 10.10.0.2/32

This creates a tunnel where unencrypted MySQL traffic can flow safely, invisible to the public network interface.

Why Infrastructure Choice is a Compliance Choice

We can configure firewalls and encrypt disks all day, but the foundation matters. The "Cloud Act" allows US authorities to request data from US companies regardless of where that data is stored. By choosing a provider rooted in the Nordics, you add a significant layer of legal friction against such requests.

CoolVDS aligns with this strict sovereignty model. Their infrastructure isn't just a resell of a larger hyperscaler; it is owned hardware in Oslo data centers. This distinction is vital for risk assessments under Schrems II. Furthermore, the performance benefits of local NVMe storage mean that encryption overhead (usually 2-5% CPU) is negligible compared to the I/O gains.

Check Your Latency

Compliance shouldn't cost performance. Test the connectivity from your office or your target market's location.

mtr -rwc 10 185.xxx.xxx.xxx # Replace with your CoolVDS IP

If you are seeing <10ms from within Norway, you are in the sweet spot for high-frequency trading or real-time application data processing.

Conclusion

The legal landscape in late 2020 is volatile. The technical response must be rigid. Encrypt everything. Keep keys separate from data. And most importantly, know exactly where your data physically lives and who owns the metal it spins on.

Don't gamble your compliance on a "standard clause." Build your fortress on sovereign soil.

Ready to secure your stack? Deploy a GDPR-ready NVMe instance on CoolVDS today and keep your data under Norwegian law.