คำถามของคุณดูเหมือนจะไม่มีข้อสันนิษฐานเกี่ยวกับแพลตฟอร์ม / ระบบปฏิบัติการที่เป็นเรื่องเกี่ยวกับ ซึ่งเป็นเหตุผลว่าทำไมจึงควรเพิ่มคำตอบเกี่ยวกับวิธีการทำ / แก้ไขในสภาพแวดล้อมเมนเฟรมโดยที่ "วิศวกร" (ในชื่อคำถามของคุณ) เป็นกลุ่มคนที่มีหลายสิบคน ที่เกี่ยวข้อง คำตอบของฉันขึ้นอยู่กับการใช้ผลิตภัณฑ์ SCM ที่ฉันคุ้นเคยมากที่สุด (ไม่แน่ใจว่าจำเป็นต้องเปิดเผยชื่อผลิตภัณฑ์)
1. สถาปัตยกรรม
นี่คือไฮไลท์ของวิธีที่ฉันจะตอบคำถามของคุณ:
- รหัสทั้งหมด (และสิ่งประดิษฐ์ที่เกี่ยวข้องเช่น executables ฯลฯ ) ถูกเก็บไว้ในไฟล์ที่มารวมกันทั้งหมดคือสิ่งที่เราเรียกโครงสร้างห้องสมุด
- สำหรับแต่ละสภาพแวดล้อมในแต่ละระบบเป้าหมาย (อาจเป็นระยะไกล) จะมีเซิร์ฟเวอร์ ("งานเริ่มต้น" ในเมนเฟรมพูด) ซึ่งดูแล ALL (ซ้ำ: ALL) อัปเดตทุกอย่างในโครงสร้างไลบรารี มีข้อยกเว้นบางประการ (เช่นผู้รักษาความปลอดภัยหรือทีมจัดการพื้นที่) แต่นอกเหนือจากนั้นไม่มีใคร (ซ้ำ: ไม่มีใคร) มีสิทธิ์ในการใช้การอัปเดตไฟล์ใด ๆ ภายในโครงสร้างไลบรารีนั้น ในคำอื่น ๆ : เซิร์ฟเวอร์ที่ได้รับการปรับปรุงอำนาจพิเศษให้กับโครงสร้างห้องสมุดทั้งหมด ข้อควรระวัง: OPS- ผู้คนจะเป็นบ้าถ้าคุณเดินเข้ามาเพื่อ จำกัด การเข้าถึงของพวกเขา (ในตอนแรกพวกเขาจะต่อต้าน ... ) ดังนั้นให้แน่ใจว่าคุณได้รับการคุ้มครองจากผู้บริหารระดับสูง (CxO) เพื่อกำหนดกฎการเข้าถึงเหล่านั้น ...
- ซอฟต์แวร์ที่เกิดขึ้นจริงการเปลี่ยนแปลงของฉันประกอบด้วยองค์ประกอบเดียว (แก้ไขรหัสเล็ก ๆ ในกลางดึก ... ) หรือมันอาจจะเป็นหลายร้อยหรือหลายพันแหล่งที่มาปฏิบัติการหรือสิ่งประดิษฐ์อื่น ๆ (ในช่วงสุดสัปดาห์ที่วางจำหน่าย) เพื่อให้พวกเขาสามารถจัดการกับสิ่งที่ควรจะย้าย (มากหรือน้อย) ร่วมกันในเวลาเดียวกันมีการรวมเข้าด้วยกันในสิ่งที่เรียกว่าแพคเกจการเปลี่ยนแปลงซอฟแวร์
ด้วยสิ่งที่กล่าวมาข้างต้นการปรับปรุงใด ๆ ที่เซิร์ฟเวอร์จะนำไปใช้กับโครงสร้างไลบรารีจะสามารถทำได้ผ่านเวิร์กโฟลว์ที่กำหนดไว้อย่างดีซึ่งเราเรียกว่าวงจรชีวิตของแพ็คเกจการเปลี่ยนแปลงซอฟต์แวร์ (SDLC หากคุณต้องการ) ในการดำเนินขั้นตอนต่าง ๆ ในเวิร์กโฟลว์นั้นจริง ๆ นี่คือสิ่งที่จะทำให้เกิดขึ้น:
- เฉพาะเซิร์ฟเวอร์เท่านั้นที่จะดำเนินการตามขั้นตอนที่จำเป็น (และกำหนดค่าล่วงหน้า)
- เซิร์ฟเวอร์จะทำขั้นตอนเฉพาะ (= อัปเดตบางสิ่งบางอย่างในโครงสร้างไลบรารี) หลังจากรวบรวมการอนุมัติที่จำเป็น (จากมนุษย์) เพื่อดำเนินขั้นตอนดังกล่าว
- การอนุมัติสามารถมอบให้โดยผู้ใช้ที่มีบทบาทที่อนุญาตให้พวกเขา (= สิทธิ์) เพื่อออกการอนุมัติดังกล่าว
2. บทบาทและการอนุญาต
เซิร์ฟเวอร์จะตรวจสอบให้แน่ใจว่าผู้ใช้ที่พยายามทำบางสิ่งบางอย่างเกิดขึ้น (เช่น 'อนุมัติบางสิ่งบางอย่าง') จะสามารถทำได้หากสิทธิ์ของผู้ใช้นั้นเหมาะสม ส่วนนั้นเป็นเรื่องง่าย แต่คุณไม่ต้องการใช้ระบบ SCM เพื่อจัดการสิทธิ์เหล่านั้นทั้งหมดสำหรับผู้ใช้ที่เกี่ยวข้องนั่นคือสิ่งที่อยู่ในระบบความปลอดภัยของคุณ (ไม่ใช่ระบบ SCM!) เพื่อให้คุณสามารถปรับเวิร์กโฟลว์ของคุณ (ในระบบ SCM ของคุณ) เพื่อไปตรวจสอบสิทธิ์เหล่านั้นทุกครั้งที่เหมาะสม ขั้นตอนด้านล่างให้รายละเอียดเพิ่มเติมเกี่ยวกับที่
ขั้นตอนที่ 1: กำหนดค่าการอนุญาต (ในระบบความปลอดภัย)
กำหนดเอนทิตีความปลอดภัยในระบบความปลอดภัยของคุณด้วยชื่อที่กำหนดไว้อย่างดีสำหรับเอนทิตีเหล่านั้น ตัวอย่างไม่กี่ (เพิ่มเป็นคนที่คล้ายกันมากเพื่อให้เหมาะกับความต้องการของคุณ):
PrmUnit
ที่ใช้สำหรับการได้รับสิทธิ์ในการขอให้มีการส่งเสริมที่จะบอกว่าหน่วย -testing
PrmQA
ใช้สำหรับการขออนุญาตเพื่อขอโปรโมตเพื่อบอกQa - การทดสอบ (สมมติว่านี่เป็นระดับสูงสุดของการทดสอบ)
PrdEnduser
ใช้โดยผู้ใช้ปลายทางที่เกี่ยวข้องกับการทดสอบในระดับหนึ่งเพื่อระบุว่าพวกเขาพอใจกับผลลัพธ์ที่ได้จากการทดสอบบางประเภท และด้วยเหตุนี้ผู้ใช้ปลายทางจึงเห็นด้วยกับการเปลี่ยนแปลงที่ก้าวไปข้างหน้าในโครงสร้างห้องสมุด
PrdRelmgnt
ใช้โดยผู้จัดการรีลีสเพื่ออนุญาตการเปิดใช้งานในการผลิต (= ระดับสุดท้าย / สูงสุดในโครงสร้างไลบรารี)
กำหนดกลุ่มผู้ใช้ในระบบความปลอดภัยของคุณ ตัวอย่างไม่กี่ (เพิ่มเป็นคนที่คล้ายกันมากเพื่อให้เหมาะกับความต้องการของคุณ):
GrpDevs
ซึ่ง (พูด) ตรงกับนักพัฒนาของคุณ (อาจมากกว่า 1)
GrpEnduser
ซึ่ง (พูด) นั้นสอดคล้องกับผู้ใช้ปลายทางของคุณ (อย่างน้อย 1 คนควรมีผู้ใช้ที่คล้ายกันมากกว่า)
GrpRelMgnt
ซึ่ง (พูด) ตรงกับผู้จัดการการปล่อยของคุณ (อย่างน้อย 1 คนโดยเฉพาะอย่างยิ่งผู้ใช้อีกไม่กี่คน)
ให้สิทธิ์นอกจากนี้ยังใช้ระบบรักษาความปลอดภัยของคุณเพื่ออนุญาตการเข้าถึง " เอนทิตีความปลอดภัย " ที่เลือกสำหรับ " กลุ่มผู้ใช้ " ที่เลือก เพื่อดำเนินการตามตัวอย่างด้านบนนี่คือสิ่งที่เหมาะสม (ปรับให้เหมาะกับความต้องการของคุณ):
- กลุ่ม
GrpDevs
ได้รับการเข้าถึง (เท่านั้น!) PrmUnit
นิติบุคคลที่การรักษาความปลอดภัย
- กลุ่ม
GrpEnduser
ได้รับการเข้าถึง (เท่านั้น!) PrdEnduser
นิติบุคคลที่การรักษาความปลอดภัย
- กลุ่ม
GrpRelMgnt
ได้รับการเข้าถึง (ทั้งสอง!) นิติบุคคลที่การรักษาความปลอดภัย และPrmQA
PrdRelmgnt
ขั้นตอนที่ 2: กำหนดค่าเวิร์กโฟลว์ (ในระบบ SCM)
หลังจากกำหนดค่าการอนุญาตในระบบความปลอดภัยของคุณ (เช่นเดียวกับในขั้นตอนที่ 1) สิ่งที่เหลืออยู่ในระบบ SCM ของคุณคือการกำหนดค่าว่าขั้นตอนต่างๆใน lifecyle ตรงกับหน่วยงานความปลอดภัยที่เกี่ยวข้องในระบบความปลอดภัยของคุณ นั่นคือเฉพาะผู้ใช้ที่มีสิทธิ์เข้าถึงหน่วยงานความปลอดภัยที่ต้องการเท่านั้นที่ได้รับอนุญาตให้ร้องขอเซิร์ฟเวอร์เพื่อดำเนินการตามขั้นตอนที่เกี่ยวข้องในเวิร์กโฟลว์
นี่คือตัวอย่างของวิธีที่คุณกำหนดค่าระบบ SCM ของคุณเพื่อให้เกิดเวทมนตร์:
- หากผู้ใช้มีการเข้าถึง
PrmUnit
แล้วผู้ที่ได้รับอนุญาตดังกล่าวเพื่อขอส่งเสริมการหน่วย -testing เห็นได้ชัดว่าผู้ใช้ในกลุ่มGrpDevs
เป็นผู้ใช้ที่ได้รับอนุญาตสำหรับเรื่องนี้ (หมายเหตุ: ไม่เช่นผู้ใช้ในกลุ่มGrpRelMgnt
)
- หากผู้ใช้มีการเข้าถึง
PrmQA
แล้วผู้ที่ได้รับอนุญาตดังกล่าวเพื่อขอส่งเสริมการควบคุมคุณภาพ -testing เห็นได้ชัดว่าผู้ใช้ในกลุ่มGrpRelMgnt
เป็นผู้ใช้ที่ได้รับอนุญาตนี้ (หมายเหตุ: ไม่เช่นผู้ใช้ในกลุ่มGrpDevs
หรือในกลุ่มGrpEnduser
)
- หากผู้ใช้มีการเข้าถึง
PrdEnduser
ผู้ใช้ดังกล่าวจะได้รับอนุญาตให้อนุญาตการเปลี่ยนแปลงที่กำลังดำเนินการไปข้างหน้าในโครงสร้างไลบรารี (ซึ่งโดยทั่วไปจะเป็นข้อกำหนดเบื้องต้นสำหรับผู้ใช้ในกลุ่มGrpRelMgnt
เพื่อให้สามารถตรวจสอบการเปลี่ยนแปลงได้) เห็นได้ชัดว่าผู้ใช้ในกลุ่มGrpEnduser
เป็นผู้ใช้ (เท่านั้น) ที่ได้รับอนุญาตสำหรับสิ่งนี้
- หากผู้ใช้มีการเข้าถึง
PrdRelmgnt
ผู้ใช้ดังกล่าวจะได้รับอนุญาตให้อนุญาตการเปิดใช้งานในการผลิต (= ระดับสุดท้าย / สูงสุดในโครงสร้างไลบรารี)
3. คาดหวังสิ่งที่คาดไม่ถึงและเตรียมพร้อมสำหรับมัน
ข้างต้นเป็นเพียงพิมพ์เขียวซึ่งหวังว่าจะช่วยให้เข้าใจว่าในท้ายที่สุดมันคือเซิร์ฟเวอร์ที่ดูแลการแยกหน้าที่ ... หากคุณมี CxO ครอบคลุมคุณเพื่อกำหนดกฎการเข้าถึงบางอย่างที่ทุกคนจะไม่ชอบ
เพื่อให้ภาพเสร็จสมบูรณ์ตามที่อธิบายไว้ข้างต้นเซิร์ฟเวอร์จะสร้างหลักฐานการตรวจสอบ (การบันทึก) ของสิ่งที่เกิดขึ้นในระบบ ดังนั้นในเวลาใดก็ตามมันเป็นไปได้เสมอที่จะตอบคำถามเช่น
เกิดอะไรขึ้นเมื่อใดและเพราะเหตุใดและผู้ใช้ที่ได้รับอนุญาตรายใดได้อนุมัติแล้ว ... ล่วงหน้า?
แต่ส่วนที่ยากที่สุดคือการมีเครื่องมือการรายงานที่เพียงพอ (และรู้วิธีใช้งาน) อย่างน้อยถึง (อย่างง่ายดาย) ตอบสนองการร้องขอจากผู้ตรวจสอบไอที (คำถามของพวกเขาอาจท้าทายมาก) แต่ต้องชี้ไปยังบันทึกบันทึกที่เกี่ยวข้องในระบบ SCM ของคุณเพื่อตอบคำถาม "สิ่งที่เกิดขึ้น" ทุกประเภทในสถานการณ์วิกฤติที่การผลิต (ส่วนหนึ่ง) หยุดทำงาน
PS: ฉันปล่อยให้การตัดสินใจของทุกคนถ้าคำตอบของฉันคือใช่หรือไม่สอดคล้องกับ DevOps