
# RDS for SQL Server安全最佳实践
SQL Server数据库凭借其强大的事务处理能力、丰富的功能以及对企业级应用的广泛支持，在行业内享有良好的声誉，已经成为众多企业首选的关系数据库之一。RDS for SQL Server是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线云数据库服务，旨在为企业提供更高效、更安全的数据管理解决方案。
为加强RDS for SQL Server数据库安全性，本文将从以下几个维度给出建议，您可以根据业务需要在本指导的基础上进行安全配置。
- [使用高可用实例]
- [开启备份功能]
- [避免绑定EIP直接通过公网访问实例]
- [避免使用默认端口]
- [定期重置数据库账号密码]
- [定期检查并删除业务不再使用的角色]
- [确保数据库账号的最低权限]
- [避免依赖sysadmin权限]
- [开启强制加密]
- [使用TDE功能]
- [设置最大并行度]
- [更新数据库版本到最新版本]
- [使用DBSS全量审计]
- [使用磁盘加密功能]
- [建议配置日志对接LTS]
- [使用智能运维助手SQL洞察]
 #### 使用高可用实例
RDS for SQL Server数据库集群版或主备版实例能够在主节点发生异常时自动进行故障切换，将备用节点提升为主节点，从而确保系统的高可用性和持续服务，最大限度地减少停机时间和数据丢失。
 #### 开启备份功能
创建RDS for SQL Server实例时，默认开启自动备份策略，默认自动备份保留7天，可根据业务需要调整备份保留时长。RDS for SQL Server实例支持[自动备份](https://support.huaweicloud.com/usermanual-rds-mssql/rds_11_0031.html)和[手动备份](https://support.huaweicloud.com/usermanual-rds-mssql/rds_11_0010.html)。您可以定期对数据库进行备份，当数据库故障或数据损坏时，可以通过备份文件恢复数据库，从而保证数据可靠性，具体操作请参见[数据恢复](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_08_0023.html)。
 #### 避免绑定EIP直接通过公网访问实例
避免RDS for SQL Server部署在公网或者DMZ，应该将RDS for SQL Server部署在华为云内部网络，使用路由器或者防火墙技术把RDS for SQL Server保护起来，避免直接绑定EIP从公网访问数据库实例，防止未授权的访问及DDos攻击。建议解绑弹性公网IP，如果您的业务必须绑定EIP，请务必[设置安全组规则](https://support.huaweicloud.com/usermanual-rds-mssql/rds_03_0005.html)限制访问数据库的源IP。
 #### 避免使用默认端口
RDS for SQL Server的默认端口号为1433，此端口会更容易受到恶意攻击。建议您为数据库实例[修改端口](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_change_database_port.html)。
 #### 定期重置数据库账号密码
定期重置密码是提高系统和应用程序安全性的重要措施之一，不仅可以降低密码泄露的风险，还可以帮助用户满足合规要求，减少内部威胁，提高用户的安全意识。通过实施这一策略，可以显著提升账户整体安全水平，保护敏感数据和系统免受潜在的安全威胁。具体操作请参见[重置数据库账号密码](https://support.huaweicloud.com/usermanual-rds-mssql/rds_mssql_05_0011.html)。
 #### 定期检查并删除业务不再使用的角色
对于每个查询出来的角色，检查是否必须存在。任何未知的角色都需要被审视，确保每个角色都是正常使用的，否则删除这些角色。
 #### 确保数据库账号的最低权限
RDS for SQL Server支持"基于角色"的方法授予账号对数据和命令的访问权限。建议管理员结合业务需要，遵从最低授权原则，创建合适的[数据库账号](https://support.huaweicloud.com/usermanual-rds-mssql/rds_mssql_05_0009.html)，对账号进行授权。如果发现存在不符合该角色的账号权限，请结合业务需要，对账号权限进行更新或者[删除数据库账号](https://support.huaweicloud.com/usermanual-rds-mssql/rds_mssql_05_0013.html)。RDS for SQL Server的[内置账号](https://support.huaweicloud.com/usermanual-rds-mssql/rds_10_0108.html)用于给数据库实例提供完善的后台运维管理服务，禁止用户使用和删除。
 #### 避免依赖sysadmin权限
RDS for SQL Server的sysadmin权限为最高权限，此权限使用不当会造成RDS for SQL Server安全运维失效，从而导致数据被损坏、无法恢复数据、无法进行主备倒换等问题。
避免使用sysadmin权限是提高RDS for SQL Server安全性和稳定性的重要措施。通过实施最小权限原则、细化权限管理和增强审计与监控，可以显著降低安全风险，保护数据和系统的安全，有助于提高整体的安全管理水平。
 #### 开启强制加密
强制加密可以确保客户端与RDS for SQL Server之间的所有数据传输都经过加密。这样可以有效防止数据在传输过程中被窃听或篡改，增加了数据的隐私性和安全性。一旦开启强制加密连接，所有客户端都将自动使用加密方式与RDS for SQL Server通信，无需针对每个客户端单独配置，使得安全管理更加简便统一。
 #### 使用TDE功能
RDS for SQL Server的[TDE功能](https://support.huaweicloud.com/usermanual-rds-mssql/rds_11_0004.html)通过自动加密数据文件和备份文件，提供了高效的数据静态保护，并且加密过程对应用程序透明，满足合规性要求。但是使用TDE功能可能会对性能和存储空间产生一定影响。
RDS for SQL Server实例开启TDE后，数据文件已经被加密，不需要经过磁盘加密进行二次加密。相比较磁盘加密，推荐使用TDE加密，磁盘加密会对数据库性能和操作系统的性能造成一定影响。
 #### 设置最大并行度
通过设置参数"max degree of parallelism"的值，可以调整RDS for SQL Server的最大并行度，优化查询性能和资源利用率。该参数设置过大会导致锁阻塞，设置过小会导致资源利用不充分，建议结合业务使用量和实例规格来设置。一般推荐初始设置为数据库实例的CPU核数的一半或根据实际负载进行微调。具体操作请参见[修改RDS for SQL Server实例参数](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_configuration.html)。
 #### 更新数据库版本到最新版本
使用较老的版本可能存在安全风险，运行最新版本的软件可以避免受到某些攻击。目前微软官方已经不再维护2016以下的版本，建议升级至2017或更高的版本。如果业务需要，可通过[升级版本](https://support.huaweicloud.com/usermanual-rds-mssql/rds_09_0051.html)将RDS for SQL Server实例升级到更高的版本。
 #### 使用DBSS全量审计
[审计日志](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_sql_auditing_log.html)可以捕获审计员通常需要或满足法规要求的详细记录。例如，RDS for SQL Server默认开启DDL审计内容，可以跟踪服务器设置修改、数据库和表的结构更改。另外，建议使用DBSS全量审计获取到全量的审计日志，该审计日志包括DML审计内容，并且能够保存180天或更长时间。
 #### 使用磁盘加密功能
建议您开启磁盘加密可以提高数据的安全性，该功能仅在创建实例时可选，创建后不支持修改。详情请参见[购买RDS for SQL Server实例](https://support.huaweicloud.com/usermanual-rds-mssql/rds_03_0014.html)中"磁盘加密"的说明。
开启磁盘加密后，存放在对象存储服务上的备份数据不会被加密。
 #### 建议配置日志对接LTS
RDS for SQL Server支持将运行日志、慢日志、审计日志上传至LTS，可根据合规要求记录日志以及设置保留时间。配置完成后，需要注意以下内容：
- 配置访问日志后，实例新生成的日志记录会上传到LTS进行管理。
- 配置完成后不会立即生效，存在10分钟左右的时延，请知悉。
- 配置成功后，会在LTS服务下产生一定费用。具体计费请参见[LTS价格详情](https://www.huaweicloud.com/pricing/calculator.html?tab=detail#/lts)。
- 在您进行LTS审计日志配置后，会默认上传所有审计策略。
- 若您的审计策略为打开的状态，则将会复用您之前的审计策略，且会在原有的审计日志计费基础上增加您LTS的审计日志收费（原有的审计日志费用会在您关闭原有审计策略后终止）。
- 出于对您实例的正常运行考虑，若您原有审计策略开启的情况下，配置了LTS审计日志，建议保留原有审计策略一段时间，待您LTS审计日志运转正常后，再行关闭。
更多内容，请参见[日志配置管理](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_01_0004.html)。
 #### 使用智能运维助手SQL洞察
SQL洞察支持全量SQL记录的查询的能力，还提供了访问、更新最频繁的表，锁等待时间最长的SQL等多维度的分析、搜索、过滤能力，帮助用户全面洞察SQL，快速找出异常，保障数据库稳定运行。更多内容，请参见[新增SQL洞察任务](https://support.huaweicloud.com/usermanual-rds-mssql/rds_04_0060.html)。
