Tác giả

Oct 22, 2025 • 9:45 PM

Tác giả: Linh osimi

AWS IAM: Quản lý quyền truy cập an toàn trong hệ thống của bạn

Giới thiệu

AWS IAM (Identity and Access Management) là dịch vụ miễn phí giúp bạn **kiểm soát ai có thể làm gì trong tài khoản AWS** của bạn. Dù bạn là cá nhân hay doanh nghiệp, IAM là nền tảng đầu tiên bạn nên cấu hình — trước khi tạo EC2, S3 hay bất kỳ tài nguyên nào.

Không có IAM, mọi người trong tổ chức sẽ phải dùng chung tài khoản root — điều cực kỳ nguy hiểm. Với IAM, bạn có thể:

  • Tạo người dùng (user), nhóm (group), vai trò (role) riêng biệt.
  • Gán quyền chính xác — chỉ đủ để làm việc (nguyên tắc least privilege).
  • Cho phép ứng dụng trên EC2 truy cập AWS mà không cần lưu key.
  • Kích hoạt xác thực hai lớp (MFA) để tăng bảo mật.
AWS IAM console
Giao diện quản lý người dùng và quyền trong AWS IAM.

Các khái niệm cơ bản trong IAM

1. User (Người dùng)

Là danh tính cho một con người hoặc ứng dụng cần truy cập AWS. Mỗi user có:

  • Tên đăng nhập (console) hoặc access key (API/CLI).
  • Quyền được gán qua policy hoặc group.

Ví dụ: user dev-linh, ci-cd-bot.

2. Group (Nhóm)

Nhóm chứa nhiều user. Thay vì gán quyền cho từng user, bạn gán quyền cho group — dễ quản lý hơn.

Ví dụ: group Developers có quyền truy cập EC2 và S3; group Admins có quyền full.

3. Role (Vai trò)

Role không gắn với người cụ thể. Nó được “giả lập” (assume) bởi:

  • Người dùng từ tài khoản AWS khác.
  • Dịch vụ AWS (ví dụ: EC2, Lambda) để truy cập tài nguyên khác.
  • Người dùng đăng nhập qua SSO (Google, Microsoft, v.v.).

Ví dụ: Gán role cho EC2 instance để nó có thể ghi log vào S3 — **không cần lưu access key trên máy**.

4. Policy (Chính sách quyền)

Là tài liệu JSON định nghĩa **cho phép hoặc từ chối** hành động nào trên tài nguyên nào.

Có hai loại:

  • Managed Policy**: Do AWS cung cấp (ví dụ: AmazonS3ReadOnlyAccess) hoặc bạn tự tạo.
  • Inline Policy**: Gắn trực tiếp vào user/group/role — ít linh hoạt, nên tránh.

Ví dụ policy đơn giản cho phép đọc S3:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

Thực hành: Tạo người dùng IAM và gán quyền

Giả sử bạn muốn tạo user cho một developer chỉ được xem EC2 và khởi động lại instance.

  1. Vào AWS Console → tìm **IAM**.
  2. Chọn **Users** → **Create user**.
  3. Nhập tên: dev-trung.
  4. Tích chọn **AWS Management Console access** → đặt mật khẩu.
  5. Bỏ qua phần "Access key" (nếu chỉ dùng console).
  6. Ở bước **Permissions**, chọn **Add user to group** → tạo group mới tên EC2-Operators.
  7. Gán policy cho group:
    • Chọn **Attach policies**.
    • Tìm và chọn AmazonEC2ReadOnlyAccess.
    • Tạo policy tùy chỉnh để cho phép ec2:RebootInstances (xem ví dụ dưới).
  8. Hoàn tất → gửi thông tin đăng nhập cho developer.

Policy tùy chỉnh cho phép reboot EC2:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:RebootInstances",
      "Resource": "*"
    }
  ]
}

IAM Role cho EC2 — cách an toàn để ứng dụng truy cập AWS

Khi ứng dụng trên EC2 cần truy cập S3, DynamoDB, v.v., **đừng dùng access key**. Thay vào đó:

  1. Tạo IAM Role với quyền cần thiết (ví dụ: s3:PutObject).
  2. Gán role đó vào EC2 instance khi tạo (hoặc attach sau).
  3. Trong code, dùng AWS SDK — SDK sẽ tự lấy temporary credentials từ metadata service của EC2.

Ưu điểm:

  • Không lưu secret trên máy → giảm rủi ro rò rỉ.
  • Credentials tự động luân chuyển (rotate) — không cần quản lý.

Best practices bảo mật với IAM

  • Không bao giờ dùng tài khoản root để làm việc hàng ngày. Dùng root chỉ để tạo IAM admin đầu tiên.
  • Áp dụng nguyên tắc least privilege: chỉ cấp quyền tối thiểu cần thiết.
  • Luôn bật MFA cho user quan trọng (đặc biệt là admin).
  • Định kỳ xem lại quyền: dùng IAM Credentials Report hoặc AWS Access Analyzer.
  • Không dùng inline policy — dùng managed policy để tái sử dụng và quản lý tập trung.
  • Xóa user/role không dùng** — tránh “rác quyền” tích tụ theo thời gian.

Kết luận

IAM là “cánh cửa” đầu tiên và quan trọng nhất trong hệ sinh thái AWS. Cấu hình đúng từ đầu sẽ giúp bạn tránh được 90% rủi ro bảo mật: rò rỉ dữ liệu, xóa nhầm tài nguyên, hoặc bị tấn công do quyền quá rộng.

Hãy bắt đầu bằng cách:

  1. Tạo user IAM cho chính bạn (thay vì dùng root).
  2. Gán quyền chỉ đủ để làm việc.
  3. Dùng role thay vì access key cho ứng dụng.

Khi IAM được quản lý tốt, bạn có thể yên tâm mở rộng hệ thống — vì biết rằng “ai làm gì” luôn được kiểm soát.

© 2025 Linh's Blog • Chia sẻ kiến thức công nghệ