Tác giả: Calvin Bock và Peter-John Morgenrood
Ngày phát hành: 30 JAN 2026
Chuyên mục: AWS Client VPN, Networking & Content Delivery
AWS Client VPN là một dịch vụ VPN dựa trên client được quản lý, cho phép bạn truy cập an toàn vào các tài nguyên Amazon Web Services (AWS) và các tài nguyên trong mạng tại chỗ của bạn. Amazon CloudWatch Logs Insights cho phép bạn tìm kiếm và phân tích dữ liệu nhật ký của mình một cách tương tác trong Amazon CloudWatch Logs. Bạn có thể thực hiện các truy vấn để giúp bạn phản ứng hiệu quả và nhanh chóng hơn với các vấn đề vận hành.
Việc giám sát và báo cáo về việc sử dụng dịch vụ Client VPN là rất quan trọng để hiểu chi phí và hoạt động mạng. Điều này đặc biệt quan trọng khi sử dụng full tunnel thay vì split tunneling. Tuy nhiên, việc tạo các báo cáo sử dụng tùy chỉnh có thể tốn thời gian. Bài viết này chỉ ra cách sử dụng CloudWatch Logs Insights và AWS CloudFormation để tự động hóa việc tạo các truy vấn được định nghĩa trước nhằm tạo ra các báo cáo bạn cần.
Thách thức
Nhiều người dùng gặp khó khăn trong việc tạo báo cáo cho dịch vụ Client VPN của họ một cách hiệu quả. Việc tạo báo cáo thủ công tốn nhiều thời gian, đặc biệt khi triển khai tới nhiều tài khoản AWS. Quá trình này thường dễ xảy ra lỗi, dẫn đến các sai sót tiềm ẩn và lãng phí tài nguyên.
Tổng quan giải pháp
Trong bài viết này, chúng tôi hướng dẫn bạn triển khai một quy trình báo cáo nhất quán bằng cách sử dụng CloudFormation. Giải pháp này giảm thiểu rủi ro lỗi của con người khi triển khai vào nhiều tài khoản AWS và hợp lý hóa quy trình tạo báo cáo.
Người dùng có thể sử dụng CloudFormation để triển khai một quy trình lặp lại để tạo báo cáo sử dụng, từ đó giảm thiểu rủi ro lỗi của con người, như được minh họa trong hình sau.

Hình 1: Kiến trúc giải pháp CloudFormation tạo báo cáo Log Insight
Client VPN ghi nhật ký các chỉ số kết nối trong CloudWatch Logs. Dữ liệu người dùng cho bất kỳ kết nối nào của người dùng được ghi nhật ký dưới dạng nhật ký “connection-log-type”: “connection-reset”, chẳng hạn như Client VPN ID, tên người dùng, common-name, ingress/egress bytes và thời gian kết nối. Giải pháp của chúng tôi sử dụng các nhật ký này làm nguồn dữ liệu phong phú để tạo báo cáo sử dụng.
Đối với người dùng có yêu cầu bảo mật nâng cao, CloudWatch Logs hỗ trợ mã hóa dữ liệu nhật ký khi lưu trữ bằng AWS Key Management Service (AWS KMS). Tính năng này cho phép bạn mã hóa dữ liệu nhật ký của mình bằng các khóa KMS riêng, cung cấp một lớp bảo mật khác cho thông tin sử dụng VPN nhạy cảm. Thông tin chi tiết hơn về việc ghi nhật ký kết nối có thể được tìm thấy trong tài liệu, chẳng hạn như ví dụ về mục nhật ký kết nối.
{ "connection-log-type": "connection-reset", "connection-attempt-status": "NA", "connection-attempt-failure-reason": "NA", "connection-id": "cvpn-connection-0205ab4a2bEXAMPLE ", "client-vpn-endpoint-id": " cvpn-endpoint-0102bc4c2eEXAMPLE", "transport-protocol": "udp/tcp", "connection-last-update-time": "2021-02-09 14:18:52", "client-ip": "192.168.0.50", "common-name": "client1.company.com", "username": "username-xyz", "device-type": "mac/windows/linux", "device-ip": "123.124.125.126", "port": "12345", "ingress-bytes": "3766", "egress-bytes": "5177", "ingress-packets": "28", "egress-packets": "62", "connection-end-time": "2021-02-09 14:18:52", "connection-reset-status": "NA", "connection-duration-seconds": "65"}
Hãy xem xét các trường được trình bày trong đầu ra JSON của mục nhật ký kết nối. Tùy thuộc vào loại truy vấn bạn muốn chạy, bạn có thể lọc dữ liệu dựa trên các trường này hoặc tổng hợp dữ liệu dựa trên các trường này. Trong ví dụ này, chúng tôi sử dụng các trường sau:
| Field : | Example : |
|---|---|
| The Client VPN ID | “connection-id”: “cvpn-connection-0205ab4a2bEXAMPLE “ |
| Username (for Active Directory (AD) and Federated Auth) | “username”: “username-xyz” |
| Common-name (for Mutual Authentication) | “common-name”: “client1.company.com” |
| Ingress-bytes | “ingress-bytes”: “3766” |
| Egress-bytes | “egress-bytes”: “5177” |
| Connection start/end times | “connection-start-time”: “2021-02-09 14:17:47”, “connection-end-time”: “2021-02-09 14:18:52” |
| Connection duration seconds | “connection-duration-seconds”: “65” |
Chúng tôi đã phát triển một mẫu CloudFormation để tạo và duy trì các truy vấn CloudWatch Logs Insights hữu ích trên một bảng điều khiển CloudWatch. Mẫu này cung cấp các truy vấn cho những điều sau:
a. Tổng mức sử dụng cho mỗi Client VPN Endpoint: Tóm tắt các số liệu thống kê sử dụng tổng thể (số lượng kết nối, truyền dữ liệu, thời gian kết nối và người dùng duy nhất) cho mỗi điểm cuối VPN.
b. Thời lượng kết nối của người dùng AD hoặc SAML Auth: Hiển thị thông tin kết nối chi tiết cho người dùng được xác thực bằng AD hoặc SAML, chẳng hạn như thời lượng kết nối tính bằng phút.
c. Thời lượng kết nối của người dùng AD hoặc SAML Auth riêng biệt: Tổng hợp số liệu thống kê kết nối cho người dùng được xác thực bằng AD hoặc SAML riêng biệt.
d. Người dùng AD hoặc SAML Auth riêng biệt: Liệt kê người dùng được xác thực bằng AD hoặc SAML riêng biệt và điểm cuối VPN được sử dụng lần cuối của họ.
e. Báo cáo tổng mức sử dụng AD hoặc SAML Auth: Cung cấp bản tóm tắt tổng mức sử dụng cho mỗi người dùng được xác thực bằng AD hoặc SAML.
f. Thời lượng kết nối của người dùng Mutual Auth: Hiển thị thông tin kết nối chi tiết cho người dùng được xác thực lẫn nhau, chẳng hạn như thời lượng kết nối tính bằng phút.
g. Thời lượng kết nối của người dùng Mutual Auth riêng biệt: Tổng hợp số liệu thống kê kết nối cho người dùng được xác thực lẫn nhau riêng biệt.
h. Người dùng Mutual Auth riêng biệt: Liệt kê người dùng được xác thực lẫn nhau riêng biệt và điểm cuối VPN được sử dụng lần cuối của họ.
i. Báo cáo tổng mức sử dụng Mutual Auth: Cung cấp bản tóm tắt tổng mức sử dụng cho mỗi người dùng được xác thực lẫn nhau.
j. Thời lượng kết nối của người dùng Mix Auth: Hiển thị thông tin kết nối chi tiết cho tất cả người dùng (các loại xác thực hỗn hợp), chẳng hạn như thời lượng kết nối tính bằng phút.
k. Thời lượng kết nối của người dùng Mix Auth riêng biệt: Tổng hợp số liệu thống kê kết nối cho người dùng riêng biệt trên tất cả các loại xác thực.
l. Người dùng Mix Auth riêng biệt: Liệt kê người dùng riêng biệt trên tất cả các loại xác thực và điểm cuối VPN được sử dụng lần cuối của họ.
m. Báo cáo tổng mức sử dụng Mix Auth: Cung cấp bản tóm tắt tổng mức sử dụng cho mỗi người dùng trên tất cả các loại xác thực.
Bạn có thể triển khai mẫu này vào tài khoản AWS của mình để các truy vấn này có thể xem được từ tab truy vấn đã lưu của CloudWatch Logs Insights.
Điều kiện tiên quyết
Người dùng triển khai mẫu CloudFormation này cần các quyền AWS Identity and Access Management (IAM) sau:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:UpdateStack", "cloudformation:DeleteStack", "logs:PutQueryDefinition", "logs:DeleteQueryDefinition", "cloudwatch:PutDashboard", "cloudwatch:DeleteDashboards" ], "Resource": "*" } ]}
Hướng dẫn
Các bước sau đây sẽ hướng dẫn bạn thực hiện giải pháp.
1. Triển khai mẫu CloudFormation
Để bắt đầu, bạn có thể triển khai mẫu CloudFormation trong tài khoản AWS của mình. Mẫu này cho phép bạn chỉ định tên thư mục để tổ chức các truy vấn trong bảng điều khiển CloudWatch Logs Insights.
a. Tải mẫu CloudFormation về máy cục bộ của bạn.
b. Truy cập bảng điều khiển CloudFormation trong AWS Region nơi các hệ thống tệp điều kiện tiên quyết của bạn được đặt.
c. Chọn Create stack (Tạo stack) và sau đó chọn With new resources (standard) (Với tài nguyên mới (tiêu chuẩn)).
d. Trên trang Create stack (Tạo stack), chọn Upload a template file (Tải lên tệp mẫu) và sau đó chọn mẫu CloudFormation, CloudWatch_Dashboard_ClientVPN.yml, đã tải xuống trước đó.
e. Cung cấp đầu vào cho các tham số cần thiết sau:
- Stack Name: Tên của stack này.
- Folder: Thư mục để lưu trữ các truy vấn, có thể xem được từ tab truy vấn đã lưu của CloudWatch Insights. Giá trị mặc định là aws-client-vpn.
- ClientVPNLogGroup: Tên của CloudWatch Log Group của Client VPN. Trong bài viết này, chúng tôi sử dụng nhóm nhật ký có tên “aws/aws-client-vpn/prod/”
Ví dụ cấu trúc nhóm nhật ký:
/aws/client-vpn |- /prod |- /AD-log-stream-endpoint-1234abca |- connection-logs | - /SAML-log-stream-endpoint-1234abcb |- connection-logs | - /MutualAuth-log-stream-endpoint-1234abcc |- connection-logs
Để giúp quản lý các truy vấn và bảng điều khiển mẫu dễ dàng, chúng tôi khuyên bạn nên sử dụng một CloudWatch Log Group chung với một Log Stream riêng cho mỗi loại điểm cuối nếu bạn có nhiều điểm cuối với các phương thức xác thực khác nhau. Cách tiếp cận này được thể hiện trong ví dụ cấu trúc Log Group.
f. Chọn Next (Tiếp theo) trên trang Configure stack options (Cấu hình tùy chọn stack).
g. Chọn Submit (Gửi) trên trang Review and create (Xem lại và tạo).
h. Stack sẽ được triển khai trong khoảng mười giây. Trong bảng điều khiển CloudFormation, đợi stack có trạng thái CREATE_COMPLETE. Sau đó, chọn stack của bạn và tab Outputs (Đầu ra).

Hình 2: Tab Outputs của CloudFormation liên kết đến bảng điều khiển Log Insights
Chọn liên kết dưới cột Value (Giá trị) sẽ đưa bạn đến bảng điều khiển Log Insights, như được hiển thị trong hình trên.
2. Sử dụng các truy vấn
Khi được triển khai, bạn có thể tìm thấy các truy vấn đã lưu trong bảng điều khiển CloudWatch Logs Insights dưới thư mục đã chỉ định (aws-client-vpn). Từ đó, bạn có thể chạy và tùy chỉnh các truy vấn để tạo các báo cáo cần thiết, như được hiển thị trong Hình 3.

Hình 3: Bảng điều khiển CloudWatch Log Insights hiển thị các truy vấn Client VPN đã lưu
3. Sử dụng bảng điều khiển
Bảng điều khiển CloudWatch mới được tạo cung cấp một cái nhìn toàn diện về các mẫu sử dụng Client VPN của bạn. Các bước sau đây chỉ ra cách tận dụng tối đa nó.
Truy cập bảng điều khiển
Sau khi triển khai stack CloudFormation, hãy tìm DashboardUrl trong phần Outputs (Đầu ra), như được hiển thị trong Hình 2. Chọn liên kết này để mở trực tiếp bảng điều khiển của bạn.
Hiểu bố cục
Bảng điều khiển được tổ chức thành nhiều widget, mỗi widget đại diện cho một khía cạnh khác nhau của việc sử dụng VPN. Chúng được sắp xếp từ trên xuống dưới, bao gồm tổng mức sử dụng, các chỉ số cụ thể theo xác thực và dữ liệu cụ thể theo người dùng, như được hiển thị trong Hình 4.

Hình 4: Bảng điều khiển CloudWatch hiển thị Báo cáo tổng mức sử dụng AD hoặc SAML Auth
Giải thích dữ liệu
Tổng mức sử dụng cho mỗi Client VPN Endpoint: Widget hàng đầu này cung cấp cho bạn cái nhìn tổng quan về mức sử dụng trên tất cả các điểm cuối VPN của bạn. Tìm kiếm các mẫu trong truyền dữ liệu và thời gian kết nối, như được hiển thị trong Hình 5.

Hình 5: Bảng điều khiển CloudWatch Log Insights hiển thị Tổng mức sử dụng cho mỗi điểm cuối VPN
Báo cáo cụ thể theo xác thực: Các phần riêng biệt cho AD/SAML, Mutual Auth và Mixed Auth cung cấp thông tin chi tiết về các mẫu sử dụng cho các phương thức xác thực khác nhau, như được hiển thị trong Hình 6.

Hình 6: Bảng điều khiển CloudWatch Log Insights hiển thị Tổng mức sử dụng Mutual Auth
Người dùng riêng biệt: Các widget này giúp bạn theo dõi số lượng người dùng duy nhất và các mẫu sử dụng của họ, điều này rất quan trọng cho việc lập kế hoạch dung lượng và kiểm tra bảo mật, như được hiển thị trong Hình 7.

Hình 7: Bảng điều khiển CloudWatch Log Insights hiển thị Thời lượng kết nối của người dùng riêng biệt Mixed Auth
Sử dụng các điều khiển phạm vi thời gian
Ở đầu bảng điều khiển, sử dụng bộ chọn phạm vi thời gian (1h, 3h, 1d, 1w và tùy chỉnh) để điều chỉnh khoảng thời gian bạn đang xem dữ liệu, như được hiển thị trong Hình 8. Điều này hữu ích để phân tích xu hướng theo thời gian hoặc điều tra các sự cố cụ thể.

Hình 8: Bảng điều khiển CloudWatch dashboard hiển thị các truy vấn Client VPN
Thiết lập cảnh báo
Mặc dù CloudWatch Alarms không phải là một phần trực tiếp của bảng điều khiển, hãy cân nhắc thiết lập nó dựa trên các chỉ số bạn thấy. Ví dụ, bạn có thể muốn được cảnh báo nếu số lượng người dùng duy nhất vượt quá một ngưỡng nhất định.
Đánh giá thường xuyên
Thường xuyên xem lại bảng điều khiển này. Tìm kiếm những điều sau:
- Các đột biến bất thường trong truyền dữ liệu hoặc số lượng kết nối
- Thay đổi trong tỷ lệ các phương thức xác thực khác nhau
- Xu hướng tăng trưởng về số lượng người dùng hoặc thời lượng kết nối
Thường xuyên tương tác với bảng điều khiển này cung cấp thông tin chi tiết có giá trị về các mẫu sử dụng VPN của bạn, hỗ trợ các quyết định về dung lượng, bảo mật và trải nghiệm người dùng.
Bảng điều khiển này là một điểm khởi đầu. Khi bạn trở nên quen thuộc hơn với các mẫu sử dụng VPN của mình, hãy thoải mái sửa đổi các truy vấn hoặc thêm các widget mới để phù hợp hơn với nhu cầu giám sát cụ thể của bạn.
Các phương pháp bảo mật tốt nhất
Kiểm soát truy cập: Hạn chế quyền truy cập vào bảng điều khiển CloudWatch và các truy vấn Logs Insights chỉ cho những người cần nó cho mục đích vận hành. Sử dụng IAM để triển khai quyền truy cập với đặc quyền tối thiểu.
Vai trò IAM được sử dụng bởi bảng điều khiển và các truy vấn cần các quyền sau:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:GetQueryResults", "logs:GetLogEvents", "logs:FilterLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/aws-client-vpn/*:*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:GetDashboard", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards" ], "Resource": "*" } ]}
Hạn chế tài nguyên: Cân nhắc hạn chế quyền truy cập nhóm nhật ký vào các điểm cuối VPN cụ thể bằng cách chỉ định Amazon Resource Names (ARNs) chính xác trong chính sách IAM thay vì sử dụng ký tự đại diện.
Quyền riêng tư dữ liệu: Bảng điều khiển và các truy vấn có thể chứa thông tin nhạy cảm về các mẫu sử dụng VPN và danh tính người dùng. Triển khai các biện pháp kiểm soát thích hợp để bảo vệ dữ liệu này:
- Sử dụng AWS Organizations SCPs để hạn chế quyền truy cập vào các tài khoản cụ thể
- Bật AWS CloudTrail để giám sát và kiểm tra quyền truy cập bảng điều khiển
- Cân nhắc triển khai thêm các thẻ để kiểm soát truy cập dựa trên tài nguyên
Tuân thủ: Nếu bạn đang hoạt động trong các môi trường được quản lý, hãy đảm bảo rằng các mẫu lưu giữ và truy cập dữ liệu ghi nhật ký VPN phù hợp với các yêu cầu tuân thủ của bạn.
Đánh giá thường xuyên: Định kỳ xem xét các quyền truy cập và loại bỏ quyền truy cập không cần thiết để duy trì tư thế bảo mật.
Hãy nhớ thay thế ARN nhóm nhật ký trong các chính sách IAM bằng các ARN nhóm nhật ký cụ thể của bạn và điều chỉnh các quyền dựa trên các yêu cầu bảo mật và nhu cầu tuân thủ của tổ chức bạn.
Các bước tiếp theo
- Khám phá các tùy chỉnh truy vấn nâng cao cho các nhu cầu báo cáo cụ thể.
- Tích hợp các báo cáo này vào các quy trình giám sát mạng thường xuyên của bạn.
- Cân nhắc tự động hóa các hành động dựa trên báo cáo bằng cách sử dụng AWS Lambda và Amazon EventBridge.
Kết luận
Sử dụng các truy vấn Amazon CloudWatch Logs Insights và AWS CloudFormation này cho phép bạn nhanh chóng tạo báo cáo sử dụng AWS Client VPN mà không cần xây dựng chúng từ đầu. Giải pháp này hợp lý hóa quy trình báo cáo, tiết kiệm thời gian và giảm lỗi khi triển khai lại trong các tài khoản AWS khác.
Chúng tôi khuyến khích bạn dùng thử mẫu CloudFormation.
Về tác giả

Calvin Bock
Calvin là Kỹ sư Hỗ trợ Đám mây Cấp cao tại AWS, có trụ sở tại Cape Town, Nam Phi. Anh chuyên về mạng AWS và là chuyên gia về VPN, VPC, Transit Gateway, CloudWAN và Direct Connect. Calvin hợp tác chặt chẽ với khách hàng để khắc phục các thách thức mạng phức tạp và kiến trúc các giải pháp mạng mạnh mẽ, có khả năng mở rộng trên AWS. Thông qua chuyên môn kỹ thuật sâu rộng và cách tiếp cận thực tế, anh giúp các tổ chức tối ưu hóa cơ sở hạ tầng mạng đám mây của họ và đạt được kết nối an toàn, đáng tin cậy.

Peter-John Morgenrood
Peter-John là Kiến trúc sư Giải pháp Chuyên gia Cấp cao về Di chuyển và Hiện đại hóa tại AWS, có trụ sở tại Amsterdam. Anh hợp tác với các khách hàng doanh nghiệp trên khắp Bắc Âu để kiến trúc và triển khai các sáng kiến chuyển đổi đám mây phức tạp, chuyên về khối lượng công việc Windows và VMware, Amazon AppStream 2.0 và Amazon FSx for Windows File Server. Kết hợp chuyên môn kỹ thuật sâu rộng với cách tiếp cận tư vấn, Peter-John giúp các tổ chức đẩy nhanh quá trình chuyển đổi kỹ thuật số và tối đa hóa lợi ích của các dịch vụ AWS.