ที่ บริษัท ของฉันเราใช้ LDAP เพื่อมีชุดบัญชีที่สอดคล้องกันในทุกเครื่องแล้วใช้เครื่องมือจัดการการกำหนดค่า (ในกรณีของเราในปัจจุบัน cfengine) เพื่อแจกจ่ายauthorized_keys
ไฟล์สำหรับผู้ใช้แต่ละคนในเซิร์ฟเวอร์ทั้งหมด ไฟล์คีย์ตัวเองจะถูกเก็บไว้ (พร้อมกับข้อมูลการกำหนดค่าระบบอื่น ๆ ) ในที่เก็บ git เพื่อให้เราสามารถเห็นเมื่อคีย์มาและไป cfengine ยังกระจายsudoers
ไฟล์ที่ควบคุมผู้ที่สามารถเข้าถึงสิ่งที่รูทในแต่ละโฮสต์โดยใช้ผู้ใช้และกลุ่มจากไดเรกทอรี LDAP
การตรวจสอบรหัสผ่านถูกปิดใช้งานอย่างสมบูรณ์ในเซิร์ฟเวอร์ที่ใช้งานจริงของเราดังนั้นการรับรองความถูกต้องของคีย์ SSH จึงเป็นสิ่งจำเป็น นโยบายสนับสนุนให้ใช้คีย์แยกสำหรับแล็ปท็อป / เดสก์ท็อป / อะไรก็ตามและใช้ข้อความรหัสผ่านบนคีย์ทั้งหมดเพื่อลดผลกระทบของแล็ปท็อปที่สูญหายหรือถูกขโมย
นอกจากนี้เรายังมีโฮสต์ป้อมปราการที่ใช้ในการเข้าถึงโฮสต์บนเครือข่ายการผลิตทำให้เรามีกฎไฟร์วอลล์ที่เข้มงวดมากรอบเครือข่ายนั้น วิศวกรส่วนใหญ่มีการกำหนดค่า SSH พิเศษเพื่อทำให้เกิดความโปร่งใส:
Host prod-*.example.com
User jsmith
ForwardAgent yes
ProxyCommand ssh -q bastion.example.com "nc %h %p"
การเพิ่มคีย์ใหม่หรือการลบคีย์เก่าจำเป็นต้องมีการทำพิธีเล็กน้อยในการตั้งค่านี้ ฉันขอยืนยันว่าสำหรับการเพิ่มคีย์ใหม่มันเป็นที่พึงปรารถนาที่จะให้มันเป็นการดำเนินการที่ทิ้งร่องรอยการตรวจสอบและทุกคนสามารถมองเห็นได้ อย่างไรก็ตามเนื่องจากค่าใช้จ่ายที่เกี่ยวข้องฉันคิดว่าบางครั้งผู้คนละเลยที่จะลบคีย์เก่าเมื่อไม่ต้องการใช้อีกต่อไปและเราไม่มีวิธีที่แท้จริงในการติดตามยกเว้นการล้างข้อมูลเมื่อพนักงานออกจาก บริษัท มันยังสร้างแรงเสียดทานเพิ่มเติมบางอย่างเมื่อขึ้นวิศวกรใหม่เนื่องจากพวกเขาต้องการสร้างคีย์ใหม่และผลักมันออกไปยังโฮสต์ทั้งหมดก่อนที่พวกเขาจะสามารถทำงานได้อย่างสมบูรณ์
อย่างไรก็ตามประโยชน์ที่ใหญ่ที่สุดคือการมีชื่อผู้ใช้แยกต่างหากสำหรับผู้ใช้แต่ละรายซึ่งทำให้ง่ายต่อการควบคุมการเข้าถึงที่ละเอียดยิ่งขึ้นเมื่อเราต้องการและให้ข้อมูลประจำตัวของผู้ใช้แต่ละรายที่แสดงในบันทึกการตรวจสอบซึ่งมีประโยชน์จริง ๆ เมื่อพยายามติดตาม ปัญหาการผลิตกลับไปที่การดูแลระบบ
ภายใต้การตั้งค่านี้น่ารำคาญที่จะมีระบบอัตโนมัติที่ดำเนินการกับโฮสต์การผลิตเนื่องจากคีย์ SSH "ที่รู้จักกันดี" ของพวกเขาสามารถใช้เป็นทางเลือกในการเข้าถึง จนถึงตอนนี้เราเพิ่งสร้างบัญชีผู้ใช้สำหรับระบบอัตโนมัติเหล่านี้มีเพียงการเข้าถึงที่น้อยที่สุดที่พวกเขาต้องการในการทำงานของพวกเขาและยอมรับว่าผู้ใช้ที่เป็นอันตราย (ซึ่งต้องเป็นวิศวกรที่มีการเข้าถึงการผลิต) ใช้คีย์ของแอปพลิเคชันโดยไม่ระบุชื่อ