Cassandra การรับรองความถูกต้องและการอนุญาต JMX: สร้างผู้ใช้

การรักษาความปลอดภัยมีสองประเภท Apache Cassandra และองค์กร Datastax

  • การรับรองความถูกต้องภายใน
  • การอนุญาต

การรับรองความถูกต้องและการอนุญาตภายในคืออะไร

การรับรองความถูกต้องภายในนั้นเป็นการตรวจสอบการเชื่อมต่อของผู้ใช้โดยทั่วไป ผู้ใช้ได้รับการรับรองความถูกต้องด้วยการเข้าสู่ระบบและรหัสผ่าน บัญชีผู้ใช้ทั้งหมดได้รับการจัดการใน Cassandra ภายใน

การอนุญาตภายในเกี่ยวข้องกับการอนุญาตของผู้ใช้ มันเกี่ยวข้องกับการกระทำที่ผู้ใช้สามารถดำเนินการได้ ตัวอย่างเช่น เราสามารถให้สิทธิ์แก่ผู้ใช้ได้ เช่น ผู้ใช้รายใดมีสิทธิ์อ่านข้อมูลเท่านั้น ผู้ใช้รายใดมีสิทธิ์เขียนข้อมูล และผู้ใช้รายใดมีสิทธิ์ลบข้อมูล

อย่างไรก็ตาม Authentication ยังสามารถควบคุมได้จากภายนอกด้วย Kerberos (Kerberos ใช้เพื่อจัดการข้อมูลประจำตัวอย่างปลอดภัย) และ LDAP (LDAP ใช้สำหรับเก็บข้อมูลที่เชื่อถือได้เกี่ยวกับบัญชี เช่น สิ่งที่พวกเขาได้รับอนุญาตให้เข้าถึง)

การรับรองความถูกต้องภายนอกคือการรับรองความถูกต้องที่รองรับ Kerberos และ LDAP Apache Cassandra ไม่รองรับการรับรองความถูกต้องภายนอก

เฉพาะองค์กร datastax เท่านั้นที่รองรับการตรวจสอบสิทธิ์ภายนอกด้วย Kerberos และ LDAP ในขณะที่การรับรองความถูกต้องภายในได้รับการสนับสนุนทั้งใน Apache Cassandra เช่นเดียวกับองค์กร Datastax

กำหนดค่าการรับรองความถูกต้องและการอนุญาต

In Cassandraโดยค่าเริ่มต้น ตัวเลือกการรับรองความถูกต้องและการอนุญาตจะถูกปิดใช้งาน คุณต้องกำหนดค่า Cassandraไฟล์ .yaml สำหรับเปิดใช้งานการรับรองความถูกต้องและการอนุญาต

จุดเปิด Cassandraไฟล์ .yaml และบรรทัดที่ไม่แสดงข้อคิดเห็นที่เกี่ยวข้องกับการรับรองความถูกต้องและการอนุญาตภายใน

กำหนดค่าการรับรองความถูกต้องและการอนุญาต

  • In Cassandraไฟล์ .yaml โดยค่าเริ่มต้นค่าตัวตรวจสอบความถูกต้องคือ 'AllowAllAuthenticator' เปลี่ยนค่าตัวตรวจสอบความถูกต้องนี้จาก 'AllowAllAuthenticator' เป็น 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'
  • ในทำนองเดียวกันค่ะ Cassandraไฟล์ .yaml โดยค่าเริ่มต้น ค่าของผู้อนุญาตจะเป็น 'AllowAllAuthorizor' เปลี่ยนค่าผู้อนุญาตนี้จาก 'AllowAllAuthorizor' เป็น 'com.datastax.bdp.cassandra.authCassandraผู้อนุญาต'.

เข้าสู่ระบบ

ตอนนี้เปิดใช้งานการรับรองความถูกต้องแล้ว หากคุณพยายามเข้าถึงคีย์สเปซใดๆ Cassandra จะส่งคืนข้อผิดพลาด

โดยค่าเริ่มต้น Cassandra ให้บัญชีซูเปอร์พร้อมชื่อผู้ใช้ 'cassandra' และรหัสผ่าน 'cassandra' โดยการเข้าสู่ระบบ 'Cassandra' บัญชี คุณสามารถทำอะไรก็ได้ที่คุณต้องการ

เรามาดูภาพหน้าจอด้านล่างนี้ ซึ่งจะไม่อนุญาตให้คุณเข้าสู่ระบบหากคุณไม่ได้ใช้ค่าเริ่มต้น Cassandra “ชื่อผู้ใช้” และ “รหัสผ่าน”

เข้าสู่ระบบ

ในภาพหน้าจอที่สอง คุณสามารถดูได้หลังจากใช้งาน Cassandra ข้อมูลรับรองการเข้าสู่ระบบเริ่มต้น คุณสามารถเข้าสู่ระบบได้

คุณสามารถสร้างผู้ใช้รายอื่นด้วยบัญชีนี้ได้ ขอแนะนำให้เปลี่ยนรหัสผ่านจากค่าเริ่มต้น นี่คือตัวอย่างการเข้าสู่ระบบ Cassandra ผู้ใช้และเปลี่ยนรหัสผ่านเริ่มต้น

เข้าสู่ระบบ

alter user cassandra with password 'newpassword';

สร้างผู้ใช้ใหม่

สามารถสร้างบัญชีใหม่ได้โดยใช้ปุ่ม 'Cassandra' บัญชี.

ในการสร้างผู้ใช้ใหม่ เข้าสู่ระบบ จะมีการระบุรหัสผ่านพร้อมกับระบุว่าผู้ใช้นั้นเป็นผู้ใช้ขั้นสูงหรือไม่ มีเพียงผู้ใช้ขั้นสูงเท่านั้นที่สามารถสร้างผู้ใช้ใหม่ได้

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

คุณสามารถรับรายชื่อผู้ใช้ทั้งหมดได้โดยใช้รูปแบบต่อไปนี้

list users;

สร้างผู้ใช้ใหม่

ผู้ใช้สามารถออกจากระบบได้โดยใช้รูปแบบต่อไปนี้

drop user laura;

การอนุญาต

การอนุญาตคือการมอบหมายสิทธิ์ให้กับผู้ใช้ว่าผู้ใช้สามารถดำเนินการใดได้บ้าง

ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับการกำหนดสิทธิ์ให้กับผู้ใช้

GRANT permission ON resource TO user

มีประเภทการอนุญาตต่อไปนี้ที่สามารถให้กับผู้ใช้ได้

  1. ทั้งหมด
  2. แก้ไข
  3. อนุญาต
  4. สร้าง
  5. DROP
  6. แก้ไข
  7. SELECT

ต่อไปนี้เป็นตัวอย่างของการมอบหมายสิทธิ์ให้กับผู้ใช้

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;

สร้างผู้ใช้ใหม่ 'laura' ด้วยรหัสผ่าน 'newhire'

นี่คือตัวอย่างที่ผู้ใช้ 'ลอร่า' พยายามเข้าถึงตาราง emp_bonus ลอร่ามีสิทธิ์เข้าถึง dev.emp เท่านั้น และไม่มีสิทธิ์เข้าถึงตารางนี้ dev.emp_bonus นั่นเป็นสาเหตุที่ส่งกลับข้อผิดพลาด

การอนุญาต

select* form emp_bonus;

คุณสามารถรับรายการสิทธิ์ทั้งหมดที่กำหนดให้กับผู้ใช้ได้ นี่คือตัวอย่างการรับข้อมูลสิทธิ์

การอนุญาต

list all permissions of laura;

คุณยังสามารถแสดงรายการสิทธิ์ทั้งหมดบนทรัพยากรได้ นี่คือตัวอย่างการขออนุญาตจากตาราง

การอนุญาต

list all permissions on dev.emp;

การกำหนดค่าไฟร์วอลล์

หากไฟร์วอลล์กำลังทำงานอยู่ จะต้องเปิดพอร์ตต่อไปนี้สำหรับการสื่อสารระหว่างโหนดรวมถึงบางโหนด Cassandra พอร์ต ถ้า Cassandra พอร์ตจะไม่ถูกเปิด Cassandra โหนดจะทำหน้าที่เป็นเซิร์ฟเวอร์ฐานข้อมูลแบบสแตนด์อโลนแทนที่จะเข้าร่วมคลัสเตอร์ฐานข้อมูล

Cassandra พอร์ตไคลเอ็นต์

หมายเลขพอร์ต Descriptไอออน
9042 Cassandra พอร์ตไคลเอนต์
9160 Cassandra ลูกค้าพอร์ต Thrift

Cassandra พอร์ตปล้อง

หมายเลขพอร์ต Descriptไอออน
7000 Cassandra การสื่อสารแบบคลัสเตอร์ระหว่างโหนด
7001 Cassandra การสื่อสารคลัสเตอร์อินเตอร์โหนด SSL
7199 Cassandra พอร์ตการตรวจสอบ JMX

พอร์ตสาธารณะ

หมายเลขพอร์ต Descriptไอออน
22 พอร์ต SSH
8888 เว็บไซต์ OpsCenter คำขอ http ของเบราว์เซอร์

Cassandra พอร์ต OpsCenter

หมายเลขพอร์ต Descriptไอออน
61620 พอร์ตการตรวจสอบ OpsCenter
61621 พอร์ตตัวแทน Opscenter

การเปิดใช้งานการรับรองความถูกต้อง JMX

ด้วยการตั้งค่าเริ่มต้นของ Cassandra, JMX สามารถเข้าถึงได้จาก localhost เท่านั้น หากคุณต้องการเข้าถึง JMX จากระยะไกล ให้เปลี่ยนการตั้งค่า LOCAL_JMX Cassandra-env.sh และเปิดใช้งานการรับรองความถูกต้องหรือ SSL

หลังจากเปิดใช้งานการตรวจสอบสิทธิ์ JMX แล้ว ให้ตรวจสอบให้แน่ใจ OpsCenter และ nodetool ได้รับการกำหนดค่าให้ใช้การรับรองความถูกต้อง

การรักษาอื่นๆ

มีขั้นตอนต่อไปนี้สำหรับการเปิดใช้งานการตรวจสอบสิทธิ์ JMX

  1. ในไฟล์ cassandra-env.sh ให้เพิ่มหรืออัปเดตบรรทัดต่อไปนี้
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

นอกจากนี้ ให้เปลี่ยนการตั้งค่า LOCAL_JMX ด้วย Cassandra-env.sh

LOCAL_JMX=no
  1. คัดลอก jmxremote.password.template จาก /jdk_install_location/lib/management/ ไปที่ /etc/cassandra/ และเปลี่ยนชื่อเป็น jmxremote.password
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. เปลี่ยนความเป็นเจ้าของ jmxremote.password เป็นผู้ใช้ที่คุณรัน Cassandra ด้วยและเปลี่ยนการอนุญาตเป็นอ่านอย่างเดียว
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. แก้ไข jmxremote.password และเพิ่มผู้ใช้และรหัสผ่านสำหรับยูทิลิตีที่สอดคล้องกับ JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. เพิ่ม Cassandra ผู้ใช้ที่มีสิทธิ์อ่านและเขียนไปยัง /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. เริ่มต้นใหม่ Cassandra
  2. รัน nodetool ด้วย Cassandra ผู้ใช้และรหัสผ่าน
$ nodetool status -u cassandra -pw cassandra

สรุป

บทช่วยสอนนี้จะอธิบายเกี่ยวกับการรักษาความปลอดภัยใน Cassandra และการกำหนดค่า Cassandraไฟล์ .yaml เพื่อเปิดใช้งานการรักษาความปลอดภัย นอกจากนี้ ยังอธิบายวิธีการสร้างบัญชีผู้ใช้ใหม่ การมอบหมายสิทธิ์ การกำหนดค่าไฟร์วอลล์ และอื่นๆ