ทำไม SMF ถึงสูญเสียข้อมูลการกำหนดค่าเมื่อส่งออกบน SmartOS


10

ฉันใช้กระบวนการเซิร์ฟเวอร์ภายใต้ SMF (Server Management Facility) ในอิมเมจ Base64 1.8.1 SmartOS ของ Joyent

สำหรับผู้ที่ไม่ได้ใช้ SmartOS จะเป็นการแจกจ่าย IllumOS พร้อม KVM แบบคลาวด์ แต่โดยพื้นฐานแล้วมันก็เหมือนกับ Solaris และสืบทอดมาจาก OpenSolaris ดังนั้นแม้ว่าคุณจะไม่ได้ใช้ SmartOS ฉันหวังว่าจะได้รับความรู้เกี่ยวกับ Solaris บน ServerFault

ปัญหาของฉันคือฉันต้องการให้ผู้ใช้ที่ไม่มีสิทธิ์ได้รับอนุญาตให้เริ่มบริการที่พวกเขาเป็นเจ้าของ ฉันได้หาวิธีทำโดยใช้ RBAC และเพิ่มการอนุญาต/etc/security/auth_attrและการเชื่อมโยงการอนุญาตกับผู้ใช้ของฉัน

จากนั้นฉันได้เพิ่มสิ่งต่อไปนี้ในรายการ SMF สำหรับบริการ:

<property_group name='general' type='framework'>
  <!-- Allow to be restarted-->
  <propval name='action_authorization' type='astring'
    value='solaris.smf.manage.my-server-process' />
  <!-- Allow to be started and stopped -->
  <propval name='value_authorization' type='astring'
    value='solaris.smf.manage.my-server-process' />
</property_group>

และใช้งานได้ดีเมื่อนำเข้า ผู้ใช้ที่ไม่มีสิทธิ์ของฉันได้รับอนุญาตให้รีสตาร์ทเริ่มต้นและหยุดกระบวนการเซิร์ฟเวอร์ของตนเอง (นี่คือสำหรับการปรับใช้รหัสอัตโนมัติ)

อย่างไรก็ตามถ้าฉันส่งออกรายการ SMF ข้อมูลการตั้งค่านี้หายไป ... ทั้งหมดที่ฉันเห็นในส่วนนั้นคือ:

<property_group name='general' type='framework'>
  <property name='action_authorization' type='astring'/>
  <property name='value_authorization' type='astring'/>
</property_group>

ไม่มีใครรู้ว่าทำไมสิ่งนี้เกิดขึ้น? ไวยากรณ์ของฉันไม่ถูกต้องหรือฉันเพียงแค่ใช้ SMF อย่างไม่ถูกต้อง


1
Hmmm ความคิดเห็นดูเหมือนจะหายไปจากที่นี่โดยไม่มีคำพูดใด ๆ
redsquare

คำตอบ:


16

เพราะ svccfg (1M) เสียและฉันก็หัก

ย้อนกลับไปในปีพ. ศ. 2550 ฉันได้เพิ่มคุณสมบัติให้กับ SMF ซึ่งได้รับอนุญาตสำหรับกลุ่มคุณสมบัติที่อาจมีข้อมูลที่ละเอียดอ่อนสามารถอ่านได้โดยผู้ใช้ที่มีสิทธิ์ที่เหมาะสมเท่านั้น แนวคิดคือคุณสามารถเพิ่มคุณสมบัติ "read_authorization" ให้กับกลุ่มคุณสมบัติและทุกคนที่ไม่มีสิทธิพิเศษ (โดยทั่วไปคือรูท) หรืออยู่ในความครอบครองของการอนุญาตอย่างใดอย่างหนึ่งที่ตั้งชื่อโดยคุณสมบัตินั้นจะไม่สามารถอ่านค่าของคุณสมบัติใด ๆ ในกลุ่ม สิ่งนี้ถูกรวมเข้าด้วยกันภายใต้คอมมิชชันนี้และถูกใช้โดย (อย่างน้อย) ผลิตภัณฑ์จัดเก็บข้อมูล Sun ZFS เพื่อจัดเก็บสิ่งต่าง ๆ เช่นรหัสผ่าน LDAP

เป็นส่วนหนึ่งของงานนั้นเราต้องการให้แน่ใจว่าแม้ผู้ใช้ที่มีสิทธิพิเศษที่สามารถอ่านค่าเหล่านี้จะไม่เปิดเผยโดยไม่ตั้งใจโดยการส่งออกสถานะของบริการหรือสร้างที่เก็บถาวรของที่เก็บ SMF ดังนั้นฉันจึงเพิ่มแฟล็ก '-a' ลงในคำสั่งส่งออกและเก็บถาวรใน svccfg ที่จะส่งออกค่าคุณสมบัติทั้งหมดอย่างชัดเจนและเปลี่ยนค่าเริ่มต้นเพื่อแยกสิ่งที่ป้องกันการอ่านออก

น่าเสียดายที่ข้อ จำกัด นี้ไม่ได้ใช้อย่างถูกต้อง ในกรณีนี้เราเพียง แต่ปฏิเสธที่จะส่งออกคุณสมบัติใด ๆ ที่เลือกในกลุ่มคุณสมบัติ "ทั่วไป" ที่มีค่า ส่วนที่เหลือจะถูกส่งออกโดยไม่มีค่าใด ๆ ซึ่งเป็นสิ่งที่คุณเห็น และน่าเสียดายที่การใช้ตัวเลือก -a จะไม่ช่วยได้ที่นี่เพราะเมื่อเรามาถึงจุดที่เกี่ยวข้องแล้วเราก็ไม่จำเป็นต้องรู้บริบทที่คุณได้ทำไปแล้ว มันค่อนข้างยุติธรรมที่จะถามว่าควรตั้งค่าสถานะนี้เพื่อเปิดเผยค่าเหล่านี้หรือไม่: ตัวตนของการอนุญาตที่อนุญาตให้เปลี่ยนสถานะการบริการนั้นมีความอ่อนไหวและเป็นประโยชน์ต่อผู้โจมตี ไม่ต้องสงสัยเลยว่าในใจของฉันเมื่อฉันเขียนสิ่งนี้และมีเหตุผลที่จะ จำกัด สิ่งนั้นจากมุมมองของผู้อื่นเว้นแต่จะต้องการอย่างชัดเจน แต่ใน S10 เวอร์ชั่นก่อนหน้า เอ็กซ์พอร์ต XML และไฟล์เก็บถาวรมีอยู่ดังนั้นจึงเป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้แน่นอน คุณจะได้รับการอภัยด้วยความเสียใจ แต่ปัญหาจริงที่นี่คือ -a ไม่ทำงานเมื่อกลุ่มอสังหาริมทรัพย์ที่สงสัยเป็น "ทั่วไป" คุณเป็นคนแรกที่ตีนี่ฉันไม่รู้

คุณสามารถปฏิบัติตามปัญหานี้ได้ที่หน้าของที่นี่ ในระหว่างนี้คุณสามารถพิจารณาแก้ไขได้ด้วยการเพิ่มค่าของคุณสมบัติด้วยตนเองใน XML ที่สร้างขึ้น โปรดทราบว่าคุณยังสามารถอ่านผ่าน svcprop (1) หากจำเป็น คุณมีคำขอโทษของฉัน ขอบคุณ Deirdre Straughan ที่นำคำถามนี้มาให้ฉัน


1
ว้าว. ขอบคุณ Keith เนื่องจากคุณเป็นคนที่เขียนรหัสดั้งเดิมฉันค่อนข้างแน่ใจว่าฉันสามารถทำเครื่องหมายคำตอบนี้ได้อย่างถูกต้อง :-) ขอบคุณมากสำหรับรายละเอียดเบื้องหลังของปัญหานี้
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.