kiến thức DevOps thực tế và chi tiết

AWS lesson 1: IAM là gì? Cấu hình như thế nào?

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.

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 keySecret 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 nameConsole 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-1duan-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 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]