AWS IAM - Quản lý danh tính và quyền truy cập
AWS Identity and Access Management (IAM)
IAM là gì?
IAM AWS Identity and Access Management (IAM) là dịch vụ giúp bạn kiểm soát ai (xác thực — authentication) được làm gì (phân quyền — authorization) trên tài nguyên AWS của mình. IAM là dịch vụ toàn cầu (global), không gắn với một Region cụ thể, và miễn phí.
Có bốn thành phần cốt lõi cần phân biệt rõ:
- Users (người dùng): đại diện cho một con người hoặc một ứng dụng cụ thể.
- Groups (nhóm): tập hợp các user để gán quyền chung; nhóm không thể chứa nhóm khác và không thể đăng nhập.
- Roles (vai trò): danh tính tạm thời có thể "được nhận" (assume) bởi user, ứng dụng hay dịch vụ AWS.
- Policies (chính sách): tài liệu JSON định nghĩa quyền được phép (Allow) hoặc bị từ chối (Deny).
Root user và vì sao phải bảo vệ
Tài khoản root root user là danh tính đầu tiên được tạo khi bạn mở tài khoản AWS, sử dụng địa chỉ email đăng ký. Root user có quyền tuyệt đối, không giới hạn trên toàn bộ tài khoản — kể cả việc đóng tài khoản hay thay đổi gói thanh toán.
Vì quyền lực này, AWS khuyến nghị mạnh:
- Không dùng root user cho công việc hàng ngày. Tạo IAM user/role riêng cho các tác vụ thường nhật.
- Bật xác thực đa yếu tố (MFA) Multi-Factor Authentication (MFA) cho root ngay lập tức.
- Không tạo access key cho root user (hoặc xóa nếu đã có).
- Lưu giữ thông tin đăng nhập root ở nơi an toàn, chỉ dùng cho vài tác vụ đặc biệt bắt buộc phải có root.
Lưu ý
Nếu thông tin đăng nhập root bị lộ, kẻ tấn công kiểm soát hoàn toàn tài khoản. Đây là lý do bảo vệ root user (bật MFA, không dùng hàng ngày) gần như luôn là đáp án đúng trong các câu hỏi về "việc đầu tiên nên làm với tài khoản AWS mới".
MFA - Xác thực đa yếu tố
MFA bổ sung một lớp bảo vệ thứ hai ngoài mật khẩu: người dùng phải nhập thêm một mã dùng một lần (thường lấy từ ứng dụng xác thực đóng vai trò thiết bị MFA ảo, khóa bảo mật phần cứng, hoặc khóa U2F). Ngay cả khi mật khẩu bị lộ, kẻ tấn công vẫn không đăng nhập được nếu thiếu yếu tố thứ hai. Hãy bật MFA cho root user và cho mọi IAM user có quyền cao.
Nguyên tắc least privilege
Đặc quyền tối thiểu least privilege nghĩa là chỉ cấp đúng những quyền cần thiết để hoàn thành công việc — không hơn. Thay vì gán quyền quản trị viên (admin) cho tất cả, hãy:
- Bắt đầu với không có quyền nào, rồi thêm dần khi cần.
- Dùng groups để gán quyền theo chức năng công việc (ví dụ nhóm "Developers", nhóm "Auditors").
- Định kỳ rà soát và gỡ bỏ quyền không còn dùng.
Nguyên tắc này giảm thiểu thiệt hại nếu một thông tin đăng nhập bị xâm phạm.
Policies - Chính sách
Policy là tài liệu JSON gắn vào user, group hoặc role. Mỗi policy mô tả:
- Effect:
AllowhoặcDeny. - Action: hành động được phép (ví dụ
s3:GetObject). - Resource: tài nguyên áp dụng.
AWS cung cấp các managed policy dựng sẵn cho các trường hợp phổ biến, và bạn cũng có thể viết customer-managed policy riêng. Quy tắc quan trọng: Deny luôn thắng Allow — nếu một quyền vừa bị Deny vừa được Allow, kết quả là từ chối.
Roles - Vai trò
Role là cách an toàn nhất để cấp quyền cho ứng dụng và dịch vụ, không cần lưu thông tin xác thực dài hạn. Đặc điểm:
- Cung cấp thông tin xác thực tạm thời (temporary credentials) tự động xoay vòng.
- Không gắn với một người cụ thể; ai/cái gì được phép sẽ "assume" role.
- Ví dụ điển hình: gán một role cho EC2 instance để nó truy cập S3 mà không cần nhúng access key vào mã.
Mẹo
Khi đề thi hỏi "cách an toàn nhất để một EC2 instance / Lambda truy cập dịch vụ AWS khác", đáp án gần như luôn là dùng IAM role, không phải nhúng access key.
Access keys so với roles
| Tiêu chí | Access keys | IAM roles |
|---|---|---|
| Loại thông tin | Dài hạn (long-term) | Tạm thời (temporary) |
| Dùng cho | Truy cập lập trình của user (CLI, SDK) | Ứng dụng, dịch vụ AWS, truy cập liên tài khoản |
| Rủi ro nếu lộ | Cao (hiệu lực đến khi bị xóa) | Thấp hơn (tự hết hạn) |
| Khuyến nghị | Hạn chế, xoay vòng định kỳ | Ưu tiên dùng khi có thể |
IAM Identity Center (SSO)
IAM Identity Center IAM Identity Center (trước đây gọi là AWS Single Sign-On) cho phép quản lý truy cập tập trung trên nhiều tài khoản AWS và các ứng dụng đám mây. Người dùng đăng nhập một lần (single sign-on) để truy cập tất cả tài khoản/ứng dụng được phép. Nó có thể tích hợp với nguồn danh tính bên ngoài (như Microsoft Active Directory) hoặc dùng kho người dùng tích hợp sẵn. Đây là lựa chọn ưu tiên cho tổ chức dùng AWS Organizations với nhiều tài khoản.
Tóm tắt
- IAM kiểm soát ai làm gì trên AWS; là dịch vụ toàn cầu và miễn phí.
- Bốn thành phần: users, groups, roles, policies (JSON Allow/Deny).
- Bảo vệ root user: bật MFA, không dùng hàng ngày, không tạo access key cho root.
- Áp dụng least privilege và gán quyền qua groups.
- Roles + thông tin tạm thời an toàn hơn access key dài hạn — ưu tiên dùng cho ứng dụng/dịch vụ.
- IAM Identity Center (SSO) quản lý truy cập tập trung cho nhiều tài khoản.