Kết nối tới Database Private trong AWS qua Bastion Host (DocumentDB, Redis, RDS, Aurora) Chuyên mục Devops 2025-07-09 3 Lượt xem 3 Lượt thích 0 Bình luận
Trong môi trường production/staging, các Database như Amazon DocumentDB, Redis (ElastiCache), RDS PostgreSQL hoặc Aurora thường được triển khai trong private subnet để đảm bảo an toàn tuyệt đối. Vì vậy, việc test kết nối tới các DB này cần thông qua một Bastion Host trung gian nằm trong public subnet.
Bài viết này hướng dẫn bạn cách kết nối an toàn và chuẩn xác đến các DB private thông qua Bastion Host, bao gồm:
-
Cấu hình Security Group
-
Cài công cụ CLI trên Ubuntu 22.04
-
Kết nối với: DocumentDB, Redis, RDS PostgreSQL, Aurora PostgreSQL
🧱 1. Kiến trúc tổng quan
[ Laptop/PC ]
|
| SSH (22)
v
[ Bastion Host - EC2 Public Subnet ]
|
| Internal VPC
v
[ Private Databases: DocumentDB / Redis / RDS / Aurora ]
🔐 2. Cấu hình Security Group
✅ Bastion Host SG
-
Inbound:
-
SSH (22) từ IP máy bạn (your-public-ip/32)
-
-
Outbound:
-
All traffic (hoặc port cụ thể như 27017, 6379, 5432)
-
✅ Database SG (DocumentDB, Redis, RDS, Aurora)
-
Inbound:
-
Cho phép cổng tương ứng từ SG của Bastion Host
-
27017 cho DocumentDB
-
6379 cho Redis
-
5432 cho RDS / Aurora PostgreSQL
-
-
-
Outbound:
-
All traffic (default)
-
💻 3. Cài đặt công cụ CLI trên EC2 (Ubuntu 22.04)
🔷 a. Cài mongosh (DocumentDB)
sudo apt update
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
wget https://downloads.mongodb.com/compass/mongodb-mongosh_2.5.5_amd64.deb
sudo dpkg -i mongodb-mongosh_2.5.5_amd64.deb
Tải CA certificate:
wget -O global-bundle.pem https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
🔷 b. Cài redis-cli (Redis/ElastiCache)
sudo apt install redis-tools -y
🔷 c. Cài psql (RDS PostgreSQL / Aurora)
sudo apt install postgresql-client -y
🔌 4. Kết nối đến các Database
✅ A. DocumentDB (MongoDB)
mongosh 'mongodb://your_user:your_password@your-docdb-endpoint:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
Nếu mật khẩu có ký tự đặc biệt (&, @, $), hãy URL-encode và dùng ' để bọc URI.
✅ B. Redis (ElastiCache - TLS)
redis-cli --tls -h your-redis-endpoint.amazonaws.com -p 6379
Nếu Redis có mật khẩu:
redis-cli --tls -h your-endpoint -p 6379 -a your_password
✅ C. RDS PostgreSQL (hoặc Aurora PostgreSQL)
psql -h your-db-endpoint.rds.amazonaws.com -U your_user -d your_db -p 5432
Hệ thống sẽ hỏi mật khẩu sau đó. Nếu muốn nhập mật khẩu sẵn:
PGPASSWORD=your_password psql -h your-db-endpoint.rds.amazonaws.com -U your_user -d your_db -p 5432
💡 Aurora PostgreSQL sử dụng cú pháp kết nối giống hệt RDS PostgreSQL.
🧪 5. Một số lệnh test phổ biến
MongoDB (DocumentDB):
db.runCommand({ connectionStatus: 1 })
Redis:
ping
info
keys *
PostgreSQL (RDS/Aurora):
\conninfo
SELECT now();
\dt -- xem các table
🔁 Tùy chọn nâng cao
-
🔀 Port forwarding từ local qua Bastion:
ssh -i your-key.pem -N -L 27017:your-docdb:27017 ubuntu@your-bastion-ip
Sau đó kết nối DocumentDB từ local máy bạn bằng mongosh.
-
🔒 Dùng AWS Session Manager để thay thế SSH (bảo mật hơn)
-
📜 Viết script tự động kiểm tra kết nối tất cả DB
✅ Kết luận
Kết nối các Database private qua Bastion host là cách làm chuẩn trong môi trường bảo mật cao. Nắm vững kỹ thuật này giúp bạn:
-
Debug nhanh các vấn đề mạng hoặc cấu hình
-
Kiểm tra truy cập mà không cần tạm mở public access
-
Chủ động hơn khi làm việc với team DevOps, DBA
Bình luận (0)