0Pricing
MongoDB Academy · 강의

저장 데이터 암호화 및 전송 중 TLS

학습자는 클라이언트 연결에 TLS를 활성화하고, 저장 데이터에 대한 WiredTiger 암호화와 Atlas에 기본 제공되는 암호화된 저장소를 살펴봅니다.

저장 데이터 암호화 및 전송 중 TLS은(는) CoddyKit의 무료 MongoDB Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 MongoDB Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. MongoDB Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Two Layers of Database Encryption

Securing MongoDB data requires protection at two distinct points: encryption in transit (data moving between clients and MongoDB, or between replica set members) and encryption at rest (data stored on disk). Authentication controls who can connect, but even an authenticated user operating over an unencrypted connection exposes credentials and queries to network sniffing. Together, TLS and encryption at rest provide defence-in-depth.

TLS: Encrypting Data in Transit

TLS (Transport Layer Security) encrypts the network channel between MongoDB clients, drivers, and mongod/mongos instances. Enabling TLS prevents eavesdropping and man-in-the-middle attacks on the wire. MongoDB 4.2+ supports only TLS 1.1 and higher, with TLS 1.3 available on modern platforms. Always use TLS in any environment where network traffic could be intercepted — which includes cloud VPCs despite VPC-level isolation.

Configuring TLS in mongod.conf

TLS is configured in the net.tls section of mongod.conf. Set mode: requireTLS to reject all unencrypted connections. You must provide a PEM file containing the server's certificate and private key. Optionally, provide a CAFile to require clients to present certificates signed by your CA (mutual TLS).

# mongod.conf — require TLS for all connections
net:
  port: 27017
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb-server.pem
    CAFile: /etc/ssl/ca.pem          # optional: require client certs
    disabledProtocols: TLS1_0,TLS1_1 # enforce TLS 1.2+

Connecting With TLS in the Node.js Driver

The official MongoDB Node.js driver enables TLS when the connection URI uses mongodb+srv:// (Atlas always uses TLS) or when the tls: true option is set. In self-hosted deployments, you may need to provide the CA file path so the driver can verify the server certificate. Use environment variables for certificate paths so they are not hardcoded in source code.

const { MongoClient } = require('mongodb')

// Self-hosted MongoDB with TLS
const client = new MongoClient('mongodb://myUser:myPass@dbhost:27017', {
  tls: true,
  tlsCAFile: process.env.MONGO_TLS_CA_FILE,
  // For mutual TLS (client certificate):
  // tlsCertificateKeyFile: process.env.MONGO_TLS_CERT_FILE
})

await client.connect()

// Atlas — TLS is enabled by default via SRV record
const atlasClient = new MongoClient(process.env.ATLAS_CONNECTION_STRING)

TLS Modes: disabled, allowTLS, preferTLS, requireTLS

MongoDB offers four TLS modes during migration phases. disabled accepts only plain connections (development only). allowTLS accepts both TLS and plain (for backward compatibility). preferTLS defaults to TLS but accepts unencrypted connections. requireTLS rejects all non-TLS connections and is the only mode acceptable for production deployments.

# Migration path: gradually enforce TLS
# Step 1: allowTLS (accept both)
# Step 2: preferTLS (default TLS, allow plain)
# Step 3: requireTLS (reject plain) <- production target
net:
  tls:
    mode: requireTLS

Encryption at Rest: WiredTiger

MongoDB's default storage engine, WiredTiger, supports Encrypted Storage Engine (available in MongoDB Enterprise). It encrypts data files on disk using AES-256-CBC or AES-256-GCM. Even if an attacker gains access to the physical disk or a disk snapshot, they cannot read the data without the encryption key. This addresses compliance requirements such as GDPR, HIPAA, and PCI-DSS that mandate protection of data at rest.

# mongod.conf — WiredTiger encryption at rest (Enterprise only)
security:
  enableEncryption: true
  encryptionKeyFile: /etc/mongodb/encryption-key  # AES-256 key

# Or use KMIP key management:
security:
  enableEncryption: true
  kmip:
    serverName: kmip.example.com
    port: 5696
    clientCertificateFile: /etc/ssl/kmip-client.pem

Atlas Encryption at Rest

MongoDB Atlas provides encryption at rest using cloud provider key management: AWS KMS, Azure Key Vault, or Google Cloud KMS. Customers can bring their own Customer Master Key (CMK), giving them full control — if you delete your CMK, Atlas cannot decrypt your data. Atlas's encryption at rest is enabled per project in the Security settings and applies to all clusters in that project.

Key Management Best Practices

Encryption is only as strong as the security of its keys. Follow these key management best practices: store encryption keys in a dedicated Key Management Service (KMS) rather than on the same server as the database; rotate encryption keys regularly (MongoDB supports key rotation without re-encrypting all data); use separate keys for development, staging, and production; and enable KMS audit logs to track all key access events.

TLS Certificate Rotation Without Downtime

TLS certificates expire, typically after 1–2 years. MongoDB supports online certificate rotation: you can deploy a new PEM file and send the rotateCertificates command to mongod, which picks up the new certificate for all new connections without restarting the process. Plan certificate renewal at least 30 days before expiry to avoid last-minute scrambles and production outages.

// Trigger online certificate rotation (mongosh)
db.adminCommand({ rotateCertificates: 1 })
// MongoDB reloads the certificate file specified in mongod.conf
// without dropping existing connections

Network-Level Security: IP Allowlisting and VPC

TLS and encryption at rest protect data on the wire and on disk, but network-level controls add another layer. In MongoDB Atlas, use IP Access List entries to whitelist only your application servers and developer IPs. For production, use VPC Peering or AWS PrivateLink so traffic between your application and Atlas never traverses the public internet, eliminating a large class of network-based attacks even before TLS is considered.

Auditing Encrypted Connections

Once TLS is enabled, verify that all connections are encrypted by checking the connPoolStats or the MongoDB connection log. MongoDB logs TLS handshake failures so you can identify any legacy client still attempting plaintext connections. In Atlas, the Monitoring tab shows active connections and their TLS status, making it easy to confirm full enforcement before removing the allowTLS mode.

// Check current connections (mongosh)
db.adminCommand({ currentOp: true }).inprog
  .filter(op => op.client)
  .map(op => ({ client: op.client, tls: op.clientMetadata }))

// Server status — TLS stats
db.serverStatus().network.serviceExecutorTaskStats

Quick Check

Test your understanding of MongoDB & NoSQL Databases concepts from this lesson.

Lesson Recap

In this lesson you learned: requireTLS in mongod.conf enforces encrypted client connections and should be the only mode used in production, WiredTiger Encrypted Storage Engine protects data files on disk (Enterprise) while Atlas provides CMK-based cloud encryption, and network-level controls like IP allowlists and VPC peering add layers of protection beyond TLS. Next up we cover Client-Side Field Level Encryption.

자주 묻는 질문

“저장 데이터 암호화 및 전송 중 TLS” 강의는 무료인가요?

네 — “저장 데이터 암호화 및 전송 중 TLS” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 MongoDB Academy 강의 전체를 잠금 해제할 수 있습니다. MongoDB Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“저장 데이터 암호화 및 전송 중 TLS”에서 뭘 배우나요?

학습자는 클라이언트 연결에 TLS를 활성화하고, 저장 데이터에 대한 WiredTiger 암호화와 Atlas에 기본 제공되는 암호화된 저장소를 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 MongoDB Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

MongoDB Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 MongoDB Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“저장 데이터 암호화 및 전송 중 TLS” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 MongoDB Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 MongoDB Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 인증 메커니즘: SCRAM 및 x.509
  2. 역할 기반 액세스 제어: 기본 제공 역할 및 사용자 지정 역할
  3. 저장 데이터 암호화 및 전송 중 TLS
  4. 클라이언트 측 필드 수준 암호화
← MongoDB Academy(으)로 돌아가기