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

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

EC2 instance family restriction implementation

  • AWS cung cấp các instance families khác nhau trong EC2. Tùy thuộc vào yêu cầu khối lượng công việc của bạn - các families khác nhau sẽ đạt hiệu quả cao nhất về mặt chi phí. Đối với các môi trường như dev/test, bạn có thể giới hạn instance families trong account đó ở type General Purpose (đa năng) - tối ưu về chi phí.
  • Chúng ta sẽ tạo policy chỉ cho phép thực hiện các thao tác trên một vài instance family cụ thể. Điều này không chỉ hạn chế việc khởi chạy một EC2 instance mà còn hạn chế tất cả các hoạt động khác trên các service còn lại.
    • Noted: instance family là họ instance đại diện cho các tiêu chí như:
      1. C – Compute optimized
      2. R – Memory optimized
      3. M – General purpose
  1. Yêu cầu về Compute

    • Giả sử, dưới vai trò Cloud engineer, bạn nhận được yêu cầu của team Dev: cần các máy ảo thỏa mản tiêu chí như:
      1. Cấu hình phù hợp chạy cho development environments
      2. Chạy được kiến trúc CPU: x86 và Arm
      3. Chạy cho database vừa và nhỏ (small and medium databases)
      4. Máy ảo có thể dùng làm giải pháp code repositories
      5. Vì trong giai đoạn phát triển, nhu cầu sử dụng chỉ là General Purpose
  2. Lựa chọn Compute

    • Bạn cần vào trang EC2 của AWS để kiểm tra các Instance Family thỏa tiêu chí trên

    • Tại mục Instance Categories, chọn General Purpose

    EC2 instance types page

    • Ở mục Explore instance types, chọn vào các instance family và kiểm tra:
      1. Key technology để nắm tổng quan về chip, performance,…
      2. Ideal use cases để hiểu chi tiết hơn về các mục đích sử dụng,…

    Instance family details

    • Với các tiêu chí trên, có khá nhiều instance family phù hợp, nhưng trong khuôn khổ bài lab này, chúng ta sẽ chọn: T3, T4g, M5 vì:
      1. development environments : T3, T4g
      2. CPU Architecture
        • x86 : T3, M5
        • Arm : T4g
      3. Small and medium databases : M5, T3
      4. code repositories : T3, T4g
      5. General Purpose : T3, T4g, M5
  3. Tạo IAM Policy chỉ cho phép user khởi tạo EC2 với instance family: T3, T4g, M5

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

    Accessing IAM console

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

    Creating a new 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

    Selecting JSON editor and Clearing the policy editor

    • Sao chép đoạn code sau vào khung Policy editor,
      • Với ý nghĩa: User có quyền tạo EC2 với instance family: T3, T4g, M5
    {
        "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.*",
                            "t4g.*",
                            "m5.*"
                        ]
                    }
                }
            }
        ]
    }
    

🔒 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 content

  • Cuộn xuống dưới và chọn Next.

  • Tại mục Policy name, nhập: EC2_FamilyRestrict

  • Tại mục Description, nhập: Restrict to all, except t3, t4g and m5 families

Naming and Descring policy

  • Cuộn xuống cuối trang và chọn Create policy

Completing policy creation

  1. Thêm policy EC2_FamilyRestrict vào group CostTest

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

    Selecting IAM group

    • Chọn Permissions

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

    Adding permissions to group

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

    Attaching the policy

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

    Reviewing attached policies

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

    Removing unnecessary policy

    • Kiểm tra policy của User
      • Chọn Users
      • Chọn TestUser

    Selecting test user

    • 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_FamilyRestrict
    • 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

  2. Kiểm tra Permissions policies cho Instance family: T4g

    • Đă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_T4g_FamilyRestrict

    Naming the instance

    • Tại mục Architecture, chọn ký hiệu tam giác , chọn 64-bit(Arm)

    • Tại mục Instance type, chọn ký hiệu tam giác, chọn t4g.micro

    • 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

    Selecting Arm architecture, t4g instance type and Launching without key pair

    • 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 family là T4g

    Successfully created T4g instance

  3. Kiểm tra Permissions policies cho Instance family: M6i

    • Chọn Launch instance

    • Tại mục Name, nhập EC2_M6i_FamilyRestrict

    Naming the denied 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 m6i.large
    • 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

    Selecting m6i instance type

    • 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_FamilyRestrict mà bạn đã khởi tạo ở bước 3.

    Launch failure for restricted instance

  4. Bạn có thể tiến hành thực hiện lại bước 5, tạo EC2 với instance family là T3 và M5 để kiểm tra tính hiệu quả permission policy: EC2_FamilyRestrict

⚠️ Warning Hãy nhớ terminate (xóa) các instance dùng cho mục đích kiểm thử sau khi xác nhận hoạt động thành công để tránh phát sinh chi phí không cần thiết. IAM policy chỉ giới hạn các loại instance có thể khởi tạo, nhưng không ngăn chặn việc tính phí đối với các instance đang chạy.