Iam aws là gì

IAM hay Identity and Access Management là nơi mà bạn quản lý các AWS user của mình cũng như việc truy cập của họ tới các tài khoản AWS và các service.

Vậy cụ thể điều trên có ý nghĩa là gì? Nó có nghĩa là bạn có thể tạo các tài khoản user cho các member trong team mình và cấp cho các user đó quyền truy cập các tính năng hoặc các service nhất định của AWS.

Một vài việc các bạn sẽ thường thao tác trong IAM bao gồm: tạo account, group, role và các IAM access policy.

Giờ thì bạn có thể vào AWS console để xem qua về IAM:

Chú ý: khi các bạn tạo một tài khoản AWS, một tài khoản root user sẽ được tự động tạo ra với các thông tin khi bạn tạo tài khoản AWS [email, billing…]. Tài khoản root mặc định sẽ có quyền truy cấp tới tất cả các AWS resource, bao gồm billing và tất cả các service. Như vậy tài khoản root sẽ có thể thực hiện mọi action có thể trong một tài khoản AWS. Các tài khoản user được tạo mới sau đó mặc định sẽ không có quyền truy cập tới bất cứ AWS resource nào cả. Bạn sẽ cần phải tự tay cấp quyền cho các tài khoản này nếu muốn chúng có thể truy cập được một resource nào đó.

IAM Users và Policies

Giờ mình sẽ vào tab user ở trong IAM console:

Các bạn có thể thấy hiện tại mình chỉ có duy nhất 1 user “Tung”, user này đã được gắn policy truy cập cấp độ admin. Giả sử trong team của bạn có member Mark và bạn muốn Mark có thể truy cập bucket S3 thì phải làm như thế nào? Đương nhiên đầu tiên chúng ta cần tạo một tài khoản user cho Mark. Hãy ấn vào nút Add user:

Giờ các bạn hãy để ý mục Select AWS access type, bạn có thể thấy có hại loại access: Programmatic access và AWS Management Console access. Thực ra access type của AWS có thể coi là một chủ để nâng cao thế nên mình sẽ chỉ tóm tắt cho các bạn biết các loại type này là gì vì một số bài viết trong series sẽ có đề cập đến chúng:

  • Programmatic access: với những người cần truy cập trực tiếp một resource AWS nào đó thông qua một ứng dụng mà họ đang phát triển hoặc thông qua giao diện dòng lệnh, bạn sẽ cần phải cung cấp cho họ một access key và một secret access key. Chúng là những thông tin đăng nhập đã được mã hóa, cho phép người dùng có thể log in và truy cập các resource AWS mà không cần phải nhập tay một mật khẩu nào đó. Đây là một cách an toàn để một admin hoặc một developer nào đó có được khả năng truy cập các resource AWS mà không thông qua console quản lý của AWS.
  • AWS Management Console access: access type này sẽ giúp bạn có thể cho phép một user log in vào console quản lý AWS và qua đó truy cập tới các service AWS.

Ở ví dụ này, mình sẽ chỉ sử dụng AWS Management Console access. Tiếp theo bạn có thể set password cho user rồi ấn vào nút next:

Giả sử ngay ở bước này, user Mark đã được tạo thành công và Mark thử truy cập bucket S3 thì anh ta sẽ nhận được thông báo accesss denied, bởi vì như mình đã đề cập ở phần trước, khi một account user được tạo ra, mặc định nó sẽ không có quyền truy cập bất kì resource AWS nào cả và ban sẽ phải chỉ rõ từng quyền cho nó.

Vậy thì, để cung cấp full quyền truy cập S3 cho Mark, bạn hẫy chọn tab “Attach existing policies directly” rồi gõ “S3” vào ô filter để lọc ra các policy về S3, check vào “AmazonS3FullAccess” rồi ấn Next:

Ấn next tiếp để sang màn Tags rồi Next sang màn review và ấn Create user. Như vậy là bạn đã tạo thành công tài khoản user cho Mark với toàn quyền truy cập S3:

Hãy để ý trong thông báo có một đường link dẫn tới console quản lý AWS, url này khác với url dành cho root user, nó dành riêng cho user vừa được tạo ra. Tượng tự bạn có thể tạo nhiều user cùng một lúc, họ sẽ có chung một mật khẩu và url tới console quản lý AWS giống nhau.

IAM Groups và Policies

Ở phần trước, chúng ta đã học cách gắn policy cho một user để cấp quyền truy cập cho user đó. Nhưng nếu như chúng ta cần phải cấp quyền truy cập giống nhau cho 20 user hoặc thậm chí là 100 user? Lúc này, để có thể quản lý quyền truy cập một cách hiệu quả thì thay vì phải gắn policy cho từng user, chúng ta có thể tạo một group các user và gắn policy cho group đó.

Hãy ấn vào tab User groups và chọn Create group:

Mình sẽ đặt tên cho group này là “Dev”. Hãy chọn các user bạn muốn đưa vào group:

ở phía dưới là phần gắn policy cho group:

Vậy là bạn đã tạo thành công một group với các member có quyền truy cập tới S3 như đã được gắn cho group:

Giiả sử user Adrian trong group chúng ta vừa tạo cần quyền truy cập tới một resource khác không phải S3 nhưng các user còn lại thì không cần. Lúc này bạn có thể gắn thêm policy trực tiếp cho Andrian hoặc có thể tạo ra một group khác và add Andrian vào group đó, rồi tiếp đó gắn policy cho group mới này. Khi đó, Andrian, Mark và James vẫn đều có quyền truy cập giống nhau tới S3, và Andrian sẽ có thêm các quyền truy cập ở group thứ hai mà chúng ta vừa tạo ra.

Việc tạo group user là một practice được khuyên dùng thay cho việc gắn policy trực tiếp cho từng user.

IAM Roles

Không chỉ có các user mới cần truy cập tới các resource AWS. Đôi khi, các service khác của AWS cũng cần truy cập tới các resource khác nhau.

Giả sử, bạn có một ứng dụng chạy trên một server EC2 cần truy cập tới file được lưu ở bucket S3. Có lẽ bạn sẽ nghĩ đơn giản là chúng ta chỉ cần gắn policy cho EC2 để cấp quyền truy cập tới S3. Nhưng thực ra không phải vậy, khác với user hoặc group là các identity, EC2 là một resource nên policy của nó sẽ không dùng để chỉ rõ nó có thể access resouce nào, mà lúc này policy của nó dùng để chỉ rõ những identity nào có thể truy cập tới nó. Do đó AWS có một feature khác là Role, có nghĩa là chúng ta sẽ cần tạo ra một IAM Role để role này có thể cấp quyền truy cập S3 cho EC2.

Đầu tiên, hãy mở tab roles vầ ấn vào Create role:

Ở phía trên màn hình bạn có thế thấy một thứ gọi là “trusted entity”. Đây là một chủ đề khá là nâng cao nên mình xin phép không đề cập tới nó ở đây. Chúng ta sẽ tập trung vào làm thế nào để gắn một role cho một service AWS để cấp quyền cho nó truy cập các service khác. Vì chúng ta cần cấp quyền cho EC2 nên hãy chọn EC2 và ấn Next. Ở đây chúng ta có thể chọn policy cho role.

Search “S3” rồi chọn “AmazonS3FullAccess” rồi ấn Next sang màn tags rồi ấn Next tiếp. Đặt tên cho role mới, mình sẽ đặt là “EC2Role” và ấn Create role:

Vậy là chúng ta đã tạo thành công một role cấp quyền cho EC2 server truy cập S3 giống như các member trong group Dev có thể truy cập S3.

Hơn 14 năm hình thành và phát triển, AWS vẫn luôn giữ vững vị thế độc tôn của mình với tư cách là nền tảng đám mây toàn diện và được sử dụng rộng rãi nhất hiện nay.
Sau loạt bài viết về hệ thống chứng chỉ của AWS và kinh nghiệm ôn thi chứng chỉ AWS, Co-well Asia mang đến bạn loạt bài viết tiếp theo về các dịch vụ của AWS từ đơn giản đến chuyên sâu.

Vậy tại sao IAM lại là dịch vụ cần giới thiệu đầu tiên? Đơn giản là do ngay khi bắt đầu sử dụng AWS, IAM phải là khái niệm bạn hiểu rõ ràng nhất.

IAM [Identity and Access Management] là gì?

Hiểu một cách đơn giản, IAM [Identity and Access Management] hay Định dạng và Quản lý truy cập, là một dịch vụ cho phép chúng bạn kiểm soát truy cập một cách an toàn tới các tài nguyên của AWS.

  • Chia sẻ quyền truy cập vào AWS: Bạn có thể chia sẻ quyền truy cập vào AWS cho người khác mà không nhất thiết phải chia sẻ mật khẩu hay khóa truy cập.
  • Cấp quyền truy cập một cách chi tiết: Dễ dàng phân cấp quyền truy cập khác nhau cho những người dùng khác nhau. Bạn có thể chỉ định và giới hạn rõ ràng về quyền thao tác, hành động và tài nguyên người dùng được sử dụng.
  • Xác thực đa yếu tố [MFA]: Bạn có thể thêm xác thực 2 bước vào tài khoản của mình hay tài khoản của người dùng khác để tăng cường tính bảo mật. Đây là tính năng Co-well khuyên mọi người thiết lập trong quá trình sử dụng AWS.
  • IAM được cung cấp hoàn toàn miễn phí trên AWS.

Các thành phần trong IAM

Khi đăng kí sử dụng AWS, AWS sẽ cung cấp cho bạn định danh tài khoản [AWS Account ID] là một dãy số có 12 ký tự, ví dụ: 123456789012. ID này là duy nhất và sẽ không trùng lặp với các tài khoản AWS khác. Sau đó, bạn sẽ đăng nhập với tư cách là Người dùng gốc [Root user] – người có mọi quyền truy cập và thao tác đến TOÀN BỘ các tài nguyên trong AWS từ thông tin thanh toán đến quyền thay đổi mật khẩu…

Chính vì lẽ đó, để tối ưu hóa mức độ bảo mật, AWS khuyên người dùng của mình không nên sử dụng tài khoản Root User để đăng nhập. Thay vào đó, bạn hãy tạo một tài khoản User khác để sử dụng cho lần đăng nhập sau hoặc cho người khác sử dụng chung tài khoản AWS – AWS Account ID.

Từng thành phần trong IAM sẽ được liệt kê chi tiết như sau:

  • User: có 2 loại là Root User và IAM User.
    • Root User: Theo như nhắc đến ở trên, đây là thông tin đăng nhập của chủ sở hữu tài khoản AWS. Tài khoản này có quyền truy cập cao nhất tới mọi tài nguyên.
    • IAM User: Tài khoản được tạo bởi Root User. Bạn có thể kiểm soát quyền truy cập của IAM User tới các tài nguyên.
  • Group: Là một nhóm gồm nhiều User. Đồng thời, một User cũng có thể thuộc nhiều Group.
  • Role: Là một tập hợp các quyền để thực hiện truy cập các tài nguyên của AWS mà bạn cần. Role là một sự ủy nhiệm tạm thời để giải quyết các công việc khác nhau với vai trò khác nhau
  • Policy: Một đối tượng liên kết với User, Group hay Role có nghĩa vụ định nghĩa quyền của từng chủ thể. Một policy là những file dưới dạng JSON được đính kèm trực tiếp vào User, Group hay Role.

Policy sẽ có cấu trúc cơ bản như sau:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1571671788500", "Action":[ "actionX" ], "Effect":"Allow", "Resource":"arn:aws:s3:::sample/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "27.67.190.119/32" ] } } } ] }
  • Version: Phiên bản của ngôn ngữ Policy sử dụng
  • Statement: Thành phần chính của Policy. Statement chứa một câu lệnh hay một mảng câu lệnh riêng lẻ.
    • Sid [Statement ID]: Một ID tùy chọn cung cấp cho mỗi câu lệnh trong statement.
    • Effect: Chỉ định kết quả statement được cho phép hay từ chối [Allow / Deny].
    • Action: Mô tả một hay nhiều hành động cụ thể được phép hoặc từ chối.
    • Resource: chỉ định những tài nguyên được áp dụng trong các Action bởi định danh.
    • Condition: chỉ định các điều kiện bắt buộc để policy có hiệu lực.

Bạn có thể dễ dàng quản lý các thành phần trên tại mục Identity and Access Management [IAM] trên giao diện AWS Management Console.

Let’s try it!

Bạn hãy thử tạo một user CHỈ có quyền xem các đối tượng trong AWS IAM từ IP ở nơi bạn tin tưởng.

Tham khảo các bước thực hiện theo như link bên dưới:

[Techsharing] Create simple IAM User 2

Kết luận

Hiểu một cách ngắn gọn về IAM thì đây là dịch vụ giúp bạn xác thực và cấp quyền sử dụng tài nguyên AWS một cách dễ dàng.

Nếu như bạn hiện đang làm việc trên môi trường AWS với khách hàng nước ngoài, đặc biệt là khách hàng Nhật – những người rất đề cao tính bảo mật, khi các thành viên trong dự án đòi hỏi quyền truy cập vào các dịch vụ của AWS thì hãy ghi nhớ nằm lòng những điều sau:

  1. Bật tính năng xác thực 2 bước [MFA] đối với IAM User.
  2. Chỉ cung cấp quyền ĐẦY ĐỦ TỐI THIỂU cho đối tượng tương ứng. Tránh các trường hợp không cẩn thận mà cấp ngay quyền FullAccess.
  3. Tuyệt đối không được chia sẻ thông tin đăng nhập cũng như Access key cho member khác ngoài dự án hoặc member không liên quan.
  4. Giới hạn truy cập với địa chỉ IP của công ty.

Hy vọng những thông này sẽ giúp ích cho mọi người trong quá trình sử dụng và quản lý truy cập trong AWS. Hẹn mọi người trong những bài viết tiếp theo về các dịch vụ của AWS tại website của CO-WELL ASIA!

Trần Hữu Tài – CO-WELL Asia

Video liên quan

Chủ Đề