Mở đầu

Khi bắt đầu khám phá AWS, nhiều người bị cuốn hút ngay bởi sự tiện lợi của các dịch vụ như S3, Lambda hay EC2. Nhưng chỉ sau một vài lần “toát mồ hôi” vì cấp sai quyền, xóa nhầm resource, hoặc hệ thống bị người lạ vào “vọc” (như tôi push nhầm key fullaccess lên s3 may mà ko việc rì :))), từ đó tôi mới thấm thía một bài học cơ bản: Muốn làm chủ cloud, phải hiểu rõ IAM.

IAM không phải là thứ hào nhoáng, nhưng nếu bạn không nắm vững nó, hệ thống của bạn có thể trở thành mớ hỗn độn về bảo mật - là nền tảng bảo mật của toàn bộ tài khoản AWS. Nếu bạn bỏ qua hoặc hiểu sai, cái giá phải trả sẽ rất lớn.

Trong bài viết này, tôi muốn chia sẻ lại những điều căn bản nhưng rất quan trọng khi làm việc với IAM – từ cách tạo user, cấp quyền đúng cách, cho đến những sai lầm phổ biến như:

  • 🚫 Không cấp quyền admin lung tung (trừ khi bạn thích hồi hộp).

  • 🧓 Đừng dùng tài khoản root để code, deploy, login linh tinh. Tài khoản root là để thờ, không phải để đem ra cày cuốc.

  • ✅ Hãy tạo một IAM user có quyền admin riêng, rồi dùng nó để thao tác – chuyên nghiệp, an toàn, và ít drama hơn rất nhiều.

Do là bài đầu tiên về AWS, chúng ta hãy nói tới nền tảng đám mây này trước nhé!

I. Điều gì khiến AWS khác biệt

AWS dẫn đầu về cloud computing trong 11 năm liên tiếp.

  • Triết lý của AWS: khách hàng sẽ ngày càng trả ít tiền hơn cho dịch cùng 1 dịch vụ, tính năng, tài nguyên sử dụng.
  • Nghiên cứu những cái cần cho 1 leadership của AWS(principles).
  • Khách hàng càng nhận nhiều giá trị thì mình càng được lợi nhiều.
  • Khi học tới gian đoạn tối ưu chi phí nâng cao sẽ nhận thế sự khác biệt văn hóa nó ảnh hưởng kinh khùng như thế nào

II. Bắt đầu như thế nào.

Mục tiêu làm được việc

  • Câu nói của hay của AWS: advance today will be foundation tomorrow
  • Vị trí đầu tiên phải đạt được cloud engineer.

III. Giới thiệu Cloud và AWS

1. Điện toán đám mây là gì?

Là việc phân phối các tài nguyên CNTT theo nhu cầu qua internet với chính sách thanh toán theo mức sử dụng.
Khi mình chuyển dịch các thành phần của mình từ môi trường truyền thống sang điện toán đám mây thì mình sẽ đạt được lợi thế chi phí nếu như mình biết tối ưu.

Ví dụ phải thiết kế 1 hệ thống chịu tải 100 nghìn người. Nhưng mà đấy là trong lúc cao điểm, những lúc bình thường chỉ có từ 1-2 nghìn người. Những lúc như vậy sẽ rất lãng phí nếu sử dụng các thiết bị vật lý để duy trì. Nên phải dùng cloud để auto scale nhắm tối ưu chi phí.

  • Điện toán đám mây giúp tăng tốc độ, có thể tận dụng được quy mô toàn cầu nếu muốn mở thêm ở 1 thị trường khác.
  • Tùy vào độ quan trọng của ứng dụng có thể triển khai trên 1 hoặc 2 AZ
  • Có 3 hướng truy cập AWS: Console, CLI, SDKs(thông qua app).

2. Tối ưu chi phí

Lựa chọn cấu hình tài nguyên tính toán và nơi lưu trữ dữ liệu phù hợp.
▪ Tận dụng các phương thức thanh toán giảm giá như reserved instance, saving plan, spot.
▪ Xóa các tài nguyên khôngsử dụng, bật tắt tự động các tài nguyên không cần chạy 24/7.
▪ Tận dụng các dịch vụ serverless.
Đối với các máy có 4G, 8G ram trên Aws sẽ tốt hơn do chính sử dụng các chip đời mới sử dụng đc 100% hiệu suất. Máy thông thường chỉ được dùng 30-40% hiệu năng.
Các cơ chế cam kết sử dụng instance: reserved instance(cam kết dùng 1 – 3 năm, giảm tối đa 0%)+ saving plan, spot(Aws cho thuê lại instace với giá rẻ vì bản chất Aws có rất nhiều instace và chúng không được sử dụng tất cả, khi không dùng thì sẽ được cho thuê Với giá rẻ hơn, 90%) chỉ dành cho những ứng dụng có khả năng chịu lỗi cao

IAM

Nói nôm na: Ai được phép làm gì, ở đâu, khi nào - phải thông qua ông cháu IAM này.

Các thành phần chính trong IAM

Thành phần Mô tả
User Tài khoản người dùng (developer, admin, app,…) dùng để login và thực hiện tác vụ
Group Tập hợp user có chung quyền
Role Định danh tạm thời, thường dùng cho EC2, Lambda, hoặc cross-account
Policy Tài liệu JSON xác định quyền: ai được truy cập gì, theo cách nào
Permission Quyền được cấp thông qua policy

Phân biệt role và policy

Đơn giản role cấp cho service, policy tạo cho người

Role - 1 bộ định nghĩa quyền cho 1 hoặc nhiều service.

Policy – Linh hồn của IAM: 1 đoạn json được định nghĩa một hoặc nhiều quyền hạn trả lời cho câu hỏi “ai được làm gì với tài nguyên nào”.

Ví dụ: policy cơ bản

1
2
3
4
5
6
7
8
9
10
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
  • Effect: Cho phép (Allow) hoặc từ chối (Deny)

  • Action: Hành động cụ thể (s3:PutObject, ec2:StartInstances,…)

  • Resource: Tài nguyên bị ảnh hưởng (bucket, instance,…)

Một số điều không phải ai cũng biết về IAM role

  • Có 2 role chính là: Allow và Deny. Mặc định Deny sẽ mạnh hơn Allow, nghĩa là với cùng một resource. Nếu cùng để 2 role Allow và Deny thì mặc định Deny sẽ ghi đè lên Allow.

  • Nếu bạn cấp cho 1 user full quyền ở region us-east-1 thì user đó vẫn có thể vào IAM và sửa cho full quyền được.

  • Nên tạo group sau đó add user vào group (ko làm ngược lại)

  • Account root có quyền lực tối cao gì hơn so với account user