AWS CloudTrail
CloudTrail là một dịch vụ của AWS giúp theo dõi các sự kiện và lịch sử các cuộc gọi API trong tài khoản AWS của bạn. Nó cho phép bạn xem lại lịch sử của các hoạt động được thực hiện bởi người dùng, dịch vụ AWS hoặc ứng dụng của bạn thông qua giao diện điều khiển, SDK, CLI hoặc các dịch vụ AWS khác. CloudTrail có thể lưu trữ nhật ký của các sự kiện này trong CloudWatch Logs hoặc S3, giúp cho việc giám sát, quản trị, tuân thủ chính sách và phân tích bảo mật trở nên dễ dàng hơn. CloudTrail có thể áp dụng cho tất cả các khu vực trong tài khoản của bạn hoặc chỉ một khu vực cụ thể. Nếu một tài nguyên bị xóa trong AWS, bạn nên kiểm tra CloudTrail trước đó để phân tích các sự kiện liên quan và tìm hiểu nguyên nhân của việc xóa.
CloudTrail Diagram
CloudTrail là một dịch vụ cung cấp giám sát sự kiện (event monitoring) trong tài khoản AWS của bạn để hỗ trợ quản lý, tuân thủ và kiểm toán. Các thành phần của CloudTrail bao gồm SDK, CLI, IAM Users, AWS Console và IAM Roles để ghi lại các hoạt động API và sự kiện trong tài khoản AWS. Sau đó, dữ liệu nhật ký được lưu trữ trong CloudWatch Logs hoặc S3 Bucket. Bằng cách giám sát và kiểm tra dữ liệu nhật ký này, bạn có thể giám sát sự kiện trong tài khoản AWS của mình để đảm bảo tuân thủ quy trình, tìm kiếm thông tin hoạt động và xác định lỗi nếu có.
CloudTrail Events
CloudTrail Events là các sự kiện được ghi lại bởi AWS CloudTrail khi các hoạt động quản lý hoặc truy cập dữ liệu được thực hiện trong tài khoản AWS. Có hai loại sự kiện: sự kiện Quản lý và sự kiện Dữ liệu. Sự kiện quản lý là các hoạt động được thực hiện trên tài nguyên trong tài khoản AWS của bạn, ví dụ như cấu hình bảo mật hoặc cấu hình ghi nhật ký. Mặc định, các trail được cấu hình để đăng nhập các sự kiện quản lý. Sự kiện dữ liệu là các hoạt động truy cập cụ thể trên dữ liệu như truy cập đối tượng Amazon S3 hoặc thực thi chức năng AWS Lambda. Mặc định, các sự kiện dữ liệu không được đăng nhập. Sự kiện CloudTrail Insights là một loại sự kiện đặc biệt được tạo ra để giúp phân tích và đánh giá sự an toàn và tuân thủ quy định của hệ thống AWS của bạn.
CloudTrail Insights
CloudTrail Insights là tính năng cho phép phát hiện các hoạt động không bình thường trong tài khoản AWS của bạn như cung cấp nguồn lực không chính xác, vượt quá giới hạn dịch vụ, các hoạt động IAM AWS tăng đột biến hoặc thiếu sót trong các hoạt động bảo trì định kỳ. Tính năng này phân tích các sự kiện quản lý bình thường để tạo ra một hồ sơ cơ sở và tiếp tục phân tích các sự kiện ghi để phát hiện các mẫu không bình thường. Các bất thường xuất hiện trong bảng điều khiển CloudTrail và được gửi đến Amazon S3 và sẽ sinh ra một sự kiện EventBridge để giải quyết tự động các vấn đề này.
CloudTrail Events Retention
Các sự kiện này sẽ được lưu trữ trong CloudTrail trong vòng 90 ngày. Nếu muốn giữ các sự kiện lâu hơn thời gian này, ta có thể đưa chúng vào S3 và sử dụng công cụ Athena để truy vấn và phân tích dữ liệu.
Amazon EventBridge – Intercept API Calls
Tính năng Intercept API Calls của Amazon EventBridge cho phép bạn xác định các điều kiện nhất định và gửi thông báo hoặc kích hoạt các hành động tự động khi các cuộc gọi API được thực hiện trong AWS. Bạn có thể sử dụng tính năng này để giám sát các cuộc gọi API, xác thực các truy cập, bảo vệ các tài nguyên và đáp ứng nhanh chóng đến các vấn đề an ninh hoặc tuân thủ quy định. Khi một cuộc gọi API được thực hiện, Amazon EventBridge sẽ kiểm tra nó với các quy tắc của bạn, và nếu nó khớp với bất kỳ quy tắc nào, sẽ gửi một sự kiện tới các mục tiêu của bạn để thực hiện hành động xử lý tiếp theo.
Cloud Trail Hands On
Khi bạn vào CloudTrail › Dashboard bạn nhìn thấy chúng ta chưa tạo 1 Trails và Cloud Trail Insights nào, đồng thời chúng ta sẽ thấy các sự kiện đã được lưu lại tại Event history.
Bây giờ chúng ta vào tab Event history, bạn sẽ thấy lịch sử các event như dưới. Có 1 thông báo “Event history shows you the last 90 days of management events” có nghĩa là lịch sử sự kiện hiển thị cho bạn các sự kiện quản lý được thực hiện trong AWS trong vòng 90 ngày gần đây nhất. Các sự kiện quản lý bao gồm các hoạt động như tạo, sửa đổi, xóa tài nguyên trong tài khoản AWS của bạn, và thông tin chi tiết về các hoạt động này được lưu trữ trong Event history. Bạn có thể truy cập Event history trong AWS Management Console để xem các sự kiện quản lý đã được thực hiện và giúp bạn phát hiện các hoạt động không mong muốn trong tài khoản của mình.
Bạn cũng có thể filter event.
Bạn có thể vào 1 số event cụ thể để xem chi tiết event đó.
Vì sự kiện chỉ được lưu 90 ngày trở lại, nếu bạn muốn nhiều hơn thế chúng ta sẽ phải vào CloudTrail › Insights và bạn phải trả tiền cho điều đó, cho nên mình sẽ không làm điều này nhưng mình sẽ chỉ cho bạn cách để kích hoạt nó.
Đặt tên cho nó tại Trail name, chọn 1 bucket hoặc bạn có thể tạo 1 bucket mới. Trail log bucket and folder chính là thư mục để lưu sự kiện.
Nếu bạn muốn mã hoá các sự kiện hãy chọn Log file SSE-KMS encryption, Log file validation là quá trình kiểm tra tính toàn vẹn và độ tin cậy của các file log được tạo ra bởi các dịch vụ AWS. Khi các hoạt động được thực hiện trong tài khoản AWS, các thông tin về hoạt động đó sẽ được lưu lại trong các file log. Log file validation kiểm tra tính đúng đắn và xác thực rằng các file log này không bị sửa đổi hay thay đổi trái phép trong quá trình lưu trữ. Điều này giúp bảo vệ tính toàn vẹn của dữ liệu và đảm bảo rằng các file log có thể được sử dụng để phát hiện và giải quyết các vấn đề bảo mật. Nếu bạn cần gửi cảnh báo đến SNS thì hãy tích vào SNS notification delivery.
Bạn cũng có thể gửi các sự kiện đến CloudWatch Logs bằng cách enable nó. Phần IAM Role bạn có thể tạo mới nó hoặc sử dụng 1 IAM có sẵn.
Bạn có thể gắn tag cho nó hoặc bỏ qua, sau đó bấm next.
Trong AWS CloudTrail, “Choose log events” cho phép bạn chọn loại sự kiện nào sẽ được lưu trữ trong bản ghi CloudTrail. Có ba loại sự kiện chính được liệt kê trong danh sách này:
- Management events: các sự kiện quản lý được thực hiện trên tài nguyên trong tài khoản AWS của bạn. Điều này bao gồm các hoạt động như cấu hình bảo mật, thiết lập quy tắc định tuyến dữ liệu và cấu hình ghi nhật ký.
- Data events: các sự kiện về hoạt động trên dữ liệu. Mặc định, các sự kiện này không được ghi lại do thường có số lượng lớn. Ví dụ: hoạt động tại mức đối tượng trên Amazon S3 (GetObject, DeleteObject, PutObject) và hoạt động thực thi chức năng AWS Lambda (Invoke API).
- Insights events: các sự kiện được sử dụng để phát hiện hoạt động không bình thường trong tài khoản của bạn. Ví dụ: sự cố trong quá trình cấu hình tài nguyên, vượt quá giới hạn dịch vụ, tăng đột biến các hoạt động IAM AWS và thiếu sót trong các hoạt động bảo trì định kỳ.
Bằng cách chọn loại sự kiện cần ghi lại, bạn có thể tinh chỉnh và tối ưu hóa việc theo dõi tài khoản AWS của mình trong AWS CloudTrail.
Management events bao gồm các sự kiện quản lý được thực hiện trên các tài nguyên trong tài khoản AWS của bạn, bao gồm các hoạt động như tạo, xóa và sửa đổi tài nguyên. Read events liên quan đến các hoạt động đọc thông tin tài nguyên, trong khi Write events liên quan đến các hoạt động thay đổi tài nguyên. AWS KMS là dịch vụ quản lý khóa của AWS và các sự kiện liên quan đến KMS có thể được loại trừ để giảm lượng dữ liệu log.
Với tính năng này, bạn có thể tùy chỉnh nhật ký sự kiện để chỉ bao gồm các hoạt động quản lý cụ thể mà bạn muốn giám sát và theo dõi. Bằng cách chỉ định các loại sự kiện cụ thể mà bạn muốn bao gồm hoặc loại trừ khỏi nhật ký sự kiện, bạn có thể cân chỉnh độ chi tiết của thông tin log và giảm lượng dữ liệu phải xử lý.
Bạn cũng có thể lựa chọn nguồn của sự kiện là gì, ví dụ của tôi là s3 hoặc bạn có thể bấm thêm nguồn event bằng cách bấm vào Add data event type.
Và chọn nguồn là Lambda chẳng hạn. Tính năng “Input function as ARN và All regions tại Lambda function Select the function you want to log” trong AWS Lambda cho phép người dùng chọn các hàm Lambda mà họ muốn ghi nhật ký (log). Khi hàm được chọn, Lambda sẽ ghi lại tất cả các sự kiện liên quan đến hàm đó, bao gồm cả các lời gọi của hàm, thời gian thực thi, mã lỗi và nhiều thông tin khác liên quan đến hàm.
Nếu người dùng chọn tùy chọn “All regions”, Lambda sẽ ghi nhật ký cho tất cả các khu vực AWS mà hàm được triển khai. Điều này cung cấp cho người dùng khả năng quản lý tất cả các hoạt động của hàm Lambda trên nhiều khu vực trong AWS.
Bạn sẽ nhận được thông báo Insights enabled nếu bạn đã tích vào Insights events ở phần Event phía trên.
Và để đỡ tốn chi phí thì mình sẽ bỏ tích ở Data events và Insights events.s
Khi đó chúng ta sẽ có màn hình next như thế này.
Cuối cùng chúng ta bấm vào Create trail.
Như vậy Trails của mình đã được tạo.
Bạn có thể vào CloudWatch › CloudWatch Logs › Log groups để xem sự kiện của chúng ta đã xuất hiện tại đây.
Và ở trong S3.
Chúng ta có thể tạo ra 1 sự kiện bằng cách tạo keypair như sau:
Tại CloudWatch các sự kiện cũng đã xuất hiện.
Và trong S3, chúng ta cũng có các thông tin đã được lưu tại đây.
Và điều thú vị ở đây là bạn có thể sử dụng Athena để truy vấn các bản ghi này bằng cách bấm vào Create Athena table.
Và chọn 1 bảng logs ngay tại đây.
Thông báo dưới cho biết bạn đã tạo Athena table thành công.
Hãy vào Athena.
Bấm vào nút 3 chấm ở bên table và chọn Preview table.
Nếu bây giờ bạn truy vấn thì sẽ có lỗi bởi vì Athena chưa biết truy vấn từ nguồn dữ liệu nào, mình sẽ bấm vào set up a query result location in Amazon S3 để chỉ nguồn dữ liệu cho nó.
Ví dụ như vậy.
Và bây giờ nếu bạn truy vấn thì lỗi sẽ không còn.
Và đây là kết quả data khi bạn truy vấn thành công.