เห็นได้ชัดว่ากรรมของฉันคือ: ดำเนินงานมาตรฐานในทุกรูปแบบที่ไม่สำคัญ หากใครมีวิสัยทัศน์ที่แตกต่างของปัญหา โปรดหารือเกี่ยวกับปัญหานั้นเพื่อจะได้แก้ไขปัญหาได้
เช้าวันหนึ่งที่ดี มีงานที่น่าสนใจเกิดขึ้นเพื่อแจกจ่ายสิทธิ์ให้กับกลุ่มผู้ใช้สำหรับการแชร์ที่แตกต่างกันซึ่งมีโฟลเดอร์ย่อยของโครงการที่มีโฟลเดอร์เอกสาร ทุกอย่างเรียบร้อยดีและมีการเขียนสคริปต์เพื่อกำหนดสิทธิ์ให้กับโฟลเดอร์ แล้วปรากฎว่ากลุ่มควรมีผู้ใช้จากโดเมนที่แตกต่างกัน จากฟอเรสต์ที่แตกต่างกัน (
หลังจากผ่านไประยะหนึ่งข้อกำหนดทางเทคนิคก็อยู่ในรูปแบบต่อไปนี้:
- 2 ป่า ได้แก่ ป่า PSI ป่า TG
- แต่ละฟอเรสต์มี 3 โดเมน: PSI (ZG, PSI, FB); ทีจี (TG, HU, KC)
- มีความสัมพันธ์ที่เชื่อถือได้ระหว่างฟอเรสต์ Synology มองเห็นกลุ่มความปลอดภัยทั้งหมดในฟอเรสต์ทั้งหมด
- การแชร์และโฟลเดอร์/โฟลเดอร์ย่อยต้องมีบัญชีผู้ดูแลระบบโดเมน FB ที่มีสิทธิ์ FullControl
- ชื่อของโฟลเดอร์ควรได้รับการจัดระบบ ฝ่ายบริหารประสานงานรหัสโครงการ ฉันตัดสินใจเชื่อมโยงชื่อกลุ่มความปลอดภัยกับรหัสโครงการ
- โฟลเดอร์โปรเจ็กต์ในการแชร์ระบบจะต้องมีโครงสร้างที่เตรียมไว้ล่วงหน้าในไฟล์ .xlsx พร้อมสิทธิ์การเข้าถึงที่เหมาะสม (R/RW/NA โดยที่ NA – ไม่มีการเข้าถึง)
- ควรเป็นไปได้ที่จะจำกัดสิทธิ์ของผู้ใช้/สมาชิกกลุ่มของโปรเจ็กต์หนึ่งไว้เฉพาะบางไดเร็กทอรีของโปรเจ็กต์นั้น ผู้ใช้อาจไม่สามารถเข้าถึงไดเร็กทอรี/โปรเจ็กต์อื่น ขึ้นอยู่กับการเป็นสมาชิกกลุ่ม
- เมื่อสร้างโฟลเดอร์โปรเจ็กต์ ควรสร้างกลุ่มโดยอัตโนมัติที่สุดเท่าที่จะเป็นไปได้ในโดเมนที่เหมาะสมพร้อมกับชื่อที่สอดคล้องกับรหัสโปรเจ็กต์
หมายเหตุเกี่ยวกับข้อกำหนดทางเทคนิค
- การตั้งค่าความสัมพันธ์ที่เชื่อถือได้ไม่รวมอยู่ในขอบเขตของข้อกำหนดทางเทคนิค
- รหัสโครงการประกอบด้วยตัวเลขและอักขระละติน
- บทบาทผู้ใช้โครงการสำหรับโดเมนทั้งหมดมีชื่อมาตรฐาน
- ไฟล์ .xlsx พร้อมโฟลเดอร์และสิทธิ์การเข้าถึง (เมทริกซ์การเข้าถึง) ได้รับการจัดเตรียมก่อนเริ่มโครงการทั้งหมด
- เมื่อดำเนินโครงการ คุณสามารถสร้างกลุ่มผู้ใช้ในโดเมนที่เกี่ยวข้องได้
- ระบบอัตโนมัติทำได้โดยใช้เครื่องมือการดูแลระบบ MS Windows มาตรฐาน
การดำเนินการตามข้อกำหนดทางเทคนิค
หลังจากทำให้ข้อกำหนดเหล่านี้เป็นทางการแล้ว จะมีการหยุดชั่วคราวทางยุทธวิธีเพื่อทดสอบวิธีการสร้างไดเร็กทอรีและการกำหนดสิทธิ์ให้กับสิ่งเหล่านั้น มีวัตถุประสงค์เพื่อใช้เฉพาะ PowerShell เท่านั้นเพื่อไม่ให้โครงการซับซ้อน อย่างที่ฉันเขียนไว้ก่อนหน้านี้ อัลกอริธึมสคริปต์ดูเหมือนค่อนข้างง่าย:
- เราลงทะเบียนกลุ่มด้วยชื่อที่ได้มาจากรหัสโครงการ (เช่น KC40587) และบทบาทที่เกี่ยวข้องที่ระบุในเมทริกซ์การเข้าถึง: KC40587-EN- สำหรับวิศวกร KC40587-PM – สำหรับผู้จัดการผลิตภัณฑ์ ฯลฯ
- เราได้รับ SID ของกลุ่มที่สร้างขึ้น
- ลงทะเบียนโฟลเดอร์โครงการและชุดไดเรกทอรีที่เกี่ยวข้อง (รายการโฟลเดอร์ย่อยขึ้นอยู่กับการแชร์ที่สร้างและกำหนดไว้ในเมทริกซ์การเข้าถึง)
- กำหนดสิทธิ์ให้กับกลุ่มสำหรับไดเรกทอรีย่อยใหม่ของโครงการตามเมทริกซ์การเข้าถึง
ความยากลำบากที่พบในระยะที่ 1:
- ความเข้าใจผิดเกี่ยวกับวิธีการระบุเมทริกซ์การเข้าถึงในสคริปต์ (ขณะนี้มีการใช้อาร์เรย์หลายมิติ แต่เส้นทางในการเติมนั้นกำลังค้นหาตามเนื้อหาของไฟล์ .xlsx/เมทริกซ์การเข้าถึง)
- ความเป็นไปไม่ได้ของการตั้งค่าสิทธิ์การเข้าถึงในการแชร์ SMB บนไดรฟ์ synology โดยใช้ PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on- nas -share?forum=winserverpowershell) เนื่องจากเสียเวลาไปมากและทุกอย่างต้องปรับให้เข้ากับสคริปต์โดยใช้ยูทิลิตี้แก้ไขสิทธิ์การเข้าถึง icacls ซึ่งจำเป็นต้องสร้างพื้นที่เก็บข้อมูลระดับกลางของข้อความและไฟล์ cmd
ในโหมดปัจจุบัน การดำเนินการของไฟล์ cmd จะถูกควบคุมด้วยตนเอง ขึ้นอยู่กับความจำเป็นในการลงทะเบียนโฟลเดอร์สำหรับโปรเจ็กต์
ปรากฎว่าควรดำเนินการสคริปต์เพื่อลงทะเบียนกลุ่มในฟอเรสต์อื่น (ใช้คำว่า ข้ามโดเมน) และอัตราส่วนไม่เพียงเป็น 1 ต่อหนึ่งเท่านั้น แต่ยังรวมถึง 1 ต่อหลาย ๆ ด้วย
ซึ่งหมายความว่ากลุ่มจากข้ามโดเมนอื่นๆ รวมถึงฟอเรสต์ใกล้เคียง สามารถอ้างสิทธิ์ในการเข้าถึงทรัพยากรของโดเมนใดก็ได้แล้ว เพื่อให้เกิดความสม่ำเสมอ จึงตัดสินใจสร้างโครงสร้างสมมาตรใน OU ของโดเมนที่ให้บริการทั้งหมดของฟอเรสต์ทั้งหมด (วงรีแนวตั้งสีดำ) อย่างที่พวกเขาพูดกันว่าในกองทัพทุกอย่างควรจะน่าเกลียด แต่ก็เหมือนกัน:
ดังนั้น เมื่อลงทะเบียนโปรเจ็กต์ 80XXX ในโดเมน TG สคริปต์จะดำเนินการ:
1. การสร้าง OU ที่เกี่ยวข้อง (วงรีแนวนอนสีแดง) ในโดเมนนี้และข้ามโดเมน นั่นคือ โดเมนที่พนักงานต้องมีสิทธิ์เข้าถึงทรัพยากรนี้
2. กรอก OU ด้วยกลุ่มที่มีชื่อเช่น - โดยที่:
- โดเมน SRC_ – ข้ามโดเมนที่พนักงานจะสามารถเข้าถึงทรัพยากรโดเมน DST
- DST_domain – โดเมนที่ควรจัดให้มีการเข้าถึงทรัพยากรซึ่งก็คือเพื่อประโยชน์ในการเริ่มต้นทุกอย่าง
- — หมายเลขโครงการ
- ROLES – ชื่อของบทบาทที่แสดงอยู่ในเมทริกซ์การเข้าถึง
3. อ่านอาร์เรย์ของ SID ของทุกกลุ่มของโดเมนที่เกี่ยวข้องทั้งหมด และบันทึกไว้สำหรับการถ่ายโอนข้อมูลในภายหลังไปยังไฟล์ที่กำหนดสิทธิ์ในโฟลเดอร์ย่อยของโครงการเฉพาะ
4. การสร้างไฟล์ต้นฉบับ (พารามิเตอร์ /กู้คืน) พร้อมชุดสิทธิ์สำหรับการใช้งานโดยยูทิลิตี้ icacKC ในโหมดไฟล์ปฏิบัติการ “icacKC "as-nasNNKCProjects" /restore C:TempKCKC40XXKC40XX.txt"
5. การสร้างไฟล์ CMD ที่รวม icacls ที่เปิดใช้งานทั้งหมดสำหรับโฟลเดอร์โครงการทั้งหมด
ตามที่เขียนไว้ก่อนหน้านี้ การเรียกใช้ไฟล์ปฏิบัติการนั้นทำได้ด้วยตนเอง และการประเมินผลผลการดำเนินการก็กระทำด้วยตนเองเช่นกัน
ความยากลำบากที่เราต้องเผชิญในท้ายที่สุด:
- หากโฟลเดอร์โปรเจ็กต์เต็มไปด้วยไฟล์จำนวนมากอยู่แล้ว การรันคำสั่ง icacls บนโวลุ่มที่มีอยู่อาจใช้เวลานานพอสมควร และในบางกรณีก็นำไปสู่ความล้มเหลว (เช่น เมื่อมีพาธของไฟล์ยาว)
- นอกเหนือจากพารามิเตอร์ /restore แล้ว เรายังต้องเพิ่มบรรทัดด้วยพารามิเตอร์ /reset ในกรณีที่ไม่ได้สร้างโฟลเดอร์ แต่ถูกถ่ายโอนจากโฟลเดอร์ที่มีอยู่ก่อนหน้านี้ โดยปิดใช้งานสิทธิ์การสืบทอดจากรูท
- ส่วนหนึ่งของสคริปต์สำหรับการสร้างกลุ่มจะต้องดำเนินการบน dc ที่กำหนดเองของแต่ละฟอเรสต์ ปัญหาเกี่ยวข้องกับบัญชีผู้ดูแลระบบสำหรับแต่ละแผนผัง
ข้อสรุปทั่วไป: เป็นเรื่องแปลกมากที่ยังไม่มีระบบสาธารณูปโภคที่มีฟังก์ชันการทำงานคล้ายกันในตลาด ดูเหมือนว่าเป็นไปได้ที่จะใช้ฟังก์ชันการทำงานที่คล้ายกันโดยอิงจากพอร์ทัล Sharepoint
นอกจากนี้ยังไม่สามารถเข้าใจได้ว่าไม่สามารถใช้ยูทิลิตี้ PoSH เพื่อตั้งค่าสิทธิ์โฟลเดอร์บนอุปกรณ์ sinology ได้
หากต้องการ ฉันพร้อมที่จะแชร์สคริปต์โดยสร้างโปรเจ็กต์บน GitHub หากใครสนใจ
ที่มา: will.com