Giới hạn sử dụng EC2 theo Instance type

Giới hạn sử dụng EC2 theo Instance Type

EC2 instance type restriction implementation

  • Giả sử, sau một thời gian monitoring EC2 cho môi trường dev/test - được phép khởi tạo các Instance Family: T3, T4g, M5! Bạn thấy rằng, team dev thường xuyên sử dụng Instance Family là T3 với Instance Type là t3.small và t3.large.

  • Sau khi hội ý với Tech lead, với tinh thần cost optimization bằng least-privilege permissions, bạn tiếp tục tạo ra một Permissions policies mới cho môi trường dev/test, tránh các lỗi human-error trong việc tạo ra các instance có cấu hình như m5.4xlarge(16 vCPU, 64 GiB ram) mà có thể không dùng hết hiệu năng - gây lãng phí.

  1. Tạo IAM Policy chỉ cho phép user khởi tạo EC2 với instance type: t3.small và t3.large

    • Trong AWS console, tại khung search, nhập IAM
    • Chọn dịch vụ IAM

    Accessing the IAM console

    • Tại bên trái màn hình, chọn Policies
    • Chọn Create policy

    Creating a new IAM policy

    • Tạo policy theo kiểu định dạng dữ liệu JSON thay vì Visual. Chọn JSON

    • Quét toàn bộ đoạn code hiện tại và bấm nút Delete

    • Sao chép đoạn code sau vào khung Policy editor, cuộn xuống dưới và chọn Next.

      • Với ý nghĩa: User có quyền tạo EC2 với instance type: t3.small và t3.large
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ec2:*",
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": "ec2:RunInstances",
                "Resource": "arn:aws:ec2:*:148922931563:instance/*",
                "Condition": {
                    "StringNotLike": {
                        "ec2:InstanceType": [
                            "t3.small",
                            "t3.large"
                        ]
                    }
                }
            }
        ]
    }
    

    🔒 Security Note Ở dòng Resource, thay thế dãy 12 con số bằng AWS account ID của bạn. Chọn ký hiệu tam giác, sau đó chọn ký hiệu ô vuông để copy AWS account ID

    Policy editor with instance type restrictions

    • Tại mục Policy name, nhập: EC2_InstanceTypeRestrict
    • Tại mục Description, nhập: Restrict to all, except t3.small & t3.large
    • Cuộn xuống cuối trang và chọn Create policy

    Completing policy creation

  2. Thêm policy EC2_InstanceTypeRestrict vào group CostTest

    • Tại IAM Console, mục bên trái - chọn User groups
    • Chọn CostTest

    Selecting the user group

    • Chọn Permissions

    • Chọn Add permissions, chọn Attach policies

    Adding permissions to group

    • Tại khung search 🔍, nhập EC2_InstanceTypeRestrict.
    • Tích vào ký hiệu ô vuông để chọn policy, chọn Attach policies

    Attaching the instance type restriction policy

    • Kiểm tra Permissions policies
      • Lúc này trong group CostTest đã có policy EC2_InstanceTypeRestrict và policy EC2_FamilyRestrict mà bạn đã tạo ở bài lab 8.2

    Reviewing attached policies

💡 Pro Tip Để tuân thủ nguyên tắc quyền tối thiểu (least privilege), hãy gỡ bỏ policy EC2_FamilyRestrict có phạm vi quyền rộng hơn, vì policy giới hạn loại instance mới đã cung cấp mức kiểm soát chi tiết và chính xác hơn.

- Loại bỏ policy **EC2_FamilyRestrict** vì tiêu chí **least-privilege permissions**
- Tích vào ký hiệu ô vuông **□** để chọn policy, chọn **Remove**

Removing the broader policy

- Kiểm tra policy của **User**
    - Chọn **Users**
    - Chọn **TestUser**
    - Lúc này, tại IAM User: **TestUser**, trong mục Policy Name bạn thấy có sự xuất hiện của policy **EC2_InstanceTypeRestrict**
    - Tại mục **Attached via** - Group CostTest, có nghĩa là các policy này được gán vào User thông qua group, chứ không phải được gán trực tiếp vào User. 
    - -> Điều này thỏa Best pratice của AWS về việc quản lý quyền tập trung thông qua Group

Verifying user permissions

  1. Kiểm tra Permissions policies cho Instance Type: t3.small

    • Đăng nhập vào TestUser bằng thông tin mà bạn đã tạo ở bài lab 8.1, bước 4
    • Đảm bảo, bạn đang ở Region Singapore
    • Tại khung search 🔍, nhập EC2
    • Tại giao diện EC2, giữa trang, chọn Launch instance
    • Tại mục Name, nhập EC2_InstanceTypeRestrict

    Launching a new instance

    • Tại mục Architecture, giữ nguyên giá trị 64-bit (x86)

    • Tại mục Instance type, chọn ký hiệu tam giác, nhập t3.small

    • Tại mục key pair name, chọn ký hiệu tam giác, chọn Proceed without a key pair (Not recommended)

    • Chọn Launch instance

    Configure and launch instance

    • Chọn Instance ID vừa được tạo thành công

    Viewing the new instance

    • Chúc mừng bạn đã tạo thành công EC2 với instance type là t3.small

    Successfully created t3.small instance

  2. Kiểm tra Permissions policies cho Instance type: m5.4xlarge

    • Chọn Launch instance

    • Tại mục Name, nhập EC2_m5.4xlarge

    Naming the test instance

    • Tại mục Architecture, giữ nguyên giá trị 64-bit(x86)
    • Tại mục Instance type, chọn ký hiệu tam giác, chọn m5.4xlarge
    • Tại mục key pair name, chọn ký hiệu tam giác, chọn Proceed without a key pair (Not recommended)
    • Chọn Launch instance

    Cofigure and launch instance

    • Bạn đã nhận được phản hồi Instance launch failed (khởi tạo instance thất bại) - vì bạn không được ủy quyền. Điều này thỏa với permission policy: EC2_InstanceTypeRestrict mà bạn đã khởi tạo ở bước 3.

    Launch failure for restricted instance type

  3. Bạn có thể tiến hành thực hiện lại bước 3, tạo EC2 với instance type t3.large để kiểm tra tính hiệu quả permission policy: EC2_InstanceTypeRestrict