Skip to main content

Command Palette

Search for a command to run...

AWS 02. IAM service

Published
3 min read

IAM service?

IAM = Identity Access Management

IAM là một dịch vụ cung cấp khả năng xác thực và phân quyền truy cập cho:

  • User (người dùng) có thể truy cập và thao tác trên các resource (tài nguyên) của AWS.
  • AWS resource có thể truy cập và thao tác trên các AWS Resource khác.

1. User

Có 2 loại user:

  • Root user
  • IAM user

Root user: là tài khoản đăng ký AWS, nó có quyền hạn tối cao cho tài khoản AWS.

Một số lưu ý cho Root user:

  • Nên xóa access key của Root user
  • Tạo 1 IAM user có quyền là administrator để thao tác với AWS (không nên sử dụng trực tiếp Root user)

IAM user: là tài khoản được tạo ra từ Root user (hoặc IAM user có quyền admin). Và thường sử dụng trong việc cung cấp user account cho các thành viên tham gia quản lý, phát triển dự án. Mặc định IAM user sẽ không có bất cứ permission nào.

2. Group

Group là một nhóm các user kế thừa chung một số permission (trên hệ thống AWS) của group (eg: tạo user mới / upload file lên S3 bucket / ...)

3. Policies

Trước khi đi vào tìm hiểu Policies, thì ta nên biết rằng AWS phân các quyền hạn dựa trên các action (hành động tương tác vào resource) và gọi nó là permission

ví dụ: "s3:CreateBucket" là action cho phép tạo bucket (folder) trên S3 service.

Policy là đơn vị nhỏ nhất mà chúng ta (user) có thể tạo ra được để nhằm phân quyền cho user / group / role.

Để quản lý các Policy, chúng ta sẽ vào dịch vụ IAM sau đó điều hướng tới menu Policy

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

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}

Chúng ta phân tích 1 chút về Policy ở ví dụ trên:

  • Policy được tạo bằng 2 cách: Sử dụng Visual editor hoặc viết dưới dạng JSON document

BL_AWS02_2.png

BL_AWS02_3.png

  • Nội dung trong trường Statement là một mảng các AWS resource permissions
  • Trong mỗi một AWS resource permission thì ta quan tâm tới các thành phần: Effect Action Resource Condition
  • Effect (= Allow || Deny) nó thể hiện sự ảnh hưởng của các Action có được cho phép hay không (từ chối) trong Policy.
  • Action là các hành động được phép thao tác với resource.
  • Resource là tài nguyên được áp dụng các hành động trong Action field.
  • Condition là điều kiện để tăng tính security cho Policy. (eg: require MFA hoặc source IP)

**Lưu ý:

  • Nên đánh tag cho Policy để dễ kiểm soát (eg: đánh tag theo môi trường Dev | Staging | Product)

4. Role

Role được dùng để ủy quyền truy cập cho user hoặc AWS resources

Role sử dụng các Policies để set permission cho user hoặc AWS resources

Một ứng dụng của việc sử dụng role, đó là thiết lập role cho phép EC2 truy cập vào S3, thay vì chúng ta phải sử dụng cặp access/secret key để implement vào trong code của application chạy trên EC2, sau đó EC2 mới có thể gọi tới S3.

Thì bây giờ chúng ta sẽ set role cho EC2 là có quyền access vào S3, thì nghiễm nhiên application nằm trên EC2 có thể gọi tới S3 mà không cần tới access/secret key

14 views

More from this blog

zujs

35 posts