Cloudtrail là gì

Thử tưởng tượng rằng hàng ngày bạn và đồng nghiệp cần phải tạo rất nhiều tài nguyên trên AWS để phục vụ cho công việc. Vậy làm thế nào để đơn giản hóa quy trình quản lý, vận hành, theo dõi chi phí sử dụng? Một trong những phương pháp phổ biến là gắn thẻ (tagging). Không phải ai cũng có thể nhớ đến việc phải gắn thẻ các tài nguyên khi khởi tạo. Vì vậy việc tự động gắn thẻ (tagging) các tài nguyên là giải pháp tối ưu cho việc giảm thiểu admin-overhead.

Tổng quan về giải pháp Tagging

Cloudtrail là gì

  1. Người dùng khởi tạo tài nguyên trên AWS. Trong ví dụ này sẽ là khởi tạo EC2 Instance kèm với EBS Volume.
  2. AWS CloudTrail sẽ ghi lại API event.
  3. EventBridge sẽ triggered Lambda function, ví dụ như là event: RunInstance.
  4. Lambda function sẽ có nhiệm vụ gắn thẻ tài nguyên.

Khi Lambda function được triggered thành công với tài nguyên khởi tạo, nó sẽ gắn thẻ (tagging) tài nguyên với:

  • IAM User và Assume Role:
    • Key: Owner
    • Value: [email protected]
  • Root User:
    • Key: Owner
    • Value: Root

Cloudtrail là gì

Các bước cài đặt

Trước tiên hãy điểm qua một số dịch vụ mà bạn cần sử dụng trong bài viết này. Hầu hết chúng đều là những dịch vụ cốt lõi mà AWS cung cấp như: CloudTrail, EventBridge (một phiên bản nâng cấp cực “xịn xò” của CloudWatch Events), Lambda hay IAM policy,…

1. CloudTrail: Trail (Multi-region)

Cloudtrail là gì

AWS CloudTrail làm việc như một giám sát viên. Tất cả các hành động trên AWS account đều được CloudTrail ghi lại dưới dạng sự kiện. Trail là một cài đặt giúp bạn xử lý các sự kiện. Ví dụ: lưu vào S3, mã hóa với AWS KMS, …

Đầu tiên bạn cần phải có Trail để phát hiện và phản hồi các API event khi khởi tạo tài nguyên. Trail có thể tạo một cách dễ dàng trên AWS Console, tham khảo tại đây.

Với việc setup thành công, EC2 RunInstances API sẽ cung cấp cho bạn khá nhiều thông tin như thời gian tạo tài nguyên eventTime, id của EC2 instance mới tạo instanceID, userID của người khởi tạo tài nguyên principalId.

Cloudtrail là gì

Tìm hiểu thêm về AWS CloudTrail.

2. Lambda function

Cloudtrail là gì

AWS Lambda, được coi như Function as a Service (FaaS), một dịch vụ serverless dành cho lập trình viên không cần quan tâm đến hạ tầng khi chạy ứng dụng. Đúng như định nghĩa Function, Lambda chỉ chạy khi được gọi.

Để tạo Lambda function, đăng nhập vào AWS Console, chọn Lambda, tick vào Create Function. Chúng ta sẽ tạo một Lambda function với Runtime là Python 3.8. Copy đoạn code có sẵn trong GitHub Repo.

Cloudtrail là gì

Kéo xuống phần Basic settings và chỉnh Timeout thành 60s và Memory thành 128MB.

Cloudtrail là gì

Tìm hiểu thêm về Lambda.

3. Cấp quyền cho Lambda function

Cloudtrail là gì

Trong giao diện Lambda click vào tab Permission, tại đây sẽ có mục Execution role ấn vào Role name sẽ direct qua IAM tab. Tại đây chúng ta sẽ add thêm inline policy, chọn JSON tab và paste IAM policy dưới đây:


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes"
            ],
            "Resource": "*"
        }
    ]
}

Đoạn policy trên sẽ cho phép Lambda function có thể tìm thấy instance volume và gắn thẻ (tagging) cả EC2 instance lẫn instance volume. Ấn vào Review policy, nhập tên và Create policy.

Tìm hiểu thêm về IAM Policy.

4. Trigger Lambda function từ AWS EventBridge

Cloudtrail là gì

AWS EventBridge cung cấp luồng dữ liệu (các sự kiện,…) thời gian thực từ các ứng dụng của riêng bạn, và định tuyến dữ liệu đó tới các mục tiêu như AWS Lambda.

Ở phần này chúng ta sẽ dùng EventBrigde để triggered Lambda function.

Chọn Create rule. Tại mục này bạn cần phải define pattern theo các bước dưới đây:

  • Chọn Event pattern.
  • Ở mục Event matching pattern chọn Pre-defined pattern.
  • Tiếp theo trong mục Service provider và Service name chọn AWS và EC2.
  • Mục event type chọn AWS API Call via CloudTrail.
  • Cuối cùng là chọn Specific operation, tại đây bạn nhập vào RunInstance.

Cloudtrail là gì

Tìm hiểu về AWS EventBridge.

5. Kết quả và những điều cần lưu ý

Cloudtrail là gì

Sau khi thực hiện thành công những bước trên thì quá trình setup đã hoàn tất, bạn hoàn toàn có thể tạo thử một EC2 instance và chờ Lambda tự gắn tag vào trong instance bạn vừa khởi tạo.

Lưu ý:

  • Với cách làm này thì chỉ có những instance được khởi tạo sau khi cài đặt Lambda function mới được tự động gắn thẻ (tagging).
  • Bạn cần bật Multi-region trên CloudTrail để giải pháp này có thể hoạt động trên toàn bộ các Region.
  • CloudTrail cần một khoảng thời gian(có thể lên đến 1 giờ) cho đến khi EventBridge bắt đầu gọi (invoke) Lambda function.

Ngoài ra, bạn hoàn toàn có thể thêm giải pháp Instance Scheduler vào trong Lambda function để có thể tự động hóa khởi chạy và tạm dừng EC2 cũng như RDS instances theo giờ làm việc để tối đa hóa chi phí.

Amazon GuardDuty là gì?

Amazon GuardDuty là dịch vụ phát hiện mối đe dọa liên tục theo dõi khối lượng công việc và tài khoản AWS của bạn để phát hiện hoạt động có hại, đồng thời cung cấp các phát hiện bảo mật chi tiết nhằm nhận biết và khắc phục.

AWS config là gì?

AWS config là full managed service, cung cấp thông tin history cấu hình, báo notify thì có thay đổi về configuration để đảm bảo security và governance.