Amazon web service là một nền tảng cung cấp các dịch vụ điện toán đám mây cung câp các dịch vụ theo yêu cầu của cá nhân, công ty, tổ chức trên cơ sở trả tiền theo nhu cầu sử dụng. Hiện nay AWS đã vươn lên trở thành một trong những nhà cung cấp dịch vụ điện toán phổ biến nhất trên thế giới. Hiện tại mình đang tìm hiểu về những dịch vụ cơ bản và thường sử dụng của AWS dành cho developer vậy nên bắt đầu từ bây giờ, mình sẽ viết một series những bài viết về những dịch vụ mà mình học được. Bài đầu tiên, mình sẽ chia sẻ về AWS – IAM  (Quản lý nhận dạng và truy cập)

I. IAM là gì?

– IAM là viết tắt của Identity and Access Management, tạm dịch là “Quản lý nhận dạng và truy cập”, là một dịch vụ cho phép chúng ta quản lý, kiểm soát truy cập của người dùng vào các tài nguyên của AWS một cách an toàn và hiệu quả.

– IAM là trung tâm của AWS. Bất cứ một dịch vụ nào của AWS cũng phải thông qua AIM để kiểm soát quyền.

– Mặc định AWS khuyến nghị không sử dụng trực tiếp account root để đăng nhập mà thông qua những người dùng tạo bởi IAM để có thể đăng nhập, truy cập và sử dụng các tài nguyên của AWS.

– Tính bảo mật của AWS đều gói gọn trong 3 thành phần: User, Group và Roles

– Mỗi một user được tạo ra đều phải có quyền (permission) rõ ràng và phù hợp

– Những chính sách (Policies) đều được viết dưới dạng JSON

IAM cung cấp cho bạn một số tính năng sau:

  • IAM có quyền hạn cho toàn bộ hệ thống AWS
  • Quyền(permission) được quản lý bởi các chính sách (Policies)
  • MFA (xác thực đa yếu tố) có thể được thiết lập
  • Các chính sách (Policies) đã được định trước cho IAM
  • Ta có thể xem được thông tin chi tiết các chính sách (Policies)
  • Ta có thể cấp phép cho từng user thực hiện từng công việc nhỏ nhất, chi tiết nhất

 

II. Các thành phần của  IAM

AWS - IAM

1. Người dùng – Users

Mặc định khi ta tạo người dùng AWS thì người dùng đó sẽ là tài khoản root, có toàn quyền với hệ thống. Với người dùng này, ta có thể tạo thêm nhiều toàn khoản khác (users) và cấp những quyền hạn cho từng người dùng với từng mục đích khác nhau.

Người dùng ngoài tài khoản root, có những đặt điểm sau:
– Người dùng mới (new user): sẽ không có bất cứ quyền truy cập nào ngay khi được khởi tạo.

– Mỗi user sẽ được cấp cho một Access Key IDSecret Access Key dùng để xác thực khi truy cập và sử dụng tài nguyên của AWS. Tuy nhiên những giá trị này không thể dùng để đăng nhập vào AWS Console

– Chỉ có thể xem Access Key ID Secret Access Keys khi khởi tạo User, nếu quên thì sẽ cần tạo lại. Thường là sau khi khởi tạo người dùng sẽ có một file là credential.csv chứa thông tin user để chúng ta có thể lưu lại.

– 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.

 

2. Nhóm người dùng – Groups

Trong trường hợp ta có nhiều người dùng, và mỗi người dùng đều có những quyền truy cập tương tự như nhau thì ta sẽ gộp chúng chung vào một tập hợp và phân quyền cho tập hợp đó. Tập hợp những người dùng có chung quyền đó được gọi là nhóm người dùng – groups.

Đặc điểm của Nhóm – Groups

– Tất cả người dùng (users) nằm trong một nhóm thì đều được kế thừa những quyền được cấp cho nhóm đó

– Một nhóm có thể có từ 1 cho tới nhiều người dùng

– Một user có thể nằm trong 1 đến nhiều nhóm. Tối đa có thể được chỉ định vào 10 nhóm

– Mỗi Group sẽ mang một định danh – ID riêng được gọi là Group ARNGroup Amazon Resource Name

 

3. Vai trò – Roles

Ta đã biết IAM là trung tâm của AWS và các dịch vụ của AWS đều là riêng biệt với nhau nhằm mục đích đảm bảo khả năng vận hành ổn định một cách riêng rẽ cũng như bảo mật hơn. Chính vì vậy, để các dịch vụ có thể giao tiếp, trao đổi dữ liệu, tài nguyên với nhau thì IAM sẽ phải tạo ra một phương thức riêng biệt để đảm bảo về việc giao tiếp an toàn, bảo mật cũng như liên tục. Tính năng Vai trò – Roles chính là phương thức thực hiện công việc này.

 

4. Policies

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 đó. Các policy sẽ được áp dụng vào các đối tượng như người dùng (users), nhóm (groups) và vai trò (roles) khi chúng thực hiện một tác vụ nào đó liên quan đến quyền hạn của mình.

Policy được mô tả rõ ràng chúng dưới dạng JSON hoặc YAML và AWS định nghĩa 06 dạng Policy:

  • Identity base policy: gán quyền nhận thực cho user, group hoặc roles
  • Resource base policy: Gán quyền sử dụng resource, ví dụ điển hình là S3 bucket policy.
  • Permission boudaries: định nghĩa quyền hạn tối đa mà để gán cho đối tượng thay vì định nghĩa quyền hạn.
  • Organization SCPs: sử dụng dịch vụ kiếm soát AWS Organization để định nghĩa quyền hạn tối đa một tài khoản trong Organization hoặc đơn vị OU. SCP giới hạn quyền mà Identity base policy hoặc Resource base policy gán cho thực thể (user hoặc roles) trong account chứ không định nghĩa quyền hạn.
  • Access Control List (ACL): tương tự Resource base policy tuy nhiên không định dạng JSON.
  • Session Policy: Sử dụng cho trường hợp dùng AWS CLI hay API. Policy này giới hạn quyền tạo session chứ không gán quyền hạn.

Dưới đây là một ví dụ về Policy

 

 <code class="language-ruby">    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1571666184581",
          "Action": [
            "elasticbeanstalk:CreateApplication"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:elasticbeanstalk:ap-southeast-1:1234567:application/staging",
          "Condition": {
            "DateGreaterThan": {
              "aws:CurrentTime": "2019/10/18"
            }
          }
        }
      ]
    }

Version: Phiên bản của ngôn ngữ policy, nên sử dụng phiên bản mới nhất để đảm bảo mọi tính năng bạn sử dụng đều được hỗ trợ. Nếu như không khai báo version, thì mặc định version cũ nhất được sử dụng.

Statement: Mỗi một policy đều có ít nhất một statement, statement dùng để chỉ định action nào được thực thi và tài nguyên nào được truy cập. Statement gồm các thành phần

  • Sid: (statement ID) Là một chuỗi uniq dùng để nhận dạng statement
  • Effect: Là 1 thành phần bắt buộc và chỉ định kết quả statement được chấp nhận hoặc từ chối (Alllow/Deny)
  • Action: Mô tả hành động hoặc hành động cụ thể sẽ được phép hoặc bị từ chối.(ec2:CreateImage, ec2:CreateNetworkAcl…)
  • Principal: Là tài khoản/người dùng/role được cho phép hoặc bị từ chối truy cập vào tài nguyên AWS
  • Resource: Chỉ định những tài nguyên AWS được áp dụng trong các Action.
  • Condition: Chỉ định các điều kiện bắt buộc để policy có hiệu lực

III. Tổng kết

Như mình đã nêu ở trên, IAM là một trung tâm của AWS, nó quản lý việc truy cập và sử dụng tài nguyên của AWS một cách liên tục và an toàn, vậy nên việc tìm hiểu về nó là vô cùng quan trọng trước khi sử dụng các dịch vụ khác của AWS.
Hy vọng bài viết này giúp ích được cho các bạn. Mình sẽ tiếp tục chia sẻ nhiều hơn trong những bài tiếp theo.

Các bạn có thể tham khảo thêm thông tin về IAM ở trên document website của AWS:
https://docs.aws.amazon.com/iam/index.html

Verified by ExactMetrics