sqlserver20xx安全性操作手册内容摘要:

账户 比工作需要更多的权限时,凭据也可以用于减少特定任务的权限。 代理可用于:  ActiveX 脚本  操作系统( CmdExec)  复制代理  分析和查询服务命令  执行 SSIS 包(包括维护计划) SQL SERVER 2020 安全性的最佳实践 9 、 SQL Server 服务的最佳实践  为 SQL Server 服务使用指定 账户或域账户 ,不使用共享账户。  每个服务使用一个单独 账户。  不要授予 SQL Server 服务 账户 任何 特别权限,他们将被分配给组成员。  通过提供给 SQL Server 的组 账户 来管理权限,而不是通过单个 服务的用户 账户。  始终使用 SQL Server 配置管理器更改服务 账户。  定期更改服务 账户 密码。  用凭据来执行需要特殊 权限的作业步骤,而不用 调整 SQL Server 代理服务 账户 的权限。  如果代理用户 需 执行一个需要不同 Windows 凭据 的作业,只需 分配一个 完成这个任务权限的 代理 账户 即可。 验证 模式 SQL Server 有两种身份验证模式: Windows 身份验证和混合模式身份验证。 Windows 身份验证模式,指定 的 Windows 用户和组 账户 可以 被 信赖地登录到 SQL Server。 当用户通过 Windows 用户 账户 连接时, SQL Server 使用操作系统中的 Windows 主体标记验证 账户 名和密码。 也就是说,用户身份 由 Windows 进行确认 ( 在这个过程中 , 使用 的 Windows 凭据是 NTLM 或 Kerberos 凭据 )。 SQL Server 不要求提供密码,也不执行身份验证。 Windows 身份验证是默认身份验证模式,并且比 SQL Server 身份验证更为安全。 Windows 身份验证使用 Kerberos 安全协议,提供有关强密码复杂性验证的密码策略 机制 ,还提供 账户 锁定支持,并且支持密码过期。 通过 Windows 身份验证完成的连接有时也称为可信连接,这是因为 SQL Server 信任由 Windows 提供的凭 据。 混合模式身份验证,允许 Windows 账户 和 SQL Server 特定 账户 (称为 SQL 登录)登陆。 当使用SQL 登录, SQL 登录密码通过网络来进行身份验证,这就使得 SQL 登录没有 Windows 登录安全。 最好的做法是尽可能使用 Windows 登录。 使用 SQL Server 的 Windows 登录实现单点登录 ,并 简化登录管理。 用普通的 Windows 密码策略和密码更改的 API 进行密码管理。 系统管理员管理用户、组和密码, SQL Server 数据库管理员只关心那 些允许访问 SQL Server 的用户和组,并做相应的授权管理。 SQL 登录应仅限于旧版 应用 程序 ,因为大多数情况下,软件是从第三方供应商购买的,验证不能更改。 SQL 登录的另一个用途是, 客户 端不是 Windows 并且不具备 Windows 登录的跨平台的客户端 服务器应用程序。 虽然不鼓励使用 SQL 登录,但在 SQL Server 2020 中, SQL 登录进行了一些安全方面的改进。 这些改进主要包括: SQL 登陆 使用底层操作系统加密的改进,当 SQL密码在网络上传输时 有 更好的加密的能力。 我们将在后面章节中做进一步讨论。 SQL Server 2020 使用标准的 DDL 语句创建 Windows 登录名 和 SQL 登录 名。 首选是 使用CREATE LOGIN 语句; sp_addlogin 和 sp_grantlogin 系统存储程序仅支持向后兼容。 SQL Server 2020 使用 ALTER DDL 语句禁用登录 名 或更改 登录名。 例如,如果您安装 SQL Server 2020 用的是 Windows 身份验证模式,而不是混合模式,那么 sa 登录 将 被禁用。 这时,用 ALTER LOGINSQL SERVER 2020 安全性的最佳实践 10 而不用 sp_denylogin 或 sp_revokelogin 来更改登录,因为他们只支持向后兼容。 如果你 安装 SQL Server 时,使用的是 Windows 身份验证模式 , 那么 sa 登录帐户 将 被禁用,系统并为它生成一个随机密码。 如果您以后想更改为混合模式身份验证 并并重新启用 sa 登录帐户, 这时你将不知道 sa 的密码。 如果你认为 以后也许会 使用 sa 登录账号, 在 安装后把 sa 密码更改为已知值 即可。 验证 模式的最佳实践  如果可能的话,尽可能使用 Windows 身份验证模式。  只为 旧版 的应用程序和非 Windows 用户使用混合模式身份验证。  使用标准的 login DDL 语句,不要使用兼容性的系统存储过程。  如果以后 需用使用 sa 账号,最好是将 sa 账户 的 密码更改为已知值,设置一个强密码并定期更改。  不要使用 sa 账户 来管理 SQL 服务器,用一个具有系统管理员权限的用户或组来管理。  为了防止同名的 sa 账户 的攻击,需把 sa 账户 重新命名为不同的 账户 名称。 网络连接 连接 SQL Server 数据库需要一个标准的网络协议 ,没有绕过网络 的 内部 连接。 端点 存在下列网络客户端连接协议:  共享内存  命名管道  TCP / IP 协议  VIA  专用管理员连接 此外, 下列端点 可以 定义允许访问 QL Server 实例 :  服务代理  HTTP Web 服务  数据库 镜像 以下是建立一个 Service Broker 端点 的例子: CREATE ENDPOINT BrokerEndpoint_SQLDEV01 AS TCP ( LISTENER_PORT = 4022 ) FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS ) SQL Server 2020 中断一些网络协议的支持,这些网络协议在 SQL Server 的早期版本是有效的,包括 IX / SPX、 Appletalk 和 Banyon Vines。 SQL SERVER 2020 安全性的最佳实践 11 为了与“默认为关 闭,仅在需要时启用“的一般策略相符合,安装 SQL Server 2020 时,没有创建服务代理、 HTTP 或数据库镜像端点,默认 VIA 端点 也是 不可用。 此外,在 SQL Server 2020 Express 版、 开发版和评估版,命名管道和 TCP / IP 协议默认 是 禁用。 在这些版本中,只有共享内存 默认 是有效的。 专用管理员连接( DAC) 是 SQL Server 2020 新增加的,在默认情况下仅提供本地有效,尽管它在远程也是有效的。 注意: 在 SQL Server Express 版, DAC 默认是不可用的,需要 在服务器运行一个特 殊的跟踪标志,才能启用。 访问数据库端点 需要有 CONNECT 权限的登录原则。 默认情况下,没有登录的帐户具有连接服务代理或 HTTP Web 服务端点的权限。 只启用有需要的协议 是一个最佳实践。 例如,如果 TCP / IP 协议就足够了,没有必要启用命名管道协议。 虽然端点 的管理可以通过 DDL 完成, 但是 通过 SQL Server 外围应用配置工具和 SQL Server配置管理器,可以使管理过程变得更容易, 策略变得更统一。 SQL Server 外围应用配置提供一个简单的用户界面来 启用或禁用 SQL Server 实例的客户端协议, 如图 1 和图 2 所示。 知识库文章KB914277,以及 SQL Server 2020 联机丛书,描述了相应配置,即怎样配置 SQL Server 2020 以允许远程连接。 远程连接配置对话框的屏幕截图,如图 1 所示: Figure 1 Configuring remote connections 在外围应用配置服务和连接的对话框,可以看到在实例中定义的任何 HTTP 或 Service Broker端点。 新的端点 必须使用 DDL 语句定义,不能用 SQL Server 外围应用配置定义。 您可以使用外围应用配置工具,启用远程访问专用管理员连接。 SQL Server 配置管理器提供了更详细的服务器协议。 在配置管理器,您可以:  选择一个 SSL 加密证书。  只允许加密的客户端连接。  隐藏来自于服务器的 API 枚举的 SQL Server 实例。 SQL SERVER 2020 安全性的最佳实践 12  启用和禁用 TCP / IP、共享内存、命名管道和 VIA 协议。  为即将 使用的每个 SQL Server 实例配置管道名称。  配置每个实例监听 TCP / IP 连接的 TCP / IP 端口号。  选择是否为命名实例分配 TCP / IP 动态端口。 配置 TCP/IP 属性对话框,如端口号和动态端口分配,如图 2 所示。 Figure 2 TCP/IP Addresses configuration page in SQL Server Configuration Manager SQL Server 2020 可以因如下两个理由使用加密通道:加密 SQL 登录凭据,提供整个会话点到点的加密。 使用加密的会话,需要使用支持它的一个客户端 API。 OLE DB, ODBC 和 客户端都支持加密会话;目前, 不支持 微软的 JDBC 客户端。 使用 SSL 的另一原因是, SQL 登录期间, 密码通过网络传输时 加密凭据。 如果 SSL 证书被安装在 SQL Server 实例,该证书用于加密凭据。 如果 SSL 证书尚未安装, SQL Server 2020 可以生成一个自签名的证书,并使用此证书代替。 使用自签名证书防止不积极的 maninthemiddle 攻击,其中 maninthemiddle 拦截网络流量,但不提供相互验证。 使用受信任的认证授权的 SSL 证书预防积极的 maninthemiddle 攻击,并提供相互验证。 在 SQL Server 2020,您可以授予、撤销或拒绝连接到基于每个登录的特定端点权限。 默认情况下所有 登录都被赋予共享内存、命名管道、 TCP / IP 协议和 VIA 端点的权限。 你必须明确地授予用户到其他端点 的 CONNECT 权限,默认情况下,是不授予用户此权限。 一个授予此权限的例子如下: SQL SERVER 2020 安全性的最佳实践 13 GRANT CONNECT ON MyHTTPEndpoint TO MyDomain\Accounting 、 网络连接的最佳实践  限制支持的网络协议。  除非必要,否则不要启用网络协议。  不要把一个正运行 SQL Server 的服务器公开给 互联网。  使用一个特定的 TCP / IP 端口分配,而不是动态端口,配置命名的 SQL Server 实例。  如果您必须支持 SQL 登录,请从受信任的认证机构安装 SSL 证书,不要使用 SQL Server 2020 自签名证书。  如果需要对端到端的 敏感的 session 加密,使用“只允许加密连接”。  只给需要使用 端点 的账户授予 CONNECT 权限。 对不需要 端点 的用户或组明确地拒绝CONNECT 权限。 Lockdown of System Stored Procedures SQL Server 使用系统存储过程来完成一些管理任务。 这些存储过程几乎总是以前缀 xp_或sp_开头。 即使为某些任务引进标准的 DDL(例如, creating logins and users),但系统存储过程仍然是完成某些任务的唯一 方式,如发送电子邮件或调用 COM 组件。 特别是系统扩展存储过程过去常用来获取 SQL Server 实 例的外部资源。 大多数系统存储过程包含相关的安全检查, 并 把 它作为程序的一部分 进行模拟,以便他们作为调用该程序 的 Windows 登录运行。 一个例子是sp_reserve__namespace, 它 模拟当前登陆,然后通过使用底层操作系统函数保存 HTTP 命名空间( )。 由于某些系统程序与操作系统相互交互 或执行属于 SQL Server 正常权限范围外的代码,他们可能构成安全风险。 系统存储过程,如 xp_cmdshell 或 sp_send_dbmail,默认关闭,并应保持禁用,除非有使用它们的理由。 在 SQL Server 2020,您不再需要使用存储过程访问底层操作系统或SQL Server 权限空间外的网络。 以 EXTERNAL_ACCESS 模式执行的 SQLCLR程序受 SQL Server权限 影响 ,以 UNSAFE 模式执行的 SQLCLR 程序受到一些但不是全部的安全检查。 将来, SQLCLR程序应取代用户编写的扩展存储过程。 某些 类别的系。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。