บนเซิร์ฟเวอร์ Matrix ที่คุณติดตั้งเอง “จำกัดการลงทะเบียน” อาจหมายถึงอะไรก็ได้ ตั้งแต่การหยุดการลงทะเบียนสาธารณะทั้งหมด ไปจนถึงการอนุญาตเฉพาะผู้ที่มีรหัสเชิญเท่านั้น สำหรับ Synapse ตัวเลือกที่ง่ายที่สุดคือการปิดใช้งานการลงทะเบียนสาธารณะ หากคุณยังต้องการให้คนใหม่เข้าร่วม ให้กำหนดให้ต้องใช้โทเค็นการลงทะเบียนและให้โทเค็นที่มีจำนวนจำกัดและหมดอายุแก่แต่ละคน การควบคุมเหล่านี้มีผลต่อการสร้างบัญชีภายในเครื่องใหม่เท่านั้น ไม่ได้ลบผู้ใช้ที่มีอยู่หรือปิดใช้งานการเชื่อมต่อ Matrix
เลือกตัวควบคุมที่เหมาะสมกับเซิร์ฟเวอร์ของคุณ
| เป้าหมาย | แนวทางการเชื่อมต่อประสาท | ข้อแลกเปลี่ยนหลัก |
| มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถสร้างบัญชีได้ | ตั้งค่าenable_registration: false; ใช้ CLI ของผู้ดูแลระบบหรือเวิร์กโฟลว์ของผู้ดูแลระบบที่ควบคุมได้ | ผู้คนไม่สามารถลงทะเบียนผ่านไคลเอ็นต์ Matrix ได้ โปรดปกป้องรหัสลับการลงทะเบียนที่ใช้ร่วมกันทั้งหมด |
| เชิญชุมชนขนาดเล็กเข้าร่วม | เปิดใช้งานการลงทะเบียนและกำหนดให้ต้องใช้โทเค็นการลงทะเบียน ออกโทเค็นแบบใช้ครั้งเดียว มีอายุสั้น | ผู้ดูแลระบบต้องแจกจ่ายและจัดการโทเค็น ผู้ใดก็ตามที่ได้รับโทเค็นที่ถูกต้องสามารถใช้งานได้ |
| อนุญาตให้ประชาชนทั่วไปลงทะเบียนได้ | เปิดให้ลงทะเบียนต่อไป และเพิ่มระบบตรวจสอบป้องกันการละเมิดที่เหมาะสม เช่น CAPTCHA หรือโทเค็น รวมถึงการจำกัดอัตราการใช้งานและการตรวจสอบ | ผู้ใช้งานที่ถูกต้องจะเจอปัญหาอุปสรรคมากขึ้น และไม่มีการตรวจสอบใดเพียงอย่างเดียวที่รับประกันได้ว่าจะป้องกันการละเมิดได้ |
| ใช้ผู้ให้บริการยืนยันตัวตน | กำหนดค่า SSO และปิดใช้งานการสร้างบัญชีอัตโนมัติในการตั้งค่า Synapse ของผู้ให้บริการ เมื่อจำเป็นต้องอนุมัติการเข้าถึงล่วงหน้า | ต้องมีการจัดการโดยผู้ให้บริการยืนยันตัวตน การเข้าสู่ระบบ SSO ที่ถูกต้องไม่ได้หมายความว่าต้องมีบัญชี Matrix อยู่แล้วเสมอไป |
ตัวอย่างด้านล่างนี้ใช้สำหรับ Synapse Dendrite, Conduit และระบบโฮมเซิร์ฟเวอร์อื่นๆ ใช้ส่วนต่อประสานการกำหนดค่าและการจัดการที่แตกต่างกัน โปรดตรวจสอบเอกสารประกอบของเซิร์ฟเวอร์ของคุณก่อนที่จะนำการตั้งค่า Synapse ไปใช้
ตัวเลือกที่ 1: ปิดการลงทะเบียนสาธารณะ
สำหรับเซิร์ฟเวอร์ส่วนตัวที่บ้าน องค์กรขนาดเล็ก หรือเซิร์ฟเวอร์ที่ผู้ดูแลระบบเป็นผู้กำหนดค่าแต่ละบัญชี ให้ปิดใช้งานการลงทะเบียนไคลเอ็นต์ในการกำหนดค่า Synapse ที่ใช้งานอยู่:
enable_registration: false
Synapse ระบุว่าการตั้งค่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น แก้ไขไฟล์การกำหนดค่าที่บริการหรือคอนเทนเนอร์ของคุณโหลดจริง ตรวจสอบความถูกต้องของไฟล์ YAML จากนั้นรีสตาร์ท Synapse โดยใช้กระบวนการจัดการบริการตามปกติของคุณ การใช้งาน Docker อาจติดตั้งการกำหนดค่าจากพาธของโฮสต์ ดังนั้นการแก้ไขไฟล์ที่มีชื่อคล้ายกันภายในคอนเทนเนอร์อาจไม่เปลี่ยนแปลงไฟล์ที่ใช้เมื่อเริ่มต้นระบบ
เมื่อปิดการลงทะเบียน ผู้ใช้จะไม่สามารถสร้างบัญชีใหม่ผ่านขั้นตอนการลงทะเบียนไคลเอ็นต์ตามปกติได้ ผู้ดูแลระบบยังคงสามารถสร้างบัญชีได้ผ่านวิธีการบริหารจัดการที่รองรับ Synapse เตือนอย่างชัดเจนว่าการตั้งค่านี้registration_shared_secretอนุญาตให้สร้างบัญชีโดยใช้รหัสลับนั้นได้ แม้ว่าenable_registrationจะเป็นเท็จก็ตาม โปรดถือว่ารหัสลับนี้เป็นข้อมูลประจำตัวที่มีผลกระทบสูง: เก็บให้ห่างจากที่เก็บข้อมูล การแชท และการรั่วไหลของสภาพแวดล้อมสาธารณะ จำกัดการเข้าถึง และเก็บไว้เฉพาะเมื่อเวิร์กโฟลว์การดูแลระบบของคุณต้องการเท่านั้น ใครก็ตามที่มีรหัสลับนี้สามารถสร้างบัญชีได้ รวมถึงบัญชีผู้ดูแลระบบด้วย
หากคุณใช้ OIDC, CAS หรือการผสานรวม SSO อื่นๆ โปรดตรวจสอบการตั้งค่าการลงทะเบียนอัตโนมัติของผู้ให้บริการนั้นๆ ด้วย Synapse ได้บันทึกการตั้งค่าการลงทะเบียนระดับผู้ให้บริการไว้ เนื่องจากมิเช่นนั้นผู้ใช้อาจถูกสร้างขึ้นโดยอัตโนมัติเมื่อเข้าสู่ระบบ SSO สำเร็จครั้งแรก สำหรับ OIDC โปรดตรวจสอบoidc_providers[].enable_registrationการตั้งค่าการลงทะเบียนทั่วไปด้วยเช่นกัน
ตัวเลือกที่ 2: อนุญาตให้ลงทะเบียนโดยใช้โทเค็นเท่านั้น
ใช้โทเค็นการลงทะเบียนเมื่อสมาชิกควรสามารถสร้างบัญชีของตนเองได้ แต่การลงทะเบียนควรได้รับการอนุมัติหรือแจกจ่ายโดยผู้ดูแลระบบ ในการตั้งค่า Synapse ให้ตั้งค่าทั้งสองค่าดังนี้:
enable_registration: true
registration_requires_token: true
ทั้งสองอย่างจำเป็น: การตั้งค่าโทเค็นต้องใช้โทเค็นระหว่างการลงทะเบียน ในขณะที่การลงทะเบียนเองก็ต้องเปิดใช้งานด้วยเช่นกัน บันทึกการเปลี่ยนแปลงและรีสตาร์ท Synapse บัญชีที่มีอยู่และโทเค็นที่สร้างไว้ก่อนหน้านี้จะไม่ถูกลบออกโดยการเปลี่ยนแปลงการตั้งค่านี้
สร้างโทเค็นที่มีการใช้งานจำกัด
Synapse มี API สำหรับผู้ดูแลระบบที่ต้องการโทเค็นการลงทะเบียน การร้องขอต้องใช้โทเค็นการเข้าถึงของผู้ดูแลระบบ ตัวอย่างเช่น การร้องขอนี้จะสร้างโทเค็นที่สามารถใช้ลงทะเบียนได้หนึ่งครั้ง:
curl -sS -X POST "$SYNAPSE_URL/_synapse/admin/v1/registration_tokens/new" \
-H "Authorization: Bearer $ADMIN_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data '{"uses_allowed": 1}'
แทนที่ตัวแปรสภาพแวดล้อมด้วย URL พื้นฐานของโฮมเซิร์ฟเวอร์ของคุณและโทเค็นการเข้าถึงของผู้ดูแลระบบ เก็บโทเค็นของผู้ดูแลระบบไว้เป็นส่วนตัวและหลีกเลี่ยงการวางคำสั่งที่มีข้อมูลประจำตัวจริงลงในบันทึกที่ใช้ร่วมกันหรือโพสต์การสนับสนุน API ยังสามารถรับเวลาหมดอายุเป็นมิลลิวินาทีตั้งแต่ยุค Unix ได้ด้วย ใช้โทเค็นแบบใช้ครั้งเดียวสำหรับการเชิญแต่ละครั้งและตั้งค่าการหมดอายุเมื่อเวิร์กโฟลว์ของคุณสามารถคำนวณและบำรุงรักษาได้อย่างน่าเชื่อถือ โทเค็นที่มีการละเว้นข้อจำกัดอาจใช้งานได้ไม่จำกัดและไม่มีวันหมดอายุ ดังนั้นโปรดตรวจสอบฟิลด์ที่ส่งคืนก่อนที่จะแจกจ่าย
ในการตรวจสอบโทเค็น ผู้ดูแลระบบสามารถเรียกใช้เมธอด `getTokenSelector` ได้GET /_synapse/admin/v1/registration_tokensการตอบสนองจะแสดงจำนวนการใช้งานที่ได้รับอนุญาต การลงทะเบียนที่รอดำเนินการ การลงทะเบียนที่เสร็จสมบูรณ์ และวันหมดอายุ หากโทเค็นรั่วไหล ให้อัปเดตจำนวนการใช้งานที่ได้รับอนุญาตเป็นศูนย์ หรือลบโทเค็นนั้นผ่าน API ของผู้ดูแลระบบตามที่ระบุไว้ในเอกสาร โทเค็นเป็นข้อมูลประจำตัวสำหรับการลงทะเบียน ไม่ใช่คำเชิญเข้าร่วมห้องใน Matrix และจะไม่เพิ่มบัญชีใหม่เข้าสู่ห้องโดยอัตโนมัติ
หมายเหตุสำคัญเกี่ยวกับความเข้ากันได้: API สำหรับการจัดการโทเค็นการลงทะเบียนของ Synapse จะถูกปิดใช้งานเมื่อเปิดใช้งานการผสานรวม Matrix Authentication Service (MAS) ในการตั้งค่าดังกล่าว ให้ใช้ API สำหรับการจัดการของ MAS หรือ MAS CLI ที่ระบุไว้ในเอกสารสำหรับการใช้งานของคุณแทน อย่าคิดว่าคำสั่งโทเค็นของ Synapse จะใช้งานได้โดยไม่เปลี่ยนแปลงกับ MAS
ตัวเลือกที่ 3: เพิ่มการตรวจสอบในการลงทะเบียนสาธารณะ
หากเป้าหมายของคุณคือการอนุญาตให้ทุกคนขอสร้างบัญชีได้ การกำหนดให้ใช้โทเค็นอาจเป็นข้อจำกัดมากเกินไป เอกสารการตั้งค่าของ Synapse ยังระบุถึงข้อกำหนด CAPTCHA และตัวระบุบุคคลที่สาม (3PID) ที่อาจใช้เป็นวิธีการตรวจสอบได้ CAPTCHA ขึ้นอยู่กับผู้ให้บริการที่ตั้งค่าอย่างถูกต้อง และอาจเพิ่มต้นทุนด้านการเข้าถึงและความเป็นส่วนตัว การกำหนดให้ใช้ที่อยู่อีเมลหรือหมายเลขโทรศัพท์อาจเพิ่มความซับซ้อนในการตั้งค่าและการตรวจสอบ ซึ่งไม่เหมือนกับการอนุมัติแต่ละบัญชี โปรดยืนยันว่าเวอร์ชันและขั้นตอนการทำงานของไคลเอ็นต์ของคุณรองรับบริการตรวจสอบใดบ้างก่อนที่จะกำหนดให้ 3PID เป็นข้อกำหนดในการตรวจสอบ
การจำกัดอัตราการใช้งานมีประโยชน์ควบคู่ไปกับการควบคุมเหล่านี้ เพราะจะช่วยลดการร้องขอซ้ำซ้อน แต่ไม่ได้ตัดสินว่าใครได้รับอนุญาตให้ลงทะเบียน ตรวจสอบความพยายามในการลงทะเบียนและบันทึกของเซิร์ฟเวอร์ และปรับแต่งขีดจำกัดให้เหมาะสมกับปริมาณการใช้งานและการใช้งานระบบของคุณ หลีกเลี่ยงการคัดลอกส่วนของการกำหนดค่าเก่าโดยไม่ตรวจสอบเวอร์ชัน Synapse ที่ติดตั้งไว้ของคุณก่อน เนื่องจากตัวเลือกการลงทะเบียนและบริการระบุตัวตนมีการเปลี่ยนแปลงไปตามกาลเวลา
สิ่งที่การปิดการลงทะเบียนเปลี่ยนแปลง—และสิ่งที่ไม่เปลี่ยนแปลง—ทำให้เกิดขึ้น
- ฟังก์ชันนี้ใช้ควบคุมการสร้างบัญชีผู้ใช้ใหม่ในเครื่อง การปิดใช้งานการลงทะเบียนจะขัดขวางขั้นตอนการสร้างบัญชีตามปกติบนโฮมเซิร์ฟเวอร์ของคุณ
- ระบบจะไม่ลบบัญชีผู้ใช้ บัญชีผู้ใช้เดิมจะยังคงอยู่ เว้นแต่คุณจะระงับหรือปิดใช้งานบัญชีเหล่านั้นด้วยตนเอง
- การดำเนินการนี้ไม่ได้ปิดใช้งานการเชื่อมต่อเครือข่าย (federation)ผู้ใช้บนโฮมเซิร์ฟเวอร์อื่นยังคงสามารถสื่อสารกับผู้ใช้และห้องในพื้นที่ได้ โดยขึ้นอยู่กับการเป็นสมาชิกห้องและการตั้งค่าการเชื่อมต่อเครือข่าย
- การตั้งค่านี้ไม่ได้ทำให้ห้องนั้นเข้าได้เฉพาะผู้ได้รับเชิญเท่านั้นกฎการเข้าร่วมห้องเป็นเรื่องที่ต้องตั้งค่าแยกต่างหาก โทเค็นการลงทะเบียนไม่ได้ใช้แทนการเชิญเข้าร่วมห้อง
- ไม่ได้หมายความว่าจะปิดกั้นทุกเส้นทางการจัดเตรียมข้อมูลเสมอไป API สำหรับผู้ดูแลระบบ รหัสลับร่วมที่กำหนดค่าไว้ บริการแอปพลิเคชัน และการตั้งค่าการสร้างบัญชี SSO จำเป็นต้องได้รับการตรวจสอบแยกต่างหาก
กฎพร็อกซีแบบย้อนกลับที่ซ่อน URL การลงทะเบียนสามารถเป็นการควบคุมระดับเครือข่ายเพิ่มเติมได้ แต่ก็อาจทำให้การทำงานของไคลเอ็นต์หยุดชะงักได้ง่าย และไม่สามารถทดแทนการกำหนดค่าของโฮมเซิร์ฟเวอร์ได้ ควรใช้การตั้งค่าระดับแอปพลิเคชันเป็นการควบคุมหลัก และทดสอบการใช้งานจริงหลังจากเปลี่ยนพร็อกซีแล้ว
ตรวจสอบผลลัพธ์
- ตรวจสอบแหล่งที่มาของการกำหนดค่าที่มีผลบังคับใช้ รวมถึงการเมานต์คอนเทนเนอร์หรือการกำหนดค่าที่สร้างขึ้น เพื่อดูค่าการลงทะเบียนที่ต้องการ
- รีสตาร์ท Synapse และตรวจสอบบันทึกการเริ่มต้นระบบเพื่อหาข้อผิดพลาด YAML หรือการตั้งค่าที่ไม่รองรับ
- จากไคลเอนต์ Matrix ที่ไม่ได้ล็อกอิน ลองเริ่มการลงทะเบียนใหม่ หากปิดใช้งานการลงทะเบียน ขั้นตอนจะไม่แสดงการลงทะเบียนสาธารณะที่ใช้งานได้ หากเปิดใช้งานการลงทะเบียนที่ต้องใช้โทเค็น คำขอที่ไม่มีโทเค็นที่ถูกต้องจะไม่สำเร็จ
- สำหรับการลงทะเบียนโทเค็น ให้ทดสอบด้วยโทเค็นชั่วคราวแบบใช้ครั้งเดียว และตรวจสอบให้แน่ใจว่าสามารถสร้างบัญชีได้เพียงบัญชีเดียวเท่านั้น ตรวจสอบการตอบสนองของ Admin API เพื่อดู ข้อมูล
completed, pending, และวันหมดอายุ
- ทดสอบเส้นทาง SSO ที่กำหนดค่าแยกต่างหากและสคริปต์การจัดเตรียมบัญชีใดๆ ยืนยันว่าสคริปต์เหล่านั้นทำงานตามนโยบายการเข้าถึงของคุณ
อย่าใช้โทเค็นเชิญจริงสำหรับบัญชีทดสอบ เว้นแต่คุณตั้งใจจะใช้งานจริง หากการตั้งค่าดูเหมือนจะไม่ได้ผล ให้ตรวจสอบก่อนว่าคุณได้เปลี่ยนไฟล์ที่ Synapse โหลดจริงหรือไม่ และบริการได้รีสตาร์ทแล้ว จากนั้นตรวจสอบรหัสลับการลงทะเบียนที่ใช้ร่วมกัน การลงทะเบียนอัตโนมัติ SSO หรือกลไกการจัดเตรียมที่เชื่อถือได้อื่นๆ
เอกสารอ้างอิงอย่างเป็นทางการ
เอกสารการกำหนดค่าเวอร์ชันและเอกสาร API สำหรับผู้ดูแลระบบของ Synapse เป็นแหล่งข้อมูลที่ถูกต้องสำหรับชื่อตัวเลือกและฟิลด์คำขอ คำแนะนำข้างต้นไม่ได้สมมติว่าใช้ระบบปฏิบัติการ รูปภาพคอนเทนเนอร์ พร็อกซีแบบย้อนกลับ หรือไคลเอ็นต์ Matrix ใดโดยเฉพาะ โปรดยืนยันรายละเอียดเฉพาะของการใช้งานเหล่านั้นก่อนทำการเปลี่ยนแปลง