เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

1.7 การควบคุมการเข้าถึง


การจัดการประเภทการเข้าถึงที่ผู้ใช้ควรได้รับ (อ่าน เขียน ฯลฯ) เรียกว่า

การควบคุมการเข้าถึง. คำสั่งการกำหนดค่าที่เกี่ยวข้องเรียกว่ารายการควบคุมการเข้าถึงหรือ ACL


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


ในการรับ ACL ที่มีประสิทธิภาพสำหรับการสืบค้น LDAP เราต้องดูรายการ ACL ของฐานข้อมูลที่กำลังถูกสืบค้น เช่นเดียวกับรายการของอินสแตนซ์ฐานข้อมูลส่วนหน้าพิเศษ ACL ที่เป็นของกลุ่มหลังทำหน้าที่เป็นค่าเริ่มต้นในกรณีที่ค่าเดิมไม่ตรงกัน ฐานข้อมูลส่วนหน้าเป็นฐานข้อมูลที่สองที่ได้รับการพิจารณา และ ACL ที่จะใช้เป็นฐานข้อมูลแรกที่ตรงกัน ("คู่แรกชนะ") จากแหล่งที่มาของ ACL 2 แหล่งเหล่านี้ คำสั่งต่อไปนี้จะให้ ACL ของฐานข้อมูล mdb ตามลำดับ ("dc=example,dc=com") และของฐานข้อมูลส่วนหน้า:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={1}mdb)' olcAccess


dn: olcDatabase={1}mdb,cn=config

olcAccess: {0}to attrs=userPassword โดยเขียนเองโดยที่ไม่ระบุชื่อ auth โดย * none olcAccess: {1}to attrs=shadowLastChange โดยเขียนเองโดย * read

olcAccess: {2}เป็น * โดย * read


ภาพ

rootDN มีสิทธิ์เต็มรูปแบบในฐานข้อมูลเสมอ และไม่จำเป็นต้องรวมอยู่ใน ACL ใดๆ



sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={-1}frontend)' olcAccess


dn: olcDatabase={-1}ส่วนหน้า,cn=config

olcAccess: {0}ถึง * โดย dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external

,cn=auth จัดการโดย * break

olcAccess: {1}to dn.exact="" โดย * read

olcAccess: {2}to dn.base="cn=Subschema" โดย * read


ACL สองรายการแรกมีความสำคัญอย่างยิ่ง:


olcAccess: {0}to attrs=userPassword โดยเขียนเองโดยที่ไม่ระบุชื่อ auth โดย * none olcAccess: {1}to attrs=shadowLastChange โดยเขียนเองโดย * read


นี้สามารถแสดงแตกต่างกันสำหรับการย่อยอาหารได้ง่ายขึ้น:


ไปที่ attrs=userPassword



โดยตัวเองเขียน

โดยการตรวจสอบที่ไม่ระบุชื่อโดย * none


to attrs=shadowLastChange โดยเขียนเอง

โดย * read


ACL เหล่านี้บังคับใช้สิ่งต่อไปนี้:

• การเข้าถึง 'รับรองความถูกต้อง' แบบไม่ระบุชื่อมีไว้สำหรับ รหัสผ่านผู้ใช้ แอตทริบิวต์เพื่อให้ผู้ใช้สามารถตรวจสอบหรือ ผูก. อาจเป็นการตอบโต้โดยสัญชาตญาณว่า 'การตรวจสอบสิทธิ์แบบไม่ระบุตัวตน' เป็นสิ่งจำเป็นแม้ว่าการเข้าถึง DIT แบบไม่ระบุชื่อจะเป็นแบบไม่พึงประสงค์ มิฉะนั้น นี่อาจเป็นปัญหาของไก่และไข่: ก่อนการตรวจสอบสิทธิ์ ผู้ใช้ทั้งหมดจะไม่ระบุชื่อ

•ความ โดยตัวเองเขียน ACL ให้สิทธิ์ในการเขียนถึง รหัสผ่านผู้ใช้ ให้กับผู้ใช้ที่รับรองความถูกต้องว่าเป็น dn ที่แอตทริบิวต์อาศัยอยู่ กล่าวอีกนัยหนึ่งผู้ใช้สามารถอัปเดต รหัสผ่านผู้ใช้ คุณลักษณะของรายการของตนเอง

•ความ รหัสผ่านผู้ใช้ ผู้ใช้รายอื่นไม่สามารถเข้าถึงแอตทริบิวต์ได้ ยกเว้น rootDN ซึ่งเข้าถึงได้เสมอและไม่จำเป็นต้องมีการกล่าวถึงอย่างชัดเจน

• เพื่อให้ผู้ใช้เปลี่ยนรหัสผ่านของตนเองได้โดยใช้ passwd หรือสาธารณูปโภคอื่น ๆ ของผู้ใช้เอง เงาLastChange แอตทริบิวต์จะต้องเขียนได้ ผู้ใช้ไดเร็กทอรีอื่น ๆ ทั้งหมดสามารถอ่านเนื้อหาของแอตทริบิวต์นี้ได้


สามารถค้นหา DIT นี้โดยไม่ระบุชื่อได้เนื่องจาก 'to * โดย * read' ใน ACL นี้ ซึ่งให้สิทธิ์การเข้าถึงแบบอ่านสำหรับทุกสิ่งอื่นๆ โดยทุกคน (รวมถึงแบบไม่ระบุตัวตน):


ถึง *

โดย * read


หากเป็นสิ่งที่ไม่ต้องการ คุณต้องเปลี่ยน ACL ในการบังคับการรับรองความถูกต้องระหว่างการร้องขอการผูก คุณสามารถอีกทางหนึ่ง (หรือร่วมกับ ACL ที่แก้ไข) ให้ใช้คำสั่ง 'olcRequire: authc'


ตามที่กล่าวไว้ก่อนหน้านี้ ไม่มีบัญชีผู้ดูแลระบบ ("rootDN") ที่สร้างขึ้นสำหรับฐานข้อมูล slapd-config อย่างไรก็ตาม มีข้อมูลประจำตัวของ SASL ที่ได้รับสิทธิ์เข้าถึงแบบเต็ม มันแสดงถึง superuser ของ localhost (root/ sudo) นี่คือ:


dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=ภายนอก,cn=auth


คำสั่งต่อไปนี้จะแสดง ACL ของฐานข้อมูล slapd-config:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={0}config)' olcAccess


dn: olcDatabase={0}config,cn=config

olcAccess: {0}ถึง * โดย dn.exact=gidNumber=0+uidNumber=0,cn=peercred, cn=external,cn=auth จัดการโดย * break


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


1. คุณต้องใช้ sudo ให้กลายเป็นเอกลักษณ์ของรูทเพื่อให้ ACL ตรงกัน

2. กลไกภายนอกทำงานผ่าน IPC (ซ็อกเก็ตโดเมน UNIX) ซึ่งหมายความว่าคุณต้องใช้ ลดาปี

รูปแบบ URI


วิธีรวบรัดในการรับ ACL ทั้งหมดมีดังนี้:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcAccess=*)' olcAccess olcSuffix

มีหลายสิ่งที่จะพูดในหัวข้อการควบคุมการเข้าถึง ดูหน้าคนสำหรับ slapd.access4.


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: