AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 99262
Accepted
Aaron Bertrand
Aaron Bertrand
Asked: 2015-05-01 07:28:56 +0800 CST2015-05-01 07:28:56 +0800 CST 2015-05-01 07:28:56 +0800 CST

sys.sql_logins.is_policy_checked 是否表示该策略已被检查?

  • 772

当我查看时sys.sql_logins,我看到一个名为is_policy_checked. 我可以相信我的密码策略已经检查了该列值所在的所有登录名1吗?

sql-server security
  • 1 1 个回答
  • 12487 Views

1 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2015-05-01T07:28:56+08:002015-05-01T07:28:56+08:00

    ##不。虽然文档目前对该标志的含义有以下可以说是模棱两可的陈述:

    检查密码策略。

    它真正的意思是,应该说,国旗有两个目的:

    1. 密码策略可能已被检查,但前提是 (a) 在上次设置密码时启用了密码策略,并且 (b) 密码以纯文本(不使用哈希)指定。2.下次设置策略时将检查密码策略,但前提是 (a) 当时启用了密码策略,并且 (b) 密码以纯文本(不使用哈希)指定。

    (请注意,“策略”还指强制到期以及用户必须在下次登录时更改密码这一事实,但由于复杂性通常是审计操作的重点,我将只关注这方面。 )

    即使当时未检查策略,该is_policy_checked位也会在事件或事件期间设置为1if 。正如您可能从上面收集到的那样,在这些情况下不会发生此检查:CHECK_POLICY = ONCREATE LOGINALTER 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_checked和policy_will_be_checked。我没有嫁给这些名字,但它们比目前的措辞准确得多。
    • 如果我选择ACTIVELY_CHECK_POLICY = ON并且在命令执行期间无法检查策略,我应该会收到一条错误消息并且标志不应该设置为1(甚至登录创建或密码更改不应该成功)。
    • 我认为在这种情况下继续当前行为没有意义,我可以在其中指定我希望检查策略,但即使不能,也允许密码并创建/更改登录(这很糟糕,恕我直言,不管事后标志的状态如何 - 但至少如果它被设置为0,则可以识别这种绕过)。

    今天,没有可靠的方法(无需手动将密码更改为您知道安全的密码)来审核您的 SQL 登录并确信它们都符合您的复杂性策略。在这个数据不断增长的时代,越来越多的数据泄露,显然需要越来越严格地保护系统,这是一个需要解决的问题。我已经写了一篇关于这个的博客并创建了一个关于它的 Connect 项目:

    • 请帮我修复一个大的安全漏洞
    • CHECK_POLICY 是带有 CREATE LOGIN ... PASSWORD ... HASHED 的无操作

    我鼓励您对 Connect 项目进行投票,更重要的是,请确保您不会在审核您的系统时对 DDL 选项和元数据的工作方式有错误的认识。

    请不要将此视为“非问题”,因为您对它的工作方式非常满意,并且已经知道该标志是不可信的——您不是我担心的用户;是其他人。

    • 21

相关问题

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 存储过程可以防止 SQL 注入吗?

  • 死锁的主要原因是什么,可以预防吗?

  • 保护数据库密码

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve