Cassandra Xác thực và ủy quyền JMX: Tạo người dùng

Có hai loại bảo mật trong Apache Cassandra và doanh nghiệp Datastax.

  • Xác thực nội bộ
  • cho phép

Xác thực và ủy quyền nội bộ là gì

Xác thực nội bộ về cơ bản là xác thực kết nối người dùng. Người dùng được xác thực bằng thông tin đăng nhập và mật khẩu. Tất cả các tài khoản người dùng được quản lý trong Cassandra nội bộ

Ủy quyền nội bộ liên quan đến sự cho phép của người dùng. Nó đề cập đến những hành động mà người dùng có thể thực hiện. Ví dụ: chúng ta có thể cấp quyền cho người dùng như người dùng nào chỉ có quyền đọc dữ liệu, người dùng nào có quyền ghi dữ liệu và người dùng nào có quyền xóa dữ liệu.

Tuy nhiên, Xác thực cũng có thể được kiểm soát từ bên ngoài bằng Kerberos (Kerberos được sử dụng để quản lý thông tin xác thực một cách an toàn) và LDAP (LDAP được sử dụng để lưu giữ thông tin chính thống về tài khoản, chẳng hạn như những thông tin họ được phép truy cập).

Xác thực bên ngoài là xác thực được hỗ trợ bởi Kerberos và LDAP. Apache Cassandra không hỗ trợ xác thực bên ngoài.

Chỉ doanh nghiệp datastax mới hỗ trợ xác thực bên ngoài với Kerberos và LDAP. Trong khi xác thực nội bộ được hỗ trợ cả trong Apache Cassandra cũng như doanh nghiệp Datastax.

Định cấu hình xác thực và ủy quyền

In Cassandra, theo mặc định, các tùy chọn xác thực và ủy quyền bị tắt. Bạn phải cấu hình CassandraTệp .yaml để kích hoạt xác thực và ủy quyền.

Mở CassandraTệp .yaml và các dòng không ghi chú liên quan đến xác thực và ủy quyền nội bộ.

Định cấu hình xác thực và ủy quyền

  • In CassandraTệp .yaml, theo mặc định, giá trị xác thực là 'AllowAllAuthenticator'. Thay đổi giá trị xác thực này từ 'AllowAllAuthenticator' thành 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Tương tự, trong CassandraTệp .yaml, theo mặc định, giá trị ủy quyền sẽ là 'AllowAllAuthorizor'. Thay đổi giá trị ủy quyền này từ 'AllowAllAuthorizor' thành 'com.datastax.bdp.cassandra.auth.CassandraNgười ủy quyền'.

Đăng nhập

Bây giờ xác thực đã được bật, nếu bạn cố gắng truy cập bất kỳ không gian phím nào, Cassandra sẽ trả về một lỗi.

Theo mặc định, Cassandra cung cấp cho siêu tài khoản tên người dùng 'cassandra' và mật khẩu 'cassandra'. Bằng cách đăng nhập vào 'Cassandra' tài khoản, bạn có thể làm bất cứ điều gì bạn muốn.

Hãy xem ảnh chụp màn hình bên dưới để biết điều này, nơi nó sẽ không cho phép bạn đăng nhập nếu bạn không sử dụng mặc định Cassandra “tên người dùng” và “mật khẩu”.

Đăng nhập

Bây giờ, trong ảnh chụp màn hình thứ hai, bạn có thể thấy sau khi sử dụng Cassandra thông tin đăng nhập mặc định, bạn có thể đăng nhập.

Bạn cũng có thể tạo một người dùng khác bằng tài khoản này. Nên thay đổi mật khẩu từ mặc định. Đây là ví dụ về đăng nhập Cassandra người dùng và thay đổi mật khẩu mặc định.

Đăng nhập

alter user cassandra with password 'newpassword';

Tạo người dùng mới

Tài khoản mới có thể được tạo bằng 'Cassandra' tài khoản.

Để tạo người dùng mới, đăng nhập, mật khẩu được chỉ định cùng với việc người dùng có phải là siêu người dùng hay không. Chỉ Siêu người dùng mới có thể tạo người dùng mới.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

Bạn có thể lấy danh sách tất cả người dùng bằng cú pháp sau.

list users;

Tạo người dùng mới

Người dùng có thể bị xóa theo cú pháp sau.

drop user laura;

cho phép

Ủy quyền là việc gán quyền cho người dùng về hành động mà một người dùng cụ thể có thể thực hiện.

Đây là cú pháp chung để gán quyền cho người dùng.

GRANT permission ON resource TO user

Có những loại quyền sau đây có thể được cấp cho người dùng.

  1. TẤT CẢ CÁC
  2. THAY ĐỔI
  3. ỦY QUYỀN
  4. TẠO NÊN
  5. Thả
  6. SỬA ĐỔI
  7. CHỌN

Dưới đây là ví dụ về việc gán quyền cho người dùng.

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

Người dùng mới 'laura' được tạo với mật khẩu 'newhire'.

Đây là ví dụ trong đó người dùng 'laura' cố gắng truy cập vào bảng emp_bonus. Laura chỉ có quyền truy cập dev.emp và không có quyền truy cập vào bảng này dev.emp_bonus, đó là lý do tại sao có lỗi được trả về.

cho phép

select* form emp_bonus;

Bạn có thể nhận được danh sách tất cả các quyền được gán cho người dùng. Đây là ví dụ về việc nhận thông tin về sự cho phép.

cho phép

list all permissions of laura;

Bạn cũng có thể liệt kê tất cả các quyền trên tài nguyên. Đây là ví dụ về việc nhận được sự cho phép từ một bảng.

cho phép

list all permissions on dev.emp;

Cấu hình tường lửa

Nếu tường lửa đang chạy, các cổng sau phải được mở để giao tiếp giữa các nút bao gồm một số Cassandra cổng. Nếu như Cassandra cổng sẽ không được mở, Cassandra các nút sẽ hoạt động như máy chủ cơ sở dữ liệu độc lập thay vì tham gia cụm cơ sở dữ liệu.

Cassandra Cổng khách hàng

Số cổng Mô tả
9042 Cassandra Cổng khách hàng
9160 Cassandra Tiết kiệm cổng khách hàng

Cassandra Cổng quốc tế

Số cổng Mô tả
7000 Cassandra giao tiếp cụm nút nội bộ
7001 Cassandra Giao tiếp cụm nút nội bộ SSL
7199 Cassandra Cổng giám sát JMX

Cổng công cộng

Số cổng Mô tả
22 Cổng SSH
8888 Trang web OpsCenter. Yêu cầu http của trình duyệt.

Cassandra Cổng OpsCenter

Số cổng Mô tả
61620 Cổng giám sát OpsCenter.
61621 Cổng đại lý Opscenter

Kích hoạt xác thực JMX

Với cài đặt mặc định của Cassandra, JMX chỉ có thể được truy cập từ localhost. Nếu bạn muốn truy cập JMX từ xa, hãy thay đổi cài đặt LOCAL_JMX trong Cassandra-env.sh và kích hoạt xác thực hoặc SSL.

Sau khi bật xác thực JMX, hãy đảm bảo Trung tâm điều hành và nodetool được cấu hình để sử dụng xác thực.

Thủ tục

Sau đây là các bước để kích hoạt xác thực JMX.

  1. Trong tệp cassandra-env.sh, hãy thêm hoặc cập nhật các dòng sau.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Ngoài ra, hãy thay đổi cài đặt LOCAL_JMX trong Cassandra-env.sh

LOCAL_JMX=no
  1. Sao chép jmxremote.password.template từ /jdk_install_location/lib/management/ đến /etc/cassandra/ và đổi tên thành jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Thay đổi quyền sở hữu jmxremote.password cho người dùng bạn chạy Cassandra với và thay đổi quyền chỉ đọc
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Chỉnh sửa jmxremote.password và thêm người dùng và mật khẩu cho các tiện ích tuân thủ JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Thêm Cassandra người dùng có quyền đọc và ghi vào /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Khởi động lại Cassandra
  2. Chạy nodetool với Cassandra người dùng và mật khẩu.
$ nodetool status -u cassandra -pw cassandra

Tổng kết

Hướng dẫn này giải thích về bảo mật trong Cassandra và cấu hình CassandraTệp .yaml để kích hoạt bảo mật. Ngoài ra, nó còn giải thích cách tạo tài khoản người dùng mới, phân quyền, định cấu hình tường lửa, v.v.