Sau khi nâng cấp lên ClusterControl 1.8.2, bạn sẽ nhận được biểu ngữ thông báo sau:
Có chuyện gì vậy? Đây là thông báo khấu hao của hệ thống quản lý người dùng hiện tại có lợi cho hệ thống quản lý người dùng mới được xử lý bởi dịch vụ bộ điều khiển ClusterControl (cmon). Khi nhấp vào biểu ngữ, bạn sẽ được chuyển hướng đến trang tạo người dùng để tạo người dùng quản trị mới, như được mô tả trong hướng dẫn sử dụng này.
Trong bài đăng trên blog này, chúng ta sẽ xem xét hệ thống quản lý người dùng mới được giới thiệu trong ClusterControl 1.8.2 và xem nó khác với những hệ thống trước đó như thế nào. Chỉ để làm rõ, hệ thống quản lý người dùng cũ sẽ vẫn hoạt động song song với hệ thống quản lý và xác thực người dùng mới cho đến quý 1 năm 2022. Từ bây giờ, tất cả các cài đặt mới cho ClusterControl 1.8.2 trở lên sẽ được định cấu hình với người dùng mới hệ thống quản lý.
Quản lý người dùng trước 1.8.2
ClusterControl 1.8.1 trở lên lưu trữ thông tin người dùng và kế toán bên trong cơ sở dữ liệu giao diện người dùng web được gọi là "dcps". Cơ sở dữ liệu này độc lập với cơ sở dữ liệu cmon được sử dụng bởi dịch vụ Bộ điều khiển ClusterControl (cmon).
Tài khoản Người dùng và Xác thực
Tài khoản người dùng bao gồm các thông tin sau:
-
Tên
-
Múi giờ
-
Email (dùng để xác thực)
-
Mật khẩu
-
Vai trò
-
Nhóm
Một người sẽ sử dụng địa chỉ email để đăng nhập vào GUI ClusterControl, như được hiển thị trong ảnh chụp màn hình sau:
Sau khi đăng nhập, ClusterControl sẽ tìm kiếm tổ chức mà người dùng thuộc về và sau đó chỉ định điều khiển truy cập dựa trên vai trò (RBAC) để truy cập một cụm và các chức năng cụ thể. Một nhóm có thể có 0 hoặc nhiều nhóm, trong khi người dùng phải thuộc một hoặc nhiều nhóm. Tạo người dùng yêu cầu vai trò và nhóm được tạo trước. ClusterControl đi kèm với một nhóm mặc định được gọi là Quản trị viên và 3 vai trò mặc định - Quản trị viên cấp cao, Quản trị viên và Người dùng.
Quyền và Kiểm soát Truy cập
ClusterControl 1.8.1 trở lên đã sử dụng điều khiển truy cập dựa trên giao diện người dùng dựa trên phân công vai trò. Trong một thuật ngữ khác, chúng tôi gọi đây là kiểm soát truy cập dựa trên vai trò (RBAC). Quản trị viên sẽ tạo các vai trò và mọi vai trò sẽ được chỉ định một tập hợp các quyền để truy cập các tính năng và trang nhất định. Việc thực thi vai trò xảy ra ở phía front-end, nơi dịch vụ bộ điều khiển ClusterControl (cmon) không biết liệu người dùng đang hoạt động có khả năng truy cập chức năng hay không vì thông tin chưa bao giờ được chia sẻ giữa hai công cụ xác thực này. Điều này sẽ khiến việc xác thực và ủy quyền khó kiểm soát hơn trong tương lai, đặc biệt là khi thêm nhiều tính năng tương thích với cả giao diện GUI và CLI.
Ảnh chụp màn hình sau đây cho thấy các tính năng có sẵn có thể được điều khiển thông qua RBAC:
Người quản trị chỉ cần chọn cấp độ truy cập liên quan cho các tính năng cụ thể và nó sẽ được lưu trữ bên trong cơ sở dữ liệu "dcps" và sau đó được ClusterControl GUI sử dụng để cấp phép tài nguyên UI cho người dùng GUI. Danh sách truy cập được tạo ở đây không liên quan gì đến người dùng CLI.
LDAP
ClusterControl trước 1.8.1 đã sử dụng mô-đun LDAP PHP để xác thực LDAP. Nó hỗ trợ các dịch vụ thư mục Active Directory, OpenLDAP và FreeIPA nhưng chỉ một số thuộc tính LDAP hạn chế có thể được sử dụng để nhận dạng người dùng như uid, cn hoặc sAMAccountName. Việc triển khai khá đơn giản và không hỗ trợ lọc cơ sở người dùng / nhóm nâng cao, ánh xạ thuộc tính và triển khai TLS.
Sau đây là thông tin cần thiết cho cài đặt LDAP:
Vì đây là dịch vụ giao diện người dùng, tệp nhật ký LDAP được lưu trữ trong thư mục ứng dụng web, cụ thể là tại /var/www/html/clustercontrol/app/log/cc-ldap.log. Người dùng đã xác thực sẽ được ánh xạ tới một nhóm và vai trò ClusterControl cụ thể, như được định nghĩa trong trang ánh xạ nhóm LDAP.
Quản lý người dùng hậu 1.8.2
Trong phiên bản mới này, ClusterControl hỗ trợ cả trình xử lý xác thực, xác thực giao diện người dùng (sử dụng địa chỉ email) và xác thực phụ trợ (sử dụng tên người dùng). Để xác thực phần phụ trợ, ClusterControl lưu trữ thông tin người dùng và tính toán bên trong cơ sở dữ liệu cmon được sử dụng bởi dịch vụ ClusterControl Controller (cmon).
Tài khoản Người dùng và Xác thực
Tài khoản người dùng bao gồm các thông tin sau:
-
Tên người dùng (dùng để xác thực)
-
Địa chỉ email
-
Họ và tên
-
Thẻ
-
Nguồn gốc
-
Đã tắt
-
Tạm dừng
-
Nhóm
-
Chủ sở hữu
-
ACL
-
Đăng nhập không thành công
-
Đường dẫn CDT
Nếu so với cách triển khai cũ, quản lý người dùng mới có nhiều thông tin hơn cho người dùng, cho phép thao tác tài khoản người dùng phức tạp và kiểm soát truy cập tốt hơn với bảo mật nâng cao. Quy trình xác thực người dùng hiện được bảo vệ chống lại các cuộc tấn công brute-force và có thể bị vô hiệu hóa vì lý do bảo trì hoặc bảo mật.
Một người sẽ sử dụng địa chỉ email hoặc tên người dùng để đăng nhập vào GUI ClusterControl, như được hiển thị trong ảnh chụp màn hình sau (chú ý đến văn bản giữ chỗ cho trường Tên người dùng):
Nếu người dùng đăng nhập bằng địa chỉ email, người dùng sẽ được xác thực thông qua dịch vụ quản lý người dùng frontend không dùng nữa và nếu tên người dùng được cung cấp, ClusterControl sẽ tự động sử dụng dịch vụ quản lý người dùng phụ trợ mới do dịch vụ controller xử lý. Cả hai xác thực đều hoạt động với hai bộ giao diện quản lý người dùng khác nhau.
Quyền và Kiểm soát Truy cập
Trong quản lý người dùng mới, quyền và kiểm soát truy cập được kiểm soát bởi một tập hợp các biểu mẫu văn bản Danh sách Kiểm soát Truy cập (ACL) được gọi là read (r), write (w) và thi hành (x). Tất cả các đối tượng và chức năng của ClusterControl được cấu trúc như một phần của cây thư mục, chúng tôi gọi đây là Cây thư mục CMON (CDT) và mỗi mục nhập được sở hữu bởi một người dùng, một nhóm và một ACL. Bạn có thể coi nó tương tự như quyền đối với tệp và thư mục Linux. Trên thực tế, việc triển khai kiểm soát truy cập ClusterControl tuân theo Danh sách kiểm soát truy cập POSIX tiêu chuẩn.
Để đưa vào một ví dụ, hãy xem xét các lệnh sau. Chúng tôi đã truy xuất giá trị Cmon Directory Tree (CDT) cho cụm của chúng tôi bằng cách sử dụng dòng lệnh "s9s tree" (hãy tưởng tượng đây là ls -al trong UNIX). Trong ví dụ này, tên cụm của chúng tôi là “PostgreSQL 12”, như được hiển thị bên dưới (được biểu thị bằng chữ "c" ở đầu dòng):
$ s9s tree --list --long
MODE SIZE OWNER GROUP NAME
crwxrwx---+ - system admins PostgreSQL 12
srwxrwxrwx - system admins localhost
drwxrwxr-- 1, 0 system admins groups
urwxr--r-- - admin admins admin
urwxr--r-- - dba admins dba
urwxr--r-- - nobody admins nobody
urwxr--r-- - readeruser admins readeruser
urwxr--r-- - s9s-error-reporter-vagrant admins s9s-error-reporter-vagrant
urwxr--r-- - system admins system
Total: 22 object(s) in 4 folder(s).
Giả sử chúng ta có một người dùng chỉ đọc được gọi là readeruser và người dùng này thuộc một nhóm được gọi là readergroup. Để chỉ định quyền đọc cho người dùng và nhóm đọc và đường dẫn CDT của chúng tôi là “/ PostgreSQL 12” (luôn bắt đầu bằng “/”, tương tự như UNIX), chúng tôi sẽ chạy:
$ s9s tree --add-acl --acl="group:readergroup:r--" "/PostgreSQL 12"
Acl is added.
$ s9s tree --add-acl --acl="user:readeruser:r--" "/PostgreSQL 12"
Acl is added.
Bây giờ người dùng đọc có thể truy cập ClusterControl thông qua GUI và CLI với tư cách là người dùng chỉ đọc cho một cụm cơ sở dữ liệu có tên "PostgreSQL 12". Lưu ý rằng các ví dụ thao tác ACL ở trên được lấy từ CLI ClusterControl, như được mô tả trong bài viết này. Nếu bạn kết nối thông qua ClusterControl GUI, bạn sẽ thấy trang kiểm soát truy cập mới sau:
ClusterControl GUI cung cấp một cách xử lý kiểm soát truy cập đơn giản hơn. Nó cung cấp một cách tiếp cận có hướng dẫn để định cấu hình các quyền, quyền sở hữu và các nhóm. Tương tự như phiên bản cũ hơn, mọi cụm đều thuộc sở hữu của một nhóm và bạn có thể chỉ định một nhóm khác có quyền đọc, quản trị viên hoặc cấm nhóm khác truy cập vào cụm từ cả hai giao diện ClusterControl GUI hoặc CLI.
LDAP
Trong các phiên bản trước (1.8.1 trở lên), xác thực LDAP được xử lý bởi thành phần frontend thông qua một tập hợp các bảng (dcps.ldap_settings và dcps.ldap_group_roles). Bắt đầu từ ClusterControl 1.8.2, tất cả các cấu hình LDAP và ánh xạ sẽ được lưu trữ bên trong tệp cấu hình này, /etc/cmon-ldap.cnf.
Bạn nên định cấu hình cài đặt LDAP và ánh xạ nhóm qua giao diện người dùng ClusterControl vì bất kỳ thay đổi nào đối với tệp này sẽ yêu cầu tải lại quy trình bộ điều khiển, quy trình này được kích hoạt tự động khi định cấu hình LDAP qua giao diện người dùng. Bạn cũng có thể thực hiện các sửa đổi trực tiếp đối với tệp, tuy nhiên, bạn phải tải lại dịch vụ cmon theo cách thủ công bằng cách sử dụng các lệnh sau:
$ systemctl restart cmon # or service cmon restart
Ảnh chụp màn hình sau đây hiển thị hộp thoại Cài đặt Nâng cao LDAP mới:
Nếu so với phiên bản trước, việc triển khai LDAP mới có thể tùy chỉnh nhiều hơn để hỗ trợ các dịch vụ thư mục tiêu chuẩn ngành như Active Directory, OpenLDAP và FreeIPA. Nó cũng hỗ trợ ánh xạ thuộc tính để bạn có thể đặt thuộc tính nào đại diện cho một giá trị có thể được nhập vào cơ sở dữ liệu người dùng ClusterControl như email, tên thật và tên người dùng.
Để biết thêm thông tin, hãy xem hướng dẫn sử dụng Cài đặt LDAP.
Ưu điểm của Quản lý Người dùng Mới
Lưu ý rằng quản lý người dùng hiện tại vẫn đang hoạt động song song với hệ thống quản lý người dùng mới. Tuy nhiên, chúng tôi thực sự khuyên người dùng nên chuyển sang hệ thống mới trước Q1 2022. Hiện tại, chỉ hỗ trợ di chuyển thủ công. Xem phần Di chuyển sang Quản lý người dùng mới bên dưới để biết chi tiết.
Hệ thống quản lý người dùng mới sẽ mang lại lợi ích cho người dùng ClusterControl theo những cách sau:
-
Quản lý người dùng tập trung cho ClusterControl CLI và ClusterControl GUI. Tất cả xác thực, ủy quyền và kế toán sẽ được xử lý bởi dịch vụ ClusterControl Controller (cmon).
-
Cấu hình LDAP nâng cao và có thể tùy chỉnh. Việc triển khai trước đó chỉ hỗ trợ một số thuộc tính tên người dùng và phải được định cấu hình theo cách riêng của nó để làm cho nó hoạt động bình thường.
-
Có thể sử dụng cùng một tài khoản người dùng để xác thực ClusterControl API một cách an toàn thông qua TLS. Hãy xem bài viết này chẳng hạn.
-
Phương pháp xác thực người dùng an toàn. Quản lý người dùng gốc mới hỗ trợ xác thực người dùng bằng cả khóa riêng / công khai và mật khẩu. Đối với xác thực LDAP, các ràng buộc LDAP và tra cứu được hỗ trợ qua SSL và TLS.
-
Chế độ xem biểu diễn thời gian nhất quán dựa trên cài đặt múi giờ của người dùng, đặc biệt khi sử dụng cả giao diện CLI và GUI cho quản lý và giám sát cụm cơ sở dữ liệu.
-
Bảo vệ chống lại các cuộc tấn công brute force, trong đó người dùng có thể bị từ chối truy cập vào hệ thống thông qua việc tạm ngừng hoặc tắt đăng nhập.
Di chuyển sang Quản lý người dùng mới
Vì cả hai hệ thống người dùng đều có cấu trúc và tài khoản người dùng khác nhau, nên việc tự động hóa quá trình di chuyển người dùng từ giao diện người dùng sang phụ trợ là một hoạt động rất rủi ro. Do đó, người dùng phải thực hiện việc di chuyển tài khoản theo cách thủ công sau khi nâng cấp từ 1.8.1 trở lên. Vui lòng tham khảo Bật quản lý người dùng mới để biết thêm chi tiết. Đối với người dùng LDAP hiện tại, vui lòng tham khảo phần Quy trình di chuyển LDAP.
Chúng tôi thực sự khuyên người dùng nên chuyển sang hệ thống mới này vì những lý do sau:
-
Hệ thống quản lý người dùng UI (nơi người dùng đăng nhập bằng địa chỉ email) sẽ không được chấp nhận bởi cuối quý 1 năm 2022 (~ 1 năm kể từ bây giờ).
-
Tất cả các tính năng và cải tiến sắp tới sẽ dựa trên hệ thống quản lý người dùng mới, được xử lý bởi quy trình phụ trợ cmon.
-
Việc có hai hoặc nhiều trình xử lý xác thực chạy trên một hệ thống là điều hơi phản trực quan.
Nếu bạn đang gặp sự cố và cần hỗ trợ về việc di chuyển và triển khai hệ thống quản lý người dùng ClusterControl mới, vui lòng liên hệ với chúng tôi qua cổng hỗ trợ, diễn đàn cộng đồng hoặc kênh Slack.
Lời kết
ClusterControl đang phát triển thành một sản phẩm phức tạp hơn theo thời gian. Để hỗ trợ tăng trưởng, chúng tôi phải đưa ra những thay đổi lớn mới để có trải nghiệm phong phú hơn trong thời gian dài. Mong đợi nhiều tính năng và cải tiến hơn cho hệ thống quản lý người dùng mới trong các phiên bản sắp tới!