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
มีประเภทการอนุญาตต่อไปนี้ที่สามารถให้กับผู้ใช้ได้
- ทั้งหมด
- แก้ไข
- อนุญาต
- สร้าง
- DROP
- แก้ไข
- 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
- ในไฟล์ 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
- คัดลอก 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
- เปลี่ยนความเป็นเจ้าของ jmxremote.password เป็นผู้ใช้ที่คุณรัน Cassandra ด้วยและเปลี่ยนการอนุญาตเป็นอ่านอย่างเดียว
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- แก้ไข jmxremote.password และเพิ่มผู้ใช้และรหัสผ่านสำหรับยูทิลิตีที่สอดคล้องกับ JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- เพิ่ม Cassandra ผู้ใช้ที่มีสิทธิ์อ่านและเขียนไปยัง /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- เริ่มต้นใหม่ Cassandra
- รัน nodetool ด้วย Cassandra ผู้ใช้และรหัสผ่าน
$ nodetool status -u cassandra -pw cassandra
สรุป
บทช่วยสอนนี้จะอธิบายเกี่ยวกับการรักษาความปลอดภัยใน Cassandra และการกำหนดค่า Cassandraไฟล์ .yaml เพื่อเปิดใช้งานการรักษาความปลอดภัย นอกจากนี้ ยังอธิบายวิธีการสร้างบัญชีผู้ใช้ใหม่ การมอบหมายสิทธิ์ การกำหนดค่าไฟร์วอลล์ และอื่นๆ