Back to Posts
Jan 12, 2025
Hướng dẫn quản lý biến môi trường với AWS Secrets Manager cho App Runner
Khi triển khai các dự án Backend lên App Runner, thay vì nhập trực tiếp các giá trị nhạy cảm vào phần cấu hình Environment Variables (dễ bị lộ khi ai đó có quyền xem console), chúng ta sẽ sử dụng AWS Secrets Manager làm “két sắt” lưu trữ.
1. Tạo Secret trong Secrets Manager
Bước đầu tiên là đưa các thông tin nhạy cảm vào “két sắt” của AWS.
- Truy cập Dashboard của AWS Secrets Manager.
- Nhấn “Store a new secret”.
- Chọn loại secret là “Other type of secret”.
- Nhập các cặp Key/Value của bạn (Ví dụ: Key là
DB_PASSWORD, Value làmật-khẩu-của-bạn). - Chọn khóa mã hóa (Encryption key): Bạn có thể dùng khóa mặc định của AWS hoặc tạo khóa KMS riêng.
- Hoàn tất các bước đặt tên và cấu hình xoay vòng (rotation) nếu cần.
- Sau khi tạo xong, hãy copy mã Secret ARN ở trang chi tiết. Bạn sẽ cần nó cho bước sau.
2. Phân quyền cho App Runner (IAM Role)
Đây là bước quan trọng nhất. Mặc định, App Runner sẽ không có quyền “mở két” để lấy thông tin. Bạn cần cấp quyền thông qua một IAM Role.
- Truy cập dịch vụ IAM và tìm đến mục Roles.
- Chọn Role mà bạn đã gán cho App Runner (Instance Role). Nếu chưa có, hãy tạo mới một Role cho dịch vụ App Runner.
- Nhấn “Add permission” và chọn “Create inline policy”.
- Chuyển sang chế độ JSON và dán đoạn mã sau vào:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"kms:Decrypt*"
],
"Resource": [
"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret-name>",
"arn:aws:kms:<region>:<aws_account_id>:key/<key-id>"
]
}
]
}
Giải mã đoạn Policy này:
secretsmanager:GetSecretValue: Cho phép App Runner đọc giá trị bên trong Secret.kms:Decrypt*: Cực kỳ quan trọng! Vì Secret đã được mã hóa, bạn cần quyền này để “giải mã” dữ liệu trước khi sử dụng.- Resource: Hãy thay thế bằng ARN của Secret và ARN của khóa KMS bạn đã dùng ở Bước 1.
- Lưu Policy và đặt tên (ví dụ:
AppRunnerSecretsPolicy).
3. Cấu hình trên App Runner
Cuối cùng, hãy quay lại dịch vụ App Runner để áp dụng:
- Đi tới cấu hình dự án của bạn trên App Runner.
- Trong mục Configuration > Environment variables, thay vì chọn “Plaintext”, hãy chọn “Reference a secret”.
- Dán ARN mà chúng ta đã học cách định dạng ở bài trước (có kèm dấu
:và tên Key cụ thể). - Đảm bảo rằng bạn đã chọn đúng IAM Role mà mình vừa thêm Policy ở Bước 2.
- Nhấn Save and Deploy để App Runner khởi động lại và nhận giá trị mới.
Tổng kết
Bằng cách này, biến môi trường của bạn sẽ được bảo mật đa lớp:
- Lớp 1: Dữ liệu được mã hóa trong Secrets Manager.
- Lớp 2: Chỉ những thực thể (Role) có quyền cụ thể mới được phép lấy và giải mã dữ liệu.
- Lớp 3: Không có bất kỳ mật khẩu nào xuất hiện dưới dạng chữ thuần (Plaintext) trong file cấu hình hay mã nguồn.
Chúc các bạn triển khai hệ thống an toàn và chuyên nghiệp hơn!
Related
Jan 10, 2026