sys.sql_logins.is_policy_checked หมายความว่ามีการตรวจสอบนโยบายหรือไม่


16

เมื่อฉันมองในผมเห็นคอลัมน์ที่เรียกว่าsys.sql_logins is_policy_checkedฉันสามารถเชื่อถือได้ว่านโยบายรหัสผ่านของฉันได้รับการตรวจสอบสำหรับการเข้าสู่ระบบทั้งหมดที่ค่าคอลัมน์นี้คือ1อะไร?

คำตอบ:


21

เลขที่

ในขณะที่เอกสารในปัจจุบันมีข้อความที่ไม่ชัดเจนต่อไปนี้เกี่ยวกับความหมายของการตั้งค่าสถานะนี้:

ตรวจสอบนโยบายรหัสผ่านแล้ว

ความหมายและควรพูดคือธงทำหน้าที่สองประการ:

  1. นโยบายรหัสผ่านอาจได้รับการตรวจสอบ แต่หาก (ก) นโยบายรหัสผ่านถูกเปิดใช้งานในเวลาที่ตั้งรหัสผ่านล่าสุดและ (b) รหัสผ่านถูกระบุเป็นข้อความธรรมดา (ไม่ใช่แฮช)
  2. นโยบายรหัสผ่านจะได้รับการตรวจสอบในครั้งต่อไปที่มีการตั้งค่านโยบาย แต่ถ้า (ก) นโยบายรหัสผ่านถูกเปิดใช้งานในเวลานั้นและ (b) รหัสผ่านถูกระบุเป็นข้อความธรรมดา (ไม่ใช่แฮช)

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

is_policy_checkedบิตถูกตั้งค่า1ถ้าCHECK_POLICY = ONในระหว่างการCREATE LOGINหรือALTER LOGINเหตุการณ์แม้ว่านโยบายไม่ได้ตรวจสอบได้ตลอดเวลา เนื่องจากคุณอาจรวบรวมจากด้านบนการตรวจสอบนี้จะไม่เกิดขึ้นในสถานการณ์เหล่านี้:

  • รหัสผ่านมีการระบุโดยใช้HASHEDคำหลัก (เป็นกลยุทธ์ที่พบบ่อยมากเมื่อทำการโยกย้ายการเข้าสู่ระบบระหว่างเซิร์ฟเวอร์หรือคัดลอกการเข้าสู่ระบบเพื่อจัดส่งที่สอง / มิเรอร์ / AG AG ที่สอง) ไม่สามารถตรวจสอบความซับซ้อนของรหัสผ่านได้หากคุณไม่มีค่าแฮชล่วงหน้า
  • นโยบายความซับซ้อนรหัสผ่านท้องถิ่นไม่ได้เปิดใช้งานในเวลาที่เหตุการณ์เกิดขึ้น
  • ไม่ครอบคลุมในการอ้างอิงที่เสนอมาข้างต้นของฉัน แต่คุณสามารถทำได้ALTER LOGINโดยไม่ต้องตั้งรหัสผ่านใหม่และยังคงเปลี่ยนสถานะ ( ขอบคุณ @AMtwo สำหรับการอธิบายนี้ ) ฉันสงสัยว่าอาจเป็นเพราะคนฉลาด ๆ ที่พยายามหลอกผู้ตรวจสอบบัญชี

ปัญหาเหล่านี้ล้วนแสดงให้เห็นได้ง่าย

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

  • คำเตือนอาจถูกยกขึ้นหากCHECK_POLICY = ONมีการระบุไว้ แต่ในความเป็นจริงนโยบายไม่สามารถตรวจสอบได้ (อาจเป็นเพราะรหัสผ่านถูกระบุด้วยแฮชหรือเนื่องจากนโยบายรหัสผ่านถูกปิดการใช้งานหรือเนื่องจากคำสั่งนั้นเป็นความพยายามง่ายๆในการเลี่ยงผ่าน หรือตั้งค่าสถานะเช่นALTER LOGIN blat WITH CHECK_POLICY = ON;)
  • CHECK_POLICYอาจจะเลิกในความโปรดปรานของและบางทีอาจจะACTIVELY_CHECK_POLICY CHECK_POLICY_ON_NEXT_CHANGEคอลัมน์ในsys.sql_loginsที่ควรจะเป็นและpolicy_has_been_checked policy_will_be_checkedฉันไม่ได้แต่งงานกับชื่อเหล่านี้ แต่พวกเขามีความแม่นยำมากกว่าถ้อยคำปัจจุบัน
  • หากฉันเลือกACTIVELY_CHECK_POLICY = ONและไม่สามารถตรวจสอบนโยบายได้ในระหว่างการดำเนินการคำสั่งฉันควรได้รับข้อความแสดงข้อผิดพลาดและไม่ควรตั้งค่าสถานะเป็น1(หรือแม้แต่การสร้างการเข้าสู่ระบบหรือการเปลี่ยนรหัสผ่านก็ไม่สำเร็จ)
  • ฉันไม่คิดว่ามันสมเหตุสมผลในกรณีนี้เพื่อดำเนินการต่อกับพฤติกรรมปัจจุบันซึ่งฉันสามารถระบุได้ว่าฉันต้องการให้มีการตรวจสอบนโยบาย แต่ถึงแม้ว่าจะไม่สามารถทำได้ก็อนุญาตให้ใช้รหัสผ่านและสร้าง / แก้ไขข้อมูลเข้าสู่ระบบ (สิ่งนี้ไม่ดี IMHO โดยไม่คำนึงถึงสถานะของธงหลังจากข้อเท็จจริง - แต่อย่างน้อยถ้ามันถูกตั้งค่าให้0สามารถข้ามผ่านดังกล่าวได้)

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

ฉันขอแนะนำให้คุณลงคะแนนในรายการเชื่อมต่อและที่สำคัญกว่านั้นคือให้แน่ใจว่าคุณไม่ได้ตรวจสอบระบบของคุณด้วยการรับรู้ผิด ๆ เกี่ยวกับวิธีที่ตัวเลือก DDL และข้อมูลเมตานี้ทำงาน

โปรดอย่าปัดเรื่องนี้ในฐานะ "ไม่ใช่ปัญหา" เพราะคุณพอใจกับวิธีการทำงานและรู้ว่าธงไม่น่าเชื่อถือ - คุณไม่ใช่ผู้ใช้ที่ฉันกังวล มันเป็นคนอื่น

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