Bảo mật Cassandra: Tạo Người dùng & Xác thực với JMX

Mục lục:

Anonim

Có hai loại bảo mật trong Apache Cassandra và Datastax Enterprise.

  • Xác thực nội bộ
  • Ủy quyền

Trong hướng dẫn này, bạn sẽ học,

  • Xác thực nội bộ và ủy quyền là gì
  • Định cấu hình xác thực và ủy quyền
  • Đăng nhập
  • Tạo người dùng mới
  • Ủy quyền
  • Cấu hình tường lửa
  • Bật xác thực JMX

Xác thực nội bộ và ủy quyền 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 đă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ý nội bộ trong Cassandra.

Ủy quyền nội bộ đề cập đế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ể được thực hiện. Ví dụ: chúng tôi có thể cấp quyền của người dùng, chẳng hạn 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 bên ngoài bằng Kerberos (Kerberos được sử dụng để quản lý thông tin đăng nhập một cách an toàn) và LDAP (LDAP được sử dụng để giữ thông tin có thẩm quyền về tài khoản, chẳng hạn như những gì họ được phép truy cập).

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

Chỉ doanh nghiệp datastax 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ư Datastax Enterprise.

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

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

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

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

Đăng nhập

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

Theo mặc định, Cassandra cung cấp siêu tài khoản với tên người dùng 'cassandra' và mật khẩu 'cassandra'. Bằng cách đăng nhập vào tài khoản 'Cassandra', 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 cho đ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 "tên người dùng" và "mật khẩu" mặc định của Cassandra.

Bây giờ, trong ảnh chụp màn hình thứ hai, bạn có thể thấy sau khi sử dụng thông tin đăng nhập mặc định của Cassandra, 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. Bạn nên thay đổi mật khẩu từ mặc định. Đây là ví dụ về đăng nhập người dùng Cassandra và thay đổi mật khẩu mặc định.

alter user cassandra with password 'newpassword';

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

Có thể tạo tài khoản mới bằng tài khoản 'Cassandra'.

Để 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ỉ Người dùng cấp cao 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 theo cú pháp sau.

list users;

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

drop user laura;

Ủy quyền

Ủy quyền là sự phân quyền cho người dùng mà một người dùng cụ thể có thể thực hiện hành động nào.

Đâ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Ả
  2. ALTER
  3. ỦY QUYỀN
  4. TẠO NÊN
  5. RƠI VÃI
  6. SỬA ĐỔI
  7. LỰA CHỌN

Dưới đây là các 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;

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

Đây là ví dụ mà 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 lỗi được trả về.

select* form emp_bonus;

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

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ề nhận quyền từ một bảng.

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ố cổng Cassandra. Nếu các cổng Cassandra không được mở, các nút Cassandra sẽ hoạt động như một máy chủ cơ sở dữ liệu độc lập thay vì tham gia vào cụm cơ sở dữ liệu.

Cổng máy khách Cassandra

Số cổng

Sự miêu tả

9042

Cổng khách hàng Cassandra

9160

Cassandra Client Port Thrift

Các cổng Cassandra Internode

Số cổng

Sự miêu tả

7000

Giao tiếp cụm lóng Cassandra

7001

Giao tiếp cụm lóng Cassandra SSL

7199

Cổng giám sát Cassandra JMX

Cổng công cộng

Số cổng

Sự miêu tả

22

Cổng SSH

8888

Trang web OpsCenter. Yêu cầu http trình duyệt.

Cổng Cassandra OpsCenter

Số cổng

Sự miêu tả

61620

Cổng giám sát OpsCenter.

61621

Cổng đại lý trung tâm

Bậ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à bật xác thực hoặc SSL.

Sau khi bật xác thực JMX, hãy đảm bảo OpsCenter và gật đầu được định cấu hình để sử dụng xác thực.

Thủ tục

Có các bước sau để bậ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 / sang / etc / cassandra / và đổi tên nó thànhjmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Thay đổi quyền sở hữu jmxremote.password thành người dùng mà bạn điều hành Cassandra và thay đổi quyền chỉ đọc
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 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 QEDcontrolRole R&Dcassandra cassandrapassword
  1. Thêm người dùng Cassandra có quyền đọc và ghi vào /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Khởi động lại Cassandra
  2. Chạy gật đầu với người dùng và mật khẩu Cassandra.
$ nodetool status -u cassandra -pw cassandra

Tóm lược:

Hướng dẫn này giải thích về bảo mật trong Cassandra và cấu hình tệp Cassandra.yaml để kích hoạt bảo mật. Bên cạnh đó, nó cũng 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.