Giới thiệu về IAM: Users, Groups, Policys

Identity and Access Management (IAM) là một dịch vụ giúp quản lý danh tính và quyền truy cập của người dùng trên nền tảng AWS, đảm bảo rằng chỉ những cá nhân hoặc hệ thống được ủy quyền mới có thể truy cập vào tài nguyên. Bài viết này sẽ giúp bạn hiểu rõ hơn về IAM, bao gồm các khái niệm cơ bản đến các nguyên tắc quản lý quyền truy cập hiệu quả.

Xem thêm:

hạ tầng toàn cầu của AWS

1. Giới thiệu về IAM

IAM (Identity and Access Management) là một dịch vụ quản lý danh tính và quyền truy cập. Trong IAM, chúng ta có thể tạo người dùng và gán họ vào các nhóm để quản lý quyền truy cập hiệu quả.

1.1. Root account

Khi tạo tài khoản AWS, một tài khoản root sẽ được tạo tự động. Đây là tài khoản root có quyền cao nhất và chỉ nên sử dụng để thiết lập ban đầu. Sau đó, bạn không nên sử dụng hoặc chia sẻ tài khoản này nữa. Thay vào đó, bạn nên tạo các người dùng riêng biệt trong IAM, mỗi người dùng đại diện cho một cá nhân trong tổ chức của bạn.

1.2. User Groups

Người dùng trong IAM có thể được gán vào các nhóm để quản lý dễ dàng hơn.

Ví dụ, nếu tổ chức của bạn có 6 nhân viên: Alice, Bob, Charles, David, Edward và Fred.

  • Alice, Bob, cùng Charles:  có thể tạo Groups Developers để quản lý 3 người này.
  • David và Edward: có thể tạo nhóm Operations.

IAM cho phép bạn tổ chức người dùng thành các nhóm, nhưng mỗi nhóm chỉ có thể chứa người dùng, không thể chứa các nhóm khác.

Một người dùng cũng không nhất thiết phải thuộc bất kỳ nhóm nào. Ví dụ, Fred có thể đứng một mình mà không thuộc nhóm nào.

Một người dùng cũng có thể thuộc nhiều nhóm. Chẳng hạn, Charles và David có thể chung nhóm Audit Team.

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

1.3. IAM: Permissions

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 Balancing và CloudWatch. 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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"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": "*"
}
]
}
{ "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": "*" } ] }
{
  "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": "*"
    }
  ]
}

1.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.

2. 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

2.1. IAM Policies Structure

IAM Policies là một JSON document và bao gồm các phần chính sau:

  • Version: Thường là “2012-10-17”, đây là policy language version.
  • ID: mã nhận dạng policy (optional).
  • Statements:
    • 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 người dùng và nhóm trong IAM, bước tiếp theo là bảo vệ các tài khoản khỏi bị xâm phạm. Để thực hiện điều này, 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

Chính sách mật khẩu đóng vai trò quan trọng trong việc tăng cường bảo mật tài khoản. AWS cho phép bạn tùy chỉnh chính sách mật khẩu với nhiều tùy chọn khác nhau:

  • Chiều dài tối thiểu của mật khẩu: Bạn có thể thiết lập độ dài tối thiểu cho mật khẩu và yêu cầu các loại ký tự cụ thể, như chữ cái viết hoa, chữ cái viết thường, chữ số, và ký tự đặc biệt (ví dụ: dấu chấm hỏi).
  • Cho phép người dùng tự đổi mật khẩu: Bạn có thể cho phép hoặc không cho phép người dùng IAM thay đổi mật khẩu của họ.
  • Thiết lập thời gian hết hạn cho mật khẩu: Bạn có thể yêu cầu người dùng thay đổi mật khẩu sau một khoảng thời gian nhất định, ví dụ như 90 ngày, để đảm bảo mật khẩu luôn mới và an toàn.
  • Ngăn chặn việc tái sử dụng mật khẩu: Bạn có thể ngăn người dùng đặt lại mật khẩu đã sử dụng trước đây.

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 đóng vai trò quan trọng trong việc kiểm soát và bảo vệ tài nguyên AWS giúp đảm bảo tính bảo mật và tuân thủ các tiêu chuẩn an toàn thông tin. Cảm ơn bạn đã tham khảo AWS Certified Solutions Architect Associate – SAA-C03 trên ttnguyen.net

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