sys.sql_logins.is_policy_checked는 정책이 확인되었음을 의미합니까?


16

살펴보면 sys.sql_logins라는 열이 표시 is_policy_checked됩니다. 이 열 값이있는 모든 로그인에 대해 비밀번호 정책을 확인했음을 신뢰할 수 있습니까 1?

답변:


21

아니.

하지만 문서는 현재 어떤이 플래그 수단에 대한 다음 틀림없이 모호한 문이 :

비밀번호 정책이 확인되었습니다.

실제로 의미하고 말해야 할 것은 국기가 두 가지 목적을 제공한다는 것입니다.

  1. 비밀번호 정책 (a) 비밀번호가 마지막으로 설정되었을 때 비밀번호 정책이 활성화되고 (b) 비밀번호가 일반 텍스트 (해시가 아닌)로 지정된 경우에만 확인 되었을 수 있습니다.
  2. 다음에 정책을 설정할 때 비밀번호 정책 확인하지만 (a) 해당 시점에 비밀번호 정책이 활성화되어 있고 (b) 비밀번호가 일반 텍스트 (해시가 아님)로 지정된 경우에만 확인됩니다.

또한 "정책"은 만료 및 사용자가 다음 로그인시 비밀번호를 변경해야한다는 사실을 언급하지만 복잡성은 일반적으로 감사 작업의 초점이므로 해당 측면에만 중점을 두겠습니다. )

is_policy_checked비트가 설정되어 1있는 경우 CHECK_POLICY = ON동안 CREATE LOGIN이나 ALTER LOGIN정책이 시점에서 확인되지 않은 경우에도 이벤트. 위에서 수집 할 수 있듯이 다음 시나리오에서는이 검사가 수행되지 않습니다.

  • 암호는 HASHED키워드를 사용하여 지정됩니다 (서버간에 로그인을 마이그레이션하거나 로그인을 전달 / 미러링 / 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_checkedpolicy_will_be_checked
  • 내가 선택하는 경우 ACTIVELY_CHECK_POLICY = ON와 정책이 명령을 실행하는 동안 확인할 수 없습니다, 나는 오류 메시지가 나타납니다 및 플래그로 설정되어서는 안된다 1(또는 로그인 생성 또는 암호 변경이 실패한다).
  • 이 경우 현재 동작을 계속하는 것이 타당하지 않다고 생각합니다. 여기서 정책을 확인하도록 지정할 수 있지만, 비밀번호가 허용되지 않더라도 비밀번호가 허용되고 로그인이 작성 / 변경됩니다. (사실 사실 이후 플래그의 상태에 관계없이 IMHO는 좋지 않습니다. 그러나 적어도이 값으로 설정되어 있으면 0그러한 바이 패스를 식별 할 수 있습니다).

오늘날 사용자가 안전한 것으로 비밀번호를 수동으로 변경하지 않고도 신뢰할 수있는 방법은 없습니다. SQL 로그인을 감사하고 모두 복잡한 정책을 준수 할 것이라고 확신합니다. 날이 갈수록 증가하는 데이터, 점점 더 많은 데이터 유출, 시스템을 더욱 엄격하고 안전하게 보호해야하는 명백한 필요성에서 해결해야 할 문제입니다. 나는 이것에 대해 블로그하고 그것에 대해 Connect 항목을 만들었습니다.

Connect 항목에 투표하고 더 중요한 것은이 DDL 옵션 및 메타 데이터의 작동 방식에 대한 잘못된 인식으로 시스템을 감사하지 않는 것이 좋습니다.

때문에 따로 "비 문제"로이 솔질하지 마십시오 당신이 어떻게 작동하는지 완벽하게 편안 이미 플래그가 신뢰할 수 없음을 알고있다 - 당신은 내가 걱정하고있어 사용자가 아닌; 그것은 다른 사람입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.