Tự học AWS [P5] - AWS Security - IAM - Identity and Access Management
Trong một tổ chức ví dụ như một công ty, để công ty có thể hoạt động hiệu quả cần có sự phân quyền rõ ràng, từng thành viên sẽ được giao nhiệm vụ, quyền và lợi ích riêng. Hệ thống AWS cung cấp một service giúp bạn có thể phân quyền, góp phần đảm bảo bảo mật đó chính là IAM - Identity and Access Management hay còn gọi là Quản lý định danh và truy cập.
Vai trò của quản lý định danh và truy cập
Khi sử dụng hệ thống, chắc hẳn không ai muốn rằng các thành phần của hệ thống xung đột, hoặc có quyền truy cập vào những vùng dữ liệu bảo mật. Việc không phân quyền có thể dẫn tới lỗ hổng bảo mật, khiến cho dữ liệu và thông tin bị đánh cắp. Việc xác thực ai là người truy cập, và người đó có những quyền truy cập vào dữ liệu nào là vô cùng cần thiết.
IAM - Identity and Access Management
IAM
là dịch vụ giúp bạn có thể phân quyền truy cập cho người dùng, dịch vụ hoạt động bên trong hệ thống AWS.
Một điều cần lưu ý đó là IAM là một Universal Service - không chịu sự tác động bởi Region, hay nói cách khác, thay đổi trong IAM sẽ gây ảnh hưởng lên tất cả các Region. Ngoài ra, IAM cũng có thể liên kết với những tổ chức cung cấp định danh khác như Active Directory, Facebook, Linkedin, …
Để làm những việc này, IAM định nghĩa những thành phần như sau:
- User
- Group
- Role
- Policy
Đây là những thành phần chính của IAM phục vụ công việc định danh và phân quyền truy cập. Chúng ta sẽ cũng tìm hiểu từng thành phần trên.
User - Người dùng
Người dùng có quyền truy cập cao nhất ứng với tài khoản Root
chính là Root Account
hay còn gọi là tài khoản Admin. Admin có quyền truy cập tới mọi dịch vụ của AWS và có thể tạo và share quyền truy cập cho những thành phần khác.
Với những user không phải admin sẽ phải tuân theo những quy tắc sau:
- New User: User khi mới được tạo sẽ không có bất cứ quyền truy cập nào, chỉ có thể được truy cập vào những thành phần AWS khi được cho phép với Root Account. Quá trình phân quyền cho User sẽ được mô tả ở phần sau.
- Mỗi user sẽ được cấp cho Access Key ID và Secret Access Keys dùng cho xác thực khi dùng API hoặc những service yêu cầu định danh, hoặc dùng Command Line. Tuy nhiên không thể dùngeđể đăng nhập vào AWS Console.
- Chỉ có thể xem Access Key ID và Secret Access Keys khi khởi tạo User, nếu quên thì sẽ cần tạo lại. Cần lưu trữ Keys khi tạo lần đầu.
- Có thể tạo Password Rotation Policy - Bắt buộc thay đổi password sau một chu kỳ thời gian nhất định.
Group - Nhóm người dùng
Mỗi Group quy định một nhóm các User có quyền truy cập tương tự nhau, mỗi User có thể được nhóm vào một hoặc nhiều Group. User thuộc group sẽ có đầy đủ quyền truy cập của Group đó.
Mỗi Group sẽ mang một định danh - ID riêng được gọi là Group ARN
- Group Amazon Resource Name
. Ví dụ:
- arn:aws:iam::403955622149:group/Developers
Role - Vai trò
Mỗi Role sẽ quy định một vai trò nào đó. Một Role
sẽ bao gồm một hoặc nhiều Policy
(sẽ nhắc tới ở phần sau) khác nhau. Quy định một hoặc nhiều quyền truy cập khác nhau. Role có vai trò nhằm cấp một hoặc nhiều quyền truy cập cho một hoặc những đối tượng khác nhau.
Lưu ý: Khác với Group
, Role
dùng để phân quyền cho những Service khác của AWS ví dụ như S3, EC2, …
Policy - Chính sách
Cuối cùng, thành phần nhỏ nhất, quy định quyền truy cập chi tiết tới một thành phần nào đó, và mô tả rõ ràng chúng dưới dạng JSON. Ví dụ với Policy cho phép quyền truy cập vào S3
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Mỗi Policy sẽ mô tả lại những hành động nào (Action), tài nguyên nào (Resource) được cho phép.
Mối liên hệ giữa các thành phần
User - Policy:
Có thể gán trực tiếp Policy
cho mỗi User
, một User
có thể có nhiều Policy
, đây thường là cách gán trực tiếp khi một User
phát sinh ngoài dự tính tổ chức, cần có những Policy
riêng biệt.
VD: Công ty thuê một chuyên gia về Networking để thiết kế mô hình mạng cho hệ thống, chuyên gia này cũng cần truy cập vào một vài service khác nhau của AWS. Vậy nên User này sẽ không phải nhân viên công ty, nên sẽ chỉ có một vài quyền truy cập nhất định vào những tài nguyên cần cung cấp. Không thể gán vào những Group đã có sẵn ví dụ những Hành chính nhân sự, Developer, …
Group - Policy
Như vừa nói ở ví dụ trên, công ty đã có những phòng ban, vị trí vai trò riêng được quy định như Developer, Tester. Mỗi vị trí sẽ được phân quyên cố định theo quy định. Nên có thể tạo những Group
để nhóm những User
lại và phân cho quyền - Policy
tương ứng với vị trí công việc.
Role - Policy
Role
dùng để phân quyền cho những dịch vụ của AWS như EC2, S3, Lamdba. Để những dịch vụ này có thể truy cập và giao tiếp lẫn nhau, chúng cần được phân cho Role riêng.
Ví dụ: Service Lambda
cần truy cập vào S3
để lấy dữ liệu, để làm được điều này thì Lambda
cần phải có một Role
chứa những Policy
quy định về việc truy cập vào S3
. Bằng cách gán những Policy
này cho một Role
với tên gọi Lambda_Access_S3
, Service Lambda
có thể truy cập vào S3
.
Policy quy định quyền :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
]
}
Ngoài ra với User và Group đã được đề cập ở phần định nghĩa về Group.
Mọi ý kiến đóng góp vui lòng để lại comment ở phần bình luận của bài viết!