Mở Tài Khoản AWS An Toàn và Cấu Hình Cảnh Báo Hóa Đơn

K
Kai··9 min read

Trong bài này chúng ta sẽ tạo tài khoản AWS và cấu hình vài thứ cơ bản trước khi đụng tới bất kỳ dịch vụ nào. Phần lớn lỗi bảo mật và sự cố hóa đơn của người mới đều bắt nguồn từ việc bỏ qua các bước ở đây, nên ta làm cho xong một lần rồi yên tâm về sau.

Mục tiêu

Sau bài này bạn sẽ có:

  1. Một tài khoản AWS đã bật MFA cho tài khoản root.
  2. Một IAM user riêng để dùng hằng ngày (không đụng tới root nữa).
  3. AWS CLI đã cài và cấu hình trên máy.
  4. Một AWS Budget gửi email cảnh báo khi chi phí vượt ngưỡng.

Bài này dùng các dịch vụ miễn phí (IAM, Budgets), nên không phát sinh chi phí và cũng không có resource cần dọn dẹp.

Bước 1: Đăng ký tài khoản

Vào aws.amazon.com và chọn Create an AWS Account. Quá trình đăng ký cần:

  • Một địa chỉ email chưa từng dùng để đăng ký AWS. Email này trở thành tài khoản root — tài khoản có toàn quyền cao nhất.
  • Một thẻ Visa/Mastercard. AWS tạm giữ một khoản nhỏ (khoảng 1 USD) để xác minh rồi hoàn lại. Kể cả khi dùng Free Tier, bước này vẫn bắt buộc.
  • Một số điện thoại để xác minh qua SMS hoặc cuộc gọi.

Trong quá trình đăng ký, bạn sẽ chọn gói tài khoản (account plan). Đây là điểm thay đổi quan trọng với tài khoản tạo từ 15/07/2025:

  • Free account plan: không bị tính tiền thật, dùng 100 USD credit được tặng để khám phá dịch vụ. Gói này kết thúc sau 6 tháng hoặc khi cạn credit, tùy cái nào tới trước. Nó cũng chặn một số dịch vụ dễ đốt credit nhanh. Phù hợp để học.
  • Paid account plan: trả tiền theo mức dùng (pay-as-you-go) khi vượt credit; dùng cho hệ thống chạy thật.

Cho mục đích học theo series, chọn Free account plan. Nếu được hỏi về Support Plan, chọn Basic support - Free.

Lưu ý về mô hình Free Tier: tài khoản tạo sau 15/07/2025 dùng mô hình credit (100 USD tặng + tối đa 100 USD kiếm thêm qua hoạt động khám phá như EC2, RDS, Budgets — mỗi dịch vụ 20 USD). Tài khoản tạo trước 15/07/2025 dùng mô hình cũ: nhiều dịch vụ miễn phí trong 12 tháng đầu (ví dụ 750 giờ EC2 t2.micro mỗi tháng). Series viết theo mô hình mới; nếu tài khoản của bạn là loại cũ, phần chi phí ở các bài sau còn dễ chịu hơn.

Khi đăng ký xong, bạn đăng nhập lần đầu bằng email và mật khẩu vừa tạo. Đây chính là đăng nhập bằng tài khoản root.

Bước 2: Hiểu về tài khoản root và vì sao không nên dùng nó

Tài khoản root là tài khoản gắn với email đăng ký. Nó có toàn quyền, kể cả những thao tác không tài khoản nào khác làm được như đóng tài khoản hay đổi gói hỗ trợ. Vì quyền lực lớn như vậy, nếu root bị lộ thì người khác kiểm soát được toàn bộ, kể cả phần thanh toán.

Nguyên tắc của AWS: dùng root càng ít càng tốt. Sau khi cấu hình xong, gần như bạn sẽ không cần đăng nhập root nữa. Công việc hằng ngày làm qua một IAM user, ta tạo ở Bước 4.

Trước hết, hãy bảo vệ root.

Bước 3: Bật MFA cho tài khoản root

MFA (Multi-Factor Authentication) là lớp xác thực thứ hai: ngoài mật khẩu, mỗi lần đăng nhập cần thêm một mã 6 số sinh ra từ app trên điện thoại. Có MFA thì kể cả khi mật khẩu bị lộ, người khác vẫn không đăng nhập được.

Cài sẵn một app sinh mã trên điện thoại trước, ví dụ Google Authenticator, Microsoft Authenticator hoặc Authy.

Các bước bật MFA:

  1. Đang đăng nhập bằng root, bấm vào tên tài khoản ở góc trên bên phải, chọn Security credentials.
  2. Ở mục Multi-factor authentication (MFA), chọn Assign MFA device.
  3. Chọn loại Authenticator app.
  4. Màn hình hiện một mã QR. Mở app trên điện thoại, quét mã đó.
  5. App sẽ bắt đầu sinh mã 6 số, đổi mỗi 30 giây. Nhập hai mã liên tiếp vào form rồi xác nhận.

Từ giờ, mỗi lần đăng nhập root sẽ cần mã từ app này. Đừng xóa tài khoản trong app, và nếu đổi điện thoại nhớ chuyển nó sang máy mới.

Bước 4: Tạo IAM user để dùng hằng ngày

IAM (Identity and Access Management) là dịch vụ quản lý người dùng và quyền trong tài khoản AWS. Thay vì dùng root, ta tạo một IAM user riêng cho mình.

Ghi chú: AWS hiện khuyến nghị dùng IAM Identity Center cho môi trường nhiều người và nhiều tài khoản. Để học một mình, một IAM user đơn giản hơn nhiều, nên series dùng cách này. Khi đi làm với hệ thống lớn hơn, bạn sẽ gặp lại Identity Center.

Các bước:

  1. Trong thanh tìm kiếm trên cùng, gõ IAM và mở dịch vụ IAM.
  2. Menu trái chọn Users, rồi Create user.
  3. Đặt tên, ví dụ admin-cli. Tick Provide user access to the AWS Management Console nếu bạn muốn user này đăng nhập được vào giao diện web (nên tick, để dùng cho các bài sau). Chọn I want to create an IAM user.
  4. Đặt mật khẩu cho user.
  5. Sang bước Set permissions, chọn Attach policies directly, tìm và tick AdministratorAccess.

Về quyền: AdministratorAccess cho user này gần như toàn quyền (trừ vài thao tác chỉ root làm được). Với môi trường học một mình thì chấp nhận được. Trong hệ thống thật, ta cấp quyền tối thiểu vừa đủ (least privilege) thay vì admin cho mọi người — ý này sẽ quay lại ở các bài sau.

  1. Bấm tạo user. AWS cho bạn một đường link đăng nhập riêng cho IAM user, dạng https://<account-id>.signin.aws.amazon.com/console. Lưu lại link này.

Sau khi tạo xong, bật MFA cho cả IAM user này theo đúng cách ở Bước 3 (mở user vừa tạo, tab Security credentials, Assign MFA device). User này là tài khoản bạn dùng hằng ngày nên nó cũng cần MFA.

Từ giờ, hãy đăng xuất root và đăng nhập lại bằng IAM user qua đường link vừa lưu. Chỉ quay lại root khi thật sự cần.

Bước 5: Tạo access key và cài AWS CLI

AWS CLI là công cụ dòng lệnh để điều khiển AWS từ terminal, thay cho việc bấm chuột trên giao diện. Từ Bài 2 trở đi ta dùng nó nhiều. Để CLI thay mặt bạn gọi AWS, nó cần một cặp access key (gồm Access Key ID và Secret Access Key).

Tạo access key:

  1. Đang đăng nhập bằng IAM user, vào IAM > Users, chọn user admin-cli.
  2. Tab Security credentials, mục Access keys, chọn Create access key.
  3. Chọn mục đích Command Line Interface (CLI), tick xác nhận, bấm tạo.
  4. Màn hình hiện Access key IDSecret access key. Secret chỉ hiện đúng một lần. Copy cả hai, hoặc bấm Download .csv file để lưu lại.

Coi access key như mật khẩu: không commit nó lên Git, không dán vào chat hay ảnh chụp màn hình công khai. Nếu lỡ lộ, vào đây xóa key đó (Deactivate rồi Delete) và tạo key mới.

Cài AWS CLI theo hệ điều hành:

# macOS (dùng Homebrew)
brew install awscli

# Windows: tải bộ cài MSI tại
# https://awscli.amazonaws.com/AWSCLIV2.msi

# Linux (x86_64)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Kiểm tra đã cài được chưa:

aws --version

Lệnh trên in ra phiên bản, ví dụ aws-cli/2.x.x. Nếu báo "command not found" thì CLI chưa được cài hoặc chưa nằm trong PATH.

Cấu hình CLI với access key vừa tạo:

aws configure

Lệnh này hỏi lần lượt bốn thông tin:

AWS Access Key ID [None]: <dán Access Key ID>
AWS Secret Access Key [None]: <dán Secret Access Key>
Default region name [None]: ap-southeast-1
Default output format [None]: json

Region ap-southeast-1 là Singapore, gần Việt Nam nhất nên độ trễ thấp. Bạn có thể chọn region khác, nhưng nên dùng nhất quán một region trong cả series để đỡ lạc resource.

Kiểm tra CLI đã nối đúng tài khoản chưa:

aws sts get-caller-identity

Lệnh này trả về Account, UserIdArn. Nếu thấy Arn chứa user/admin-cli thì CLI đang dùng đúng IAM user. Nếu báo lỗi xác thực, chạy lại aws configure và kiểm tra đã dán đúng key chưa.

Bước 6: Cấu hình cảnh báo hóa đơn với AWS Budgets

Đây là bước quan trọng nhất của bài. AWS Budgets cho phép đặt một ngưỡng chi phí và gửi email khi chi phí thực tế (hoặc dự báo) chạm ngưỡng đó. Bản thân Budgets miễn phí với hai budget đầu tiên.

Việc xem thông tin thanh toán mặc định chỉ root làm được. Nếu muốn IAM user xem được luôn, đăng nhập root một lần, vào Account > IAM User and Role Access to Billing Information và bật Activate IAM Access. Bước này không bắt buộc cho bài học, nhưng tiện về sau.

Tạo budget:

  1. Tìm và mở dịch vụ Billing and Cost Management, menu trái chọn Budgets, rồi Create budget.
  2. Chọn template Monthly cost budget (hoặc Customize nếu muốn tùy chỉnh).
  3. Đặt số tiền ngưỡng, ví dụ 5 USD một tháng. Với người học, vượt 5 USD nghĩa là có gì đó đang chạy ngoài dự kiến và cần kiểm tra ngay.
  4. Nhập email nhận cảnh báo.
  5. Bấm tạo.

Mặc định, budget kiểu này cảnh báo khi chi phí dự báo trong tháng vượt ngưỡng và khi chi phí thực tế chạm các mốc phần trăm. Nếu nhận được email cảnh báo, hãy đăng nhập kiểm tra ngay xem resource nào đang chạy.

Budget dựa trên dữ liệu chi phí nên có độ trễ vài giờ, không phải tức thời. Nó là lưới an toàn để bắt sai sót kéo dài, không phải công cụ chặn chi tiêu theo thời gian thực. Thói quen dọn dẹp sau mỗi bài (từ Bài 2) mới là tuyến phòng thủ chính.

Kiểm tra lại trước khi sang bài sau

Chạy nhanh checklist:

  • [ ] Root đã bật MFA.
  • [ ] Đã tạo IAM user riêng (admin-cli) và cũng đã bật MFA cho nó.
  • [ ] Đang dùng IAM user để đăng nhập, không dùng root cho việc hằng ngày.
  • [ ] aws sts get-caller-identity trả về đúng IAM user.
  • [ ] Đã tạo một AWS Budget gửi email cảnh báo.

Nếu cả năm mục đều xong, phần nền đã chắc.

Tổng kết

Ta đã dựng xong phần nền an toàn cho tài khoản: bảo vệ root bằng MFA, chuyển sang dùng IAM user, nối được AWS CLI từ máy, và đặt cảnh báo chi phí. Đây là những thứ chỉ làm một lần nhưng tránh được phần lớn rắc rối về sau.

Bài 2 ta bắt đầu tạo resource thật: một server EC2, SSH vào nó và chạy một web server đầu tiên. Đó cũng là bài đầu tiên có phần ước tính chi phí và dọn dẹp ở cuối.