Kiến thức Hữu ích 😍

Hướng Dẫn Bảo Mật MongoDB Trên CentOS 8: Tạo User, Xác Thực, Tường Lửa & Mã Hóa Dữ Liệu


MongoDB là hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở hàng đầu, được ưa chuộng nhờ tính linh hoạt và khả năng mở rộng vượt trội. Nó trở thành trái tim của nhiều ứng dụng hiện đại, từ các trang web thương mại điện tử đến hệ thống phân tích dữ liệu lớn. Tuy nhiên, sức mạnh này cũng đi kèm với trách nhiệm lớn về bảo mật. Việc quản lý và bảo vệ dữ liệu trong MongoDB là yếu tố sống còn để đảm bảo an toàn cho toàn bộ hệ thống. Nếu không được cấu hình đúng cách, cơ sở dữ liệu của bạn có thể trở thành mục tiêu cho các cuộc tấn công, dẫn đến rò rỉ dữ liệu nhạy cảm, mất mát thông tin khách hàng và gây thiệt hại nghiêm trọng cho uy tín doanh nghiệp. Bài viết này sẽ hướng dẫn bạn chi tiết các bước cần thiết để bảo mật MongoDB trên hệ điều hành CentOS 8 một cách toàn diện.

Tạo user với quyền hạn hợp lý trong MongoDB

Việc tạo người dùng với quyền hạn được phân chia rõ ràng là bức tường phòng thủ đầu tiên và quan trọng nhất. Thay vì sử dụng một tài khoản quản trị cao nhất cho mọi tác vụ, việc tạo ra các user riêng biệt với quyền hạn vừa đủ giúp giảm thiểu rủi ro một cách đáng kể. Nếu một tài khoản ứng dụng bị xâm nhập, kẻ tấn công sẽ chỉ có quyền truy cập giới hạn, không thể phá hoại toàn bộ hệ thống.

Hiểu về cơ chế phân quyền trong MongoDB

MongoDB sử dụng một hệ thống phân quyền dựa trên vai trò (role-based access control – RBAC). Mỗi vai trò là một tập hợp các quyền hạn cụ thể, cho phép người dùng thực hiện các hành động nhất định trên tài nguyên cơ sở dữ liệu. Ví dụ, vai trò read chỉ cho phép đọc dữ liệu, trong khi readWrite cho phép cả đọc và ghi.

Việc áp dụng nguyên tắc đặc quyền tối thiểu (Principle of Least Privilege) là cực kỳ quan trọng. Nguyên tắc này có nghĩa là bạn chỉ cấp cho mỗi người dùng chính xác những quyền hạn mà họ cần để thực hiện công việc của mình, không hơn không kém. Điều này giống như việc bạn chỉ giao cho nhân viên chiếc chìa khóa của phòng ban họ làm việc, thay vì giao cả chùm chìa khóa của toàn bộ tòa nhà. Lợi ích của phương pháp này là nó thu hẹp đáng kể bề mặt tấn công, ngăn chặn các hành vi truy cập trái phép và giảm thiểu thiệt hại nếu một tài khoản bị lộ.

Hướng dẫn cấu hình user mới trên MongoDB

Để tạo người dùng mới, bạn cần kết nối vào MongoDB shell với tư cách là quản trị viên. Quá trình này khá đơn giản và trực quan.

Hình minh họa

Đầu tiên, hãy kết nối vào cơ sở dữ liệu mà bạn muốn tạo người dùng. Ví dụ, để tạo user cho cơ sở dữ liệu có tên là azweb_database, bạn sử dụng lệnh use azweb_database.

Sau đó, bạn dùng lệnh db.createUser() để tạo người dùng mới. Cú pháp của lệnh này bao gồm các trường thông tin quan trọng như user (tên người dùng), pwd (mật khẩu) và roles (danh sách các vai trò được gán).

Ví dụ, để tạo một người dùng tên là azweb_app_user chỉ có quyền đọc và ghi trên cơ sở dữ liệu azweb_database, bạn có thể thực hiện như sau:

use azweb_database
db.createUser({
  user: "azweb_app_user",
  pwd: passwordPrompt(), // Hoặc nhập mật khẩu trực tiếp "your_strong_password"
  roles: [
    { role: "readWrite", db: "azweb_database" }
  ]
})

Lệnh passwordPrompt() sẽ yêu cầu bạn nhập mật khẩu một cách an toàn mà không hiển thị trên màn hình. Sau khi tạo xong, bạn sẽ nhận được thông báo thành công. Người dùng này giờ đây chỉ có thể tương tác với azweb_database và không thể truy cập hay chỉnh sửa các cơ sở dữ liệu khác, đảm bảo an toàn và phân tách rõ ràng.

Hình minh họa

Kích hoạt xác thực truy cập cho MongoDB

Sau khi đã tạo người dùng với quyền hạn hợp lý, bước tiếp theo không thể thiếu là bật tính năng xác thực. Nếu không kích hoạt xác thực, bất kỳ ai có quyền truy cập vào mạng của máy chủ đều có thể kết nối và toàn quyền thao tác với cơ sở dữ liệu của bạn. Đây là một lỗ hổng bảo mật nghiêm trọng mà nhiều quản trị viên vô tình bỏ qua.

Lý do cần bật xác thực (Authentication)

Hãy tưởng tượng ngôi nhà của bạn có rất nhiều phòng với khóa riêng, nhưng cửa chính lại không bao giờ khóa. Bất kỳ ai cũng có thể bước vào và tự do đi lại bên trong. Đó chính là tình trạng của một máy chủ MongoDB không bật xác thực. Kẻ tấn công có thể dễ dàng truy cập, đánh cắp dữ liệu, hoặc thậm chí cài đặt mã độc tống tiền (ransomware) để mã hóa toàn bộ cơ sở dữ liệu của bạn.

Việc bật xác thực sẽ dựng lên một “cánh cửa chính” vững chắc. Nó yêu cầu mọi kết nối đến MongoDB phải cung cấp tên người dùng và mật khẩu hợp lệ. Chỉ những ai có thông tin đăng nhập chính xác mới được phép truy cập và thực hiện các thao tác tương ứng với quyền hạn đã được cấp. Đây là biện pháp nền tảng để bảo vệ dữ liệu khỏi các truy cập trái phép và đảm bảo chỉ những ứng dụng và người dùng hợp pháp mới có thể tương tác với hệ thống.

Cách bật tính năng xác thực trên CentOS 8

Kích hoạt xác thực trên CentOS 8 được thực hiện thông qua việc chỉnh sửa tệp cấu hình chính của MongoDB. Tệp này thường nằm ở /etc/mongod.conf.

Hình minh họa

Trước tiên, bạn cần mở tệp cấu hình bằng một trình soạn thảo văn bản với quyền quản trị, ví dụ như sudo nano /etc/mongod.conf.

Bên trong tệp, hãy tìm đến mục security. Nếu mục này chưa có, bạn có thể thêm nó vào. Sau đó, thêm hoặc bỏ ghi chú dòng authorization: "enabled" như sau:

security:
  authorization: "enabled"

Thay đổi này yêu cầu MongoDB kiểm tra quyền của người dùng cho mọi yêu cầu sau khi họ đã xác thực. Nó đảm bảo rằng người dùng không chỉ phải đăng nhập mà còn phải có quyền hạn phù hợp để thực hiện một hành động cụ thể.

Hình minh họa

Sau khi lưu lại thay đổi, bạn cần khởi động lại dịch vụ MongoDB để áp dụng cấu hình mới. Sử dụng lệnh sau:

sudo systemctl restart mongod

Để kiểm tra xem xác thực đã được bật hay chưa, bạn có thể thử kết nối vào mongo shell mà không cung cấp thông tin đăng nhập. Nếu bạn cố gắng thực hiện một lệnh như show dbs, hệ thống sẽ trả về lỗi xác thực. Điều này xác nhận rằng lớp bảo vệ đầu tiên của bạn đã hoạt động hiệu quả.

Cấu hình tường lửa trên CentOS 8 để bảo vệ MongoDB

Ngay cả khi đã bật xác thực, việc giới hạn kết nối mạng đến máy chủ MongoDB vẫn là một bước bảo mật quan trọng. Tường lửa hoạt động như một người gác cổng, chỉ cho phép những truy cập từ các địa chỉ đáng tin cậy và chặn đứng mọi kết nối đáng ngờ khác. Điều này giúp giảm thiểu nguy cơ bị tấn công dò mật khẩu (brute-force) hoặc các hình thức tấn công từ chối dịch vụ.

Vai trò của firewall trong bảo vệ MongoDB

Trên CentOS 8, công cụ tường lửa mặc định là firewalld. Nó quản lý các quy tắc truy cập vào và ra khỏi máy chủ của bạn. Bằng cách cấu hình firewalld, bạn có thể quy định rằng chỉ những địa chỉ IP cụ thể (ví dụ: IP của máy chủ ứng dụng) mới được phép kết nối đến cổng mặc định của MongoDB là 27017.

Lợi ích của việc này là vô cùng lớn. Nó tạo ra một vành đai an ninh bên ngoài, ngăn chặn kẻ tấn công thậm chí có cơ hội thử đăng nhập. Ngay cả khi mật khẩu của một tài khoản nào đó bị lộ, kẻ tấn công cũng không thể kết nối được đến cơ sở dữ liệu nếu họ không đến từ một địa chỉ IP đã được cho phép. Đây là một lớp phòng thủ chiều sâu, giúp bảo vệ hệ thống của bạn một cách toàn diện hơn.

Hình minh họa

Hướng dẫn cấu hình firewall cho MongoDB

Cấu hình firewalld để bảo vệ MongoDB bao gồm việc tạo ra các quy tắc cụ thể cho cổng dịch vụ. Giả sử máy chủ ứng dụng của bạn có địa chỉ IP là 192.168.1.100 và bạn muốn chỉ cho phép IP này kết nối đến MongoDB.

Đầu tiên, hãy đảm bảo rằng dịch vụ firewalld đang hoạt động:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Tiếp theo, bạn cần thêm một quy tắc mới. Thay vì mở cổng 27017 cho tất cả mọi người, chúng ta sẽ sử dụng “rich rule” để chỉ định chính xác nguồn truy cập được phép. Sử dụng lệnh sau:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" port protocol="tcp" port="27017" accept'

Lệnh này có nghĩa là: “Chấp nhận các kết nối TCP đến cổng 27017 chỉ khi chúng đến từ địa chỉ IP 192.168.1.100”.

Sau khi thêm quy tắc, bạn cần tải lại cấu hình tường lửa để áp dụng thay đổi:

sudo firewall-cmd --reload

Để kiểm tra lại các quy tắc đang hoạt động, bạn có thể dùng lệnh:

sudo firewall-cmd --list-all

Kết quả sẽ hiển thị quy tắc bạn vừa thêm. Bây giờ, máy chủ MongoDB của bạn đã được bảo vệ bởi một lớp tường lửa vững chắc, chỉ chấp nhận kết nối từ những nguồn mà bạn hoàn toàn tin tưởng.

Hình minh họa

Mã hóa dữ liệu trong MongoDB để tăng cường bảo mật

Bảo mật không chỉ dừng lại ở việc kiểm soát ai có thể truy cập, mà còn phải đảm bảo rằng dữ liệu luôn được bảo vệ, ngay cả khi nó bị đánh cắp. Mã hóa là công nghệ biến dữ liệu của bạn thành một định dạng không thể đọc được nếu không có khóa giải mã. Đây là lớp bảo vệ cuối cùng và cực kỳ quan trọng cho các thông tin nhạy cảm.

Tầm quan trọng của mã hóa dữ liệu

Trong MongoDB, mã hóa được xem xét ở hai trạng thái chính: mã hóa dữ liệu khi truyền (Encryption in Transit) và mã hóa dữ liệu khi lưu trữ (Encryption at Rest).

Encryption in Transit bảo vệ dữ liệu khi nó đang di chuyển trên mạng, ví dụ như từ máy chủ ứng dụng đến máy chủ cơ sở dữ liệu. Nếu không có mã hóa, kẻ tấn công có thể “nghe lén” trên mạng và đánh cắp thông tin nhạy cảm như tên đăng nhập, mật khẩu, hoặc dữ liệu người dùng. Việc sử dụng TLS/SSL (tương tự như HTTPS trên website) sẽ tạo ra một đường hầm an toàn, đảm bảo mọi dữ liệu truyền đi đều được mã hóa.

Encryption at Rest bảo vệ dữ liệu khi nó được lưu trên ổ đĩa. Nếu một kẻ tấn công có được quyền truy cập vật lý vào máy chủ hoặc ổ cứng, lớp mã hóa này sẽ ngăn họ đọc các tệp dữ liệu của MongoDB. Đây là một yêu cầu bảo mật quan trọng, đặc biệt đối với các ngành như tài chính, y tế.

Hướng dẫn bật mã hóa dữ liệu trong MongoDB

Để bảo vệ dữ liệu khi truyền, bạn cần cấu hình MongoDB sử dụng TLS/SSL. Quá trình này yêu cầu bạn phải có một chứng chỉ TLS/SSL. Bạn có thể tự tạo (self-signed) cho môi trường nội bộ hoặc sử dụng chứng chỉ từ một Tổ chức phát hành chứng chỉ (CA) đáng tin cậy.

Sau khi có tệp chứng chỉ (.pem), bạn cần cập nhật tệp cấu hình /etc/mongod.conf để bật TLS và chỉ định đường dẫn đến tệp chứng chỉ:

net:
  port: 27017
  bindIp: 127.0.0.1,your_server_ip
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem

Mục mode: requireTLS sẽ buộc tất cả các kết nối phải sử dụng TLS/SSL. Đừng quên khởi động lại dịch vụ mongod để áp dụng thay đổi.

Đối với Encryption at Rest, đây là một tính năng có sẵn trong phiên bản MongoDB Enterprise. Nó sử dụng thuật toán mã hóa AES256-CBC để mã hóa các tệp dữ liệu một cách minh bạch. Việc cấu hình yêu cầu bạn bật tùy chọn storage.wiredTiger.engineConfig.encryption trong tệp cấu hình. Nếu bạn đang sử dụng phiên bản Community và có yêu cầu cao về bảo mật dữ liệu lưu trữ, bạn nên cân nhắc nâng cấp lên phiên bản Enterprise hoặc sử dụng các giải pháp mã hóa cấp hệ điều hành hoặc ổ đĩa.

Hình minh họa

Kiểm tra và theo dõi an ninh hệ thống MongoDB

Bảo mật không phải là một công việc làm một lần rồi quên. Nó là một quá trình liên tục đòi hỏi sự giám sát và cảnh giác. Việc theo dõi hệ thống MongoDB thường xuyên giúp bạn phát hiện sớm các hoạt động đáng ngờ, các lỗ hổng bảo mật tiềm ẩn và phản ứng kịp thời trước khi có sự cố nghiêm trọng xảy ra.

Các công cụ và phương pháp giám sát MongoDB

Một trong những công cụ mạnh mẽ và sẵn có nhất chính là nhật ký (logs) của MongoDB. Tệp log ghi lại rất nhiều thông tin quan trọng, bao gồm các lần kết nối thành công và thất bại, các truy vấn chạy chậm, và các lỗi hệ thống. Bằng cách thường xuyên kiểm tra log (thường nằm ở /var/log/mongodb/mongod.log), bạn có thể phát hiện các dấu hiệu bất thường, chẳng hạn như có quá nhiều lần đăng nhập thất bại từ một địa chỉ IP lạ. Đây có thể là dấu hiệu của một cuộc tấn công dò mật khẩu (IDS).

Bên cạnh đó, trên CentOS 8, bạn có thể tận dụng các công cụ giám sát hệ thống như auditd. Dịch vụ này cho phép bạn theo dõi các sự kiện ở cấp hệ điều hành, ví dụ như ai đã truy cập vào tệp cấu hình mongod.conf hoặc các tệp dữ liệu của MongoDB. Điều này cung cấp một lớp giám sát sâu hơn. Ngoài ra, có rất nhiều công cụ của bên thứ ba chuyên dụng cho việc giám sát hiệu suất và an ninh MongoDB, cung cấp các bảng điều khiển trực quan và tính năng cảnh báo mạnh mẽ.

Thiết lập cảnh báo và thực thi các hoạt động bảo trì định kỳ

Chỉ giám sát thôi là chưa đủ; bạn cần thiết lập các cảnh báo tự động để được thông báo ngay lập tức khi có sự kiện quan trọng xảy ra. Ví dụ, bạn có thể cấu hình một hệ thống gửi email hoặc tin nhắn cảnh báo khi phát hiện hơn 10 lần đăng nhập thất bại trong vòng một phút. Điều này giúp đội ngũ quản trị có thể phản ứng nhanh chóng.

Các hoạt động bảo trì định kỳ cũng đóng vai trò then chốt trong việc duy trì an ninh. Lên kế hoạch sao lưu (backup) cơ sở dữ liệu một cách thường xuyên và kiểm tra tính toàn vẹn của các bản sao lưu là điều bắt buộc. Hơn nữa, hãy luôn cập nhật MongoDB và hệ điều hành CentOS 8 lên các phiên bản mới nhất. Các bản cập nhật thường xuyên chứa các bản vá bảo mật quan trọng, giúp bảo vệ hệ thống của bạn khỏi các các lỗ hổng bảo mật đã được biết đến.

Các vấn đề thường gặp và cách khắc phục

Trong quá trình tăng cường bảo mật cho MongoDB, bạn có thể gặp phải một số sự cố phổ biến. Hiểu rõ nguyên nhân và cách khắc phục sẽ giúp bạn giải quyết vấn đề nhanh chóng và hiệu quả, đảm bảo hệ thống hoạt động ổn định.

MongoDB fails authentication sau khi bật xác thực

Đây là lỗi phổ biến nhất sau khi bạn kích hoạt authorization: "enabled" trong tệp mongod.conf. Nguyên nhân chính là bạn chưa tạo người dùng quản trị (admin user) hoặc đang cố gắng kết nối mà không cung cấp thông tin xác thực.

Cách khắc phục:

  1. Tạm thời tắt xác thực: Chỉnh sửa lại mongod.conf, comment dòng authorization: "enabled" và khởi động lại dịch vụ.
  2. Tạo người dùng quản trị: Kết nối vào mongo shell, chuyển qua cơ sở dữ liệu admin (use admin) và tạo một người dùng có quyền quản trị cao, ví dụ như userAdminAnyDatabase.
    use admin
    db.createUser({
      user: "myAdminUser",
      pwd: passwordPrompt(),
      roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })
    
  3. Bật lại xác thực: Mở lại tệp mongod.conf, kích hoạt lại authorization: "enabled" và khởi động lại mongod.
  4. Kết nối bằng tài khoản quản trị: Bây giờ, khi kết nối, bạn phải sử dụng tài khoản quản trị vừa tạo để xác thực.
    mongo -u myAdminUser -p --authenticationDatabase admin
    

Sau khi đăng nhập thành công, bạn có thể tạo và quản lý các người dùng khác cho ứng dụng của mình.

Không truy cập được MongoDB qua firewall

Một vấn đề khác thường xảy ra là sau khi cấu hình firewalld, ứng dụng của bạn không thể kết nối đến MongoDB. Điều này thường do cấu hình tường lửa bị sai hoặc chưa được áp dụng đúng cách.

Cách khắc phục:

  1. Kiểm tra quy tắc tường lửa: Dùng lệnh sudo firewall-cmd --list-all để xem lại tất cả các quy tắc đang được áp dụng. Hãy chắc chắn rằng quy tắc cho phép IP của máy chủ ứng dụng truy cập cổng 27017 đã được thêm chính xác.
  2. Kiểm tra địa chỉ IP nguồn: Xác nhận lại địa chỉ IP của máy chủ ứng dụng. Có thể bạn đã nhập sai IP trong “rich rule”.
  3. Kiểm tra cổng và giao thức: Đảm bảo rằng bạn đã mở đúng cổng (mặc định là 27017) và đúng giao thức (tcp).
  4. Tải lại tường lửa: Mỗi khi thay đổi quy tắc, hãy chắc chắn rằng bạn đã chạy lệnh sudo firewall-cmd --reload để áp dụng chúng.
  5. Kiểm tra bindIp: Trong tệp mongod.conf, hãy kiểm tra cấu hình net.bindIp. Nếu nó chỉ được thiết lập là 127.0.0.1 (localhost), MongoDB sẽ không chấp nhận kết nối từ bên ngoài. Bạn cần thêm IP của máy chủ vào danh sách này, ví dụ: bindIp: 127.0.0.1,your_server_ip. Sau đó, khởi động lại dịch vụ mongod.

    Hình minh họa

Best Practices

Để đảm bảo an ninh tối đa cho hệ thống MongoDB của bạn trên CentOS 8, việc tuân thủ các nguyên tắc và thực hành tốt nhất là điều cần thiết. Dưới đây là danh sách tổng hợp các khuyến nghị quan trọng mà bạn nên áp dụng một cách nhất quán.

  • Luôn tạo user với quyền hạn tối thiểu cần thiết: Đây là nguyên tắc vàng. Đừng bao giờ sử dụng tài khoản quản trị cho các ứng dụng. Hãy tạo các vai trò tùy chỉnh hoặc sử dụng các vai trò có sẵn một cách cẩn thận, chỉ cấp những quyền thực sự cần thiết cho từng tác vụ cụ thể.
  • Bật xác thực và sử dụng mật khẩu mạnh: Luôn kích hoạt chế độ xác thực (authorization: "enabled"). Đặt mật khẩu mạnh, phức tạp và duy nhất cho mỗi người dùng. Thường xuyên xoay vòng mật khẩu và bảo vệ thông tin đăng nhập một cách cẩn mật.
  • Giới hạn truy cập mạng thông qua firewall: Chỉ cho phép kết nối đến MongoDB từ các địa chỉ IP được tin tưởng, chẳng hạn như máy chủ ứng dụng của bạn. Chặn tất cả các truy cập khác bằng cách sử dụng firewalld trên CentOS 8.
  • Sử dụng TLS/SSL để mã hóa dữ liệu truyền tải: Mã hóa kết nối giữa client và máy chủ MongoDB để bảo vệ dữ liệu khỏi bị nghe lén trên mạng. Đây là yêu cầu bắt buộc đối với các ứng dụng xử lý thông tin nhạy cảm.
  • Giám sát logs thường xuyên và lập kế hoạch backup định kỳ: Theo dõi nhật ký hệ thống để phát hiện sớm các hoạt động đáng ngờ. Thực hiện sao lưu dữ liệu một cách đều đặn và kiểm tra quy trình khôi phục để đảm bảo bạn có thể phục hồi khi có sự cố.
  • Không để MongoDB chạy dưới quyền root: Chạy dịch vụ MongoDB bằng một tài khoản người dùng riêng, không có đặc quyền cao (mongod user). Điều này hạn chế thiệt hại nếu tiến trình MongoDB bị khai thác lỗ hổng.
  • Cập nhật thường xuyên: Luôn giữ cho phiên bản MongoDB và hệ điều hành CentOS 8 của bạn được cập nhật lên các bản vá mới nhất để bảo vệ khỏi các lỗ hổng bảo mật đã được công bố.

    Hình minh họa

Kết luận

Bảo mật MongoDB trên CentOS 8 là một quá trình đa tầng, đòi hỏi sự kết hợp của nhiều biện pháp từ kiểm soát truy cập, cấu hình mạng, mã hóa cho đến giám sát liên tục. Bằng cách thực hiện đầy đủ các bước đã được trình bày trong bài viết này — từ việc tạo người dùng với quyền hạn tối thiểu, kích hoạt xác thực, cấu hình tường lửa chặt chẽ, mã hóa dữ liệu, đến việc theo dõi hệ thống — bạn đã xây dựng được một hệ thống phòng thủ vững chắc, bảo vệ tài sản dữ liệu quý giá của mình trước các mối đe dọa tiềm tàng.

An toàn dữ liệu không phải là một điểm đến, mà là một hành trình. Thế giới an ninh mạng luôn biến đổi, và các mối đe dọa mới luôn xuất hiện. Vì vậy, chúng tôi khuyến khích bạn không chỉ áp dụng các biện pháp này một lần mà hãy biến chúng thành thói quen quản trị hàng ngày. Hãy tiếp tục tìm hiểu, tự động hóa các quy trình như sao lưu và giám sát, thường xuyên nâng cấp MongoDB và áp dụng các bản vá bảo mật ngay khi chúng được phát hành. Bằng cách đó, bạn có thể yên tâm rằng cơ sở dữ liệu của mình luôn được bảo vệ ở mức cao nhất.

Đánh giá