IAM là gì – Tìm hiểu về Users, Groups, Policys – Bài 2

Chào bạn, nếu bạn mới bắt đầu học AWS thì IAM là một trong những thứ quan trọng nhất cần hiểu đầu tiên. Không ai muốn người lạ vào được hệ thống của mình cả đúng không? Vậy IAM là gì? IAM chính là công cụ giúp bạn quản lý ai được làm gì trên AWS – đơn giản vậy thôi.

Xem thêm:

Tổng quan về AWS Cloud | Region & AZ – Bài 1

AWS Budget – Thiết lập ngân sách và cảnh báo chi phí – Bài 3

Hướng dẫn tạo EC2 Instance chạy Amazon Linux trên AWS – Bài 5

1. IAM là gì?

IAM là viết tắt của Identity and Access Management, nghĩa là quản lý danh tính và quyền truy cập. Khi bạn dùng AWS, sẽ có rất nhiều tài nguyên (EC2, S3, RDS, v.v.). Nhưng không phải ai cũng nên có quyền truy cập hết vào tất cả mọi thứ. IAM sinh ra để giải quyết bài toán này.

Với IAM, bạn có thể:

  • Tạo người dùng (user) đại diện cho nhân viên trong team.
  • Gán người dùng vào các nhóm (group) để dễ quản lý.
  • Gán quyền cho người dùng hoặc nhóm – tức là cho phép hoặc từ chối họ làm một số việc nhất định trên AWS.

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

2.1. Root Account

Khi bạn tạo tài khoản AWS, bạn sẽ có một tài khoản root – quyền cao nhất. Nhưng đừng bao giờ dùng tài khoản này để làm việc hàng ngày. Thay vào đó, bạn nên tạo các user IAM và phân quyền cho từng người dùng đó.

2.2. User và Group

Ví dụ công ty bạn có 6 người: Alice, Bob, Charles, David, Edward và Fred.

  • Bạn có thể tạo nhóm Developers chứa Alice, Bob, Charles.
  • Nhóm Operations chứa David và Edward.
  • Fred thì không nằm nhóm nào cũng được.

IAM không bắt buộc user phải nằm trong group, và một user có thể nằm trong nhiều group khác nhau. Nhưng mỗi nhóm chỉ có thể chứa user, không thể chứa các nhóm khác.

Quản Lý Nhóm Người Dùng (User Groups)

2.3. Gán quyền – IAM Policy

Người dùng hoặc nhóm sẽ được gán một JSON documents gọi là IAM policy. IAM policy mô tả những gì người dùng hoặc nhóm người dùng có quyền làm.

Ví dụ, bạn có thể cho phép người dùng truy cập dịch vụ EC2, Elastic Load BalancingCloudWatch. Thông qua JSON documents, bạn xác định rõ ràng những quyền nào người dùng hoặc nhóm đó có trong AWS.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "elasticloadbalancing:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:Describe*"
      ],
      "Resource": "*"
    }
  ]
}

2.4. Nguyên tắc Least Privilege

Trong AWS, việc cấp quyền cần được thực hiện cẩn thận để tránh việc người dùng có quyền quá lớn, dẫn đến rủi ro bảo mật hoặc phát sinh chi phí không mong muốn. Vì vậy, AWS khuyến nghị áp dụng nguyên tắc least privilege, nghĩa là chỉ cấp quyền tối thiểu cần thiết cho người dùng để họ hoàn thành công việc của mình.

3. IAM Policies trong AWS

Giả sử chúng ta có group Developers gồm Alice, Bob và Charles. Khi gán một policy ở group, policy đó sẽ được áp dụng cho tất cả user trong group.

Nếu chúng ta có một group khác dành cho bộ phận vận hành (operations) với một chính sách khác. David và Edward sẽ có chính sách khác so với group Developers. Ngoài ra, nếu Fred là một người dùng không thuộc nhóm nào, chúng ta cũng có thể tạo một inline policy – một chính sách chỉ được gán cho người dùng đó, bất kể người dùng đó có thuộc nhóm nào hay không.

IAM Policies trong AWS

3.1. Cấu trúc của một IAM Policy

Policy trong IAM là một file JSON gồm các phần:

  • Version: Thường là “2012-10-17”, đây là policy language version.
  • ID: mã nhận dạng policy (optional).
  • Statements (chứa danh sách các quyền)
    • Sid: Mã nhận dạng của statement (optional).
    • Effect: Quy định cho phép (allow) hoặc từ chối (deny) quyền truy cập vào các API cụ thể.
    • Principal: account/user/role mà chính sách này áp dụng.
    • Action: Danh sách các API sẽ bị từ chối hoặc được phép dựa trên effect.
    • Resource: Danh sách tài nguyên mà các hành động sẽ được áp dụng, ví dụ như một bucket S3.
    • Condition: Điều kiện để áp dụng statement (optional).

Cấu Trúc Chính Sách IAM

3. IAM MFA

Sau khi tạo user và gán quyền xong, bạn nên bật thêm các lớp bảo vệ, để tránh bị hack. AWS cung cấp hai cơ chế bảo vệ chính: thiết lập chính sách mật khẩu (password policy) và xác thực đa yếu tố (Multi-Factor Authentication – MFA).

3.1. Password Policy

Bạn có thể bắt buộc user phải:

  • Dùng mật khẩu dài ít nhất bao nhiêu ký tự.
  • Chứa chữ hoa, số, ký tự đặc biệt.
  • Đổi mật khẩu mỗi 90 ngày.
  • Không được dùng lại mật khẩu cũ.

Chính sách mật khẩu này giúp bảo vệ tài khoản của bạn trước các cuộc tấn công brute force, đảm bảo tính bảo mật cao hơn cho người dùng IAM.

3.2. Multi Factor Authentication – MFA

MFA là cơ chế bảo vệ thứ hai trong AWS. Với MFA, bạn sẽ kết hợp giữa mật khẩu và một thiết bị bảo mật mà bạn sở hữu, tạo nên lớp bảo mật cao hơn so với chỉ dùng mật khẩu. Đặc biệt, AWS khuyến nghị sử dụng MFA cho tất cả tài khoản root và người dùng IAM để bảo vệ tài khoản khỏi các mối đe dọa.

AWS cung cấp nhiều tùy chọn thiết bị MFA khác nhau:

  • Virtual MFA device: Bạn có thể sử dụng các ứng dụng như Google Authenticator hoặc Authy. Với Authy, bạn có thể lưu trữ nhiều mã token trên cùng một thiết bị, giúp dễ dàng quản lý các tài khoản root và người dùng IAM khác nhau.
  • Universal 2nd Factor (U2F) Security Key: Đây là một thiết bị vật lý như YubiKey của Yubico, một đối tác của AWS. Thiết bị này có thể hỗ trợ nhiều tài khoản root và người dùng IAM trên cùng một thiết bị, giúp bạn quản lý bảo mật dễ dàng hơn.
  • Hardware Key Fob MFA Device: Ví dụ như thiết bị do Gemalto cung cấp (một đối tác thứ ba của AWS). Đây là một lựa chọn cho những ai muốn sử dụng thiết bị bảo mật vật lý.
  • Hardware Key Fob MFA Device for AWS GovCloud (US): Với các tài khoản sử dụng AWS GovCloud (dành cho chính phủ Hoa Kỳ), bạn có thể sử dụng key fob do SurePassID cung cấp.

Multi Factor Authentication - MFA

IAM là thứ đầu tiên bạn nên học nếu làm việc với AWS. Không ai muốn hệ thống bị người ngoài truy cập trái phép cả. Với IAM, bạn sẽ:

  • Tạo và tổ chức người dùng hợp lý.
  • Gán đúng quyền, đúng người.
  • Áp dụng nguyên tắc bảo mật chặt chẽ.

Cảm ơn bạn đã tham khảo AWS Certified Solutions Architect Associate – SAA-C03 trên ttnguyen.net

Bài viết cùng chủ đề:

EC2 Placement Groups trong AWS – Bài 6

AWS IPv4 Public – Cách tính phí mới nhất – Bài 7

EBS Volumes – EBS Snapshot – Lưu trữ cho EC2 Instances – Bài 8

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em