我需要为我的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 实例配置密码策略。应如何操作?
简短描述
密码策略和过期间隔是在主机级别(操作系统、Microsoft Windows 层)配置的。Amazon RDS 是一项托管服务。因此,不会因为操作系统访问受限而修改密码策略。
新建登录或者使用 SQL Server Management Studio(SSMS)或 T-SQL 修改登录时,默认已在 RDS for SQL Server 中启用密码策略。
解决方案
未将 RDS for SQL Server 实例加入到 Active Directory
如果未将实例加入到 Active Directory,则会在 Windows 操作系统上定义策略。您无法修改这些策略。以下是在 Windows 密码策略中配置的值:
- **强制执行密码历史记录:**记住 0 个密码
- **最小密码长度:**0 个字符
- **密码必须符合复杂性要求:**已禁用
- **使用可逆加密存储密码:**已禁用
- **密码最短有效期:**0 天
- **密码最长有效期:**42 天
**注意:**对于未加入 Active Directory 的 RDS for SQL Server 实例,账户锁定策略不可用。账户锁定策略需要访问基础操作系统。Amazon RDS 是一项托管服务,因此,主机级访问不可用。
RDS for SQL Server 实例未加入到 Active Directory
如果您在 RDS for SQL Server 中使用 Windows 身份验证,则可以强制执行和修改密码策略。这仅适用于 Windows 身份验证。无论是否加入域,SQL 身份验证都使用上一节中定义的本地密码策略。
运行以下查询,以确定使用密码策略配置的 SQL Server 登录以及实例上的密码到期时间:
select name, type_desc, create_date, modify_date, is_policy_checked,
is_expiration_checked, isnull(loginproperty(name,'DaysUntilExpiration'),'-') Days_to_Expire, is_disabled
from sys.sql_logins
以下是 SQL Server 登录的密码策略强制执行和密码到期的可用选项:
**注意:**这些选项仅适用于已加入到域的 RDS for SQL Server 实例。
- policy_checked 列为 0:SQL Server 登录没有任何密码策略强制执行。
- policy_checked 列为 1 且 is_expiration_checked 为 0:SQL Serve 登录强制执行密码复杂性和锁定,但不会强制执行密码过期。
- policy_checked 列和 is_expiration_checked 均为 1:SQL Server 登录强制执行密码复杂性、锁定和密码过期。
如果 policy_checked 和 is_expiration_checked 均为 0,则策略针对的是 RDS for SQL Server 数据库实例中的主用户。这表示没有为主用户设置密码复杂性、锁定设置和密码到期。因此,主用户在 RDS for SQL Server 中不会过期。如果您的主用户失去访问权限,则可以重置密码。有关更多信息,请参阅 为什么我的 RDS for SQL Server 实例的主用户失去了访问权限,我怎样才能找回访问权限?