Tiếp nối lesson 0 trong series chinh phục AWS. Đầu tiên chúng ta sẽ đi tìm hiểu IAM là gì và những setup về service này. Như mình đã nói ở bài trước mình sẽ không tập chung vào quá nhiều lý thuyết các bạn có thể tìm hiểu trực tiếp từ IAM (amazon.com) hoặc rất nhiều nguồn khác trên internet để hiểu rõ về dịch vụ này.
Nội dung
IAM là gì? IAM để làm gì?
IAM (Identify and Access Management) là dịch vụ để kiểm soát quyền truy cập của cá nhân và nhóm đến tài nguyên AWS của bạn/công ty một cách an toàn.
Trên môi trường Cloud, mỗi tổ chức công ty sẽ có rất nhiều những resource, document, project,… Tuy nhiên không phải ai cũng có thể truy cập được mọi tài nguyên trừ những người có quyền admin (setup ở lesson 0). Ví dụ nhân viên dự án A không thể xem các tài liệu của dự án B, các phòng ban này không thể xem những tài liệu đặc thù của phòng ban khác. Vì vậy, IAM sẽ giúp phân chia rõ các role, ai được xem tài liệu gì, truy cập tài nguyên nào, sử dụng dịch vụ nào.
IAM có nhiệm vụ chính là xác thực (Authentication) và phân quyền (Authorization) với các chức năng được thiết kế sẵn sàng như user groups, users, roles, policies. Vậy là cơ bản bạn đã hiểu được IAM là gì và để làm gì.
Root account
Sau khi tạo tài khoản AWS thì tài khoản ban đầu đó được gọi là “root account credentials“, tài khoản này có quyền cao nhất và có thể sử dụng mọi dịch vụ AWS (trong khuôn khổ). Mình cũng khuyến nghị rằng bạn không nên sử dụng trực tiếp account này mà nên tạo roles cụ thể khác.
Thành phần chính của IAM
Users: tài khoản để truy cập vào AWS và password cùng với MFA.
Users group: group chứa users và có thể set permission.
Roles: quản lý IAM có thể truy cập được resource nào đó.
Policy: phân định quyền rõ ràng cho mỗi group,user, role nào đó.
Access key và Secret key: được hiểu đơn giản như UserId và Password để xác thực AWS CLI, các tác vụ API, SDK,…
Password policy: định dạng độ phức tạp của password khởi tạo
Sử dụng IAM
Dưới đây mình sẽ sử dụng IAM để setup một số những tác vụ như setup môi trường cho developer, customer, tester để thực hiện những công việc với role riêng biệt.
Thực hành sử dụng service IAM
Tạo nhóm dành cho developer thực hiện sử dụng một số service như EC2, S3, RDS (database).
Step 1: Tạo group và phân quyền truy cập vào một số Service EC2, S3, Database
Truy cập vào IAM Management Console chọn Create group
Điền thông tin group name và access các quyền sử dụng các service thông tin tại trường policy
Access quyền sử dụng EC2 (Service này sẽ làm chi tiết hơn ở các lesson sau)
Access quyền sử dụng S3 (Service này sẽ làm chi tiết hơn ở các lesson sau)
Access quyền sử dụng RDS – database (Service này sẽ làm chi tiết hơn ở các lesson sau)
Step 2: Tạo user và phân quyền
Truy cập vào IAM Management Console chọn Add users
Nhập thông tin User name, với lựa chọn tự động sinh password và đổi password cho lần đăng nhập tiếp theo.
Tích chọn vào group developer
Chọn Create user
Tạo user thành công và một số thông tin cần lưu ý:
- Console sign-in URL: url để đăng nhập vào AWS
- User name và Console password: dùng để login.
- Email sign-in instructions: tiến hành gửi thông tin login cho user đó qua email.
- Download .csv file: file chứa Access key và Secret key.
Sau đó sẽ thấy user được tạo ở đây mình tạo thêm 1 user cũng tương tự.
Có 2 cách đăng nhập chính:
- Đăng nhập web console của AWS mà khi tạo tài khoản ở bước trên có Url (bước này sử dụng cách đó).
- Config bằng AWS CLI sử dụng cặp key trong file lúc tạo tài khoản.
Đăng nhập thông tin đã được tạo trước đó và được kết quả.
Step 3: Tạo role service cụ thể
Chúng ta sẽ tiến hành tạo Role sử dụng service lambda được sử dụng các dịch vụ S3, Dynamodb (hiểu đơn giản lambda là service để developer code những chức năng trên đó và vì vậy cần connect đến kho lưu trữ tài liệu và data. Cụ thể service này sẽ được hướng dẫn ở các lesson sau)
Truy cập vào IAM Management Console chọn Create role
Cấu hình chi tiết:
- Trusted enttity type: AWS service
- Use case: Lambda (bạn có thể chọn service khác ở đây mình tạo sample service lambda)
Chọn Next
Chọn permission FullAccess của DynamoDB
Chọn permission FullAccess của S3 và Chọn Next
Đặt tên cho Role và thấy cấu hình ở dưới
Chọn Create role
Thấy Role được tạo
Tuy nhiên sẽ có vấn đề như sau
Sử dụng service của AWS không chỉ có một team develop mà sẽ có nhiều team tương ứng sẽ được vào các tài nguyên chỉ dành riêng cho dự án đó. Nhưng như chúng ta làm là access được hết các tài nguyên của EC2, S3, RDS
Ở đây mình có 2 buckets là duan-1 và duan-2 tương ứng là các thông tin lưu trữ của 2 dự án khác nhau.
Và account QuanVu cũng có thể dùng được cả 2 điều đó chưa hợp lý đó chính là lúc chúng ta sử dụng đến Policy
Step 5: Tạo policy phân quyền người dùng cho các tài nguyên nhất định
Truy cập vào IAM Management Console chọn Create policy
Cấu hình chi tiết:
- Chọn Service S3
- Actions: All S3 actions (s3.*)
Resources nhấn bucket
Chọn Spectific và Add ARN
Ở S3 vào copy name ARN
Nhập vào ARN name và nhấn Add
Thêm bucket và nhấn Next Tags
Nhập Tag bạn nên nhập Tag thể hiện chức năng của policy đó và nhấn Next: Review
Nhập thông tin và review lại rồi nhấn Create policy
Policy được tạo thành công dưới đây
Truy cập lại group tiến hành xóa Policy FullAccess của S3
Nhấn Add permissions để thêm policy S3 mới ta vừa tạo
Thêm policy S3 của dự án 1
Đã thêm Policy thành công
Quay lại check thấy bucket dự án 2 đã Error vậy đã thành công
Vậy là qua bài viết này bạn đã nắm bắt được Service IAM là gì và các chức năng chính cũng như cách sử dụng IAM. Tiếp theo trong series chinh phục AWS là service VPC một service là quan trọng không thể thiếu trong các hệ thống thực tế. Thanks.
Mọi thắc mắc bạn có thể liên hệ:
Email: [email protected]