产品展示

  • 首页
  • 产品展示
  • 如何在 Amazon RDS for SQL Server 中克隆主用户权限 数据库博客

如何在 Amazon RDS for SQL Server 中克隆主用户权限 数据库博客

2026-01-27 13:52:14

在Amazon RDS for SQL Server中克隆主用户权限

关键要点

创建新用户时,不建议直接使用主用户,遵循最小权限原则。适用场景包括使用特定的SQL Server登录、为数据库管理员提供命名账户以及实施最小权限安全模型。通过存储过程usprdsclonelogin克隆主用户权限,生成的TSQL脚本可以按需修改。

在创建新的 Amazon RDS for SQL Server 实例时,主用户会获得该数据库实例的一些 权限。我们强烈建议您在应用程序中不要直接使用主用户。相反,应遵循最小权限原则和最佳实践,通过使用权限最少的数据库用户来提高安全性。

此方法适用于以下几种场景:

使用特定应用程序的SQL Server登录而非主用户为数据库管理员 (DBA) 使用命名账户以提高安全性和可追溯性实施最小权限的安全模型,为连接到Amazon RDS for SQL Server的应用和服务提供特定的命名账户

在本篇文章中,我们将讨论如何将主用户权限克隆到新的登录,并审查所需的最小权限。您可以删除不必要的权限,从而实现最小权限的安全模型。

飞鱼加速器苹果版

解决方案概述

在本解决方案中,我们将完成以下步骤以克隆主用户:

在您希望复制用户的环境中创建一个名为usprdsclonelogin的存储过程。您可以借助 SQL Server Management Studio (SSMS) 连接到您的RDS SQL Server实例进行此操作。运行存储过程以生成带有权限的TSQL脚本执行时会将权限一并产生。从SSMS的结果窗格中复制脚本并在新的查询窗口中运行。

在存储过程运行后,您的“创建登录”脚本会生成,包含与主登录相似的服务器级和数据库级权限。

前置条件

在RDS实例中克隆主用户之前,您必须确保已具备以下条件:

项目描述Amazon RDS for SQL Server 实例您需要一个已运行的RDS SQL Server实例SSMS需要连接到数据库的SSMS用户权限需要有授予所需权限的用户

创建存储过程

在您要复制用户的环境中创建一个名为 usprdsclonelogin 的存储过程 (下载链接)。您将在下一步使用此存储过程创建特定登录账户、数据库用户和权限的克隆。您可以在任何非Amazon RDS for SQL Server系统数据库的用户数据库中创建存储过程。

在过程中,脚本将执行以下操作:

创建一个新的登录,设置提供的密码为新登录分配服务器角色成员资格为新登录分配服务器级权限根据LoginToDuplicate创建新登录的数据库用户根据LoginToDuplicate为新用户分配数据库角色成员资格根据LoginToDuplicate为新用户分配数据库级权限

运行存储过程时,脚本不会生成结果,除非运行该存储过程的用户具有授予这些权限的权限。如果用户没有授予权限的能力,则权限不会出现在输出脚本中。这是因为访问脚本的登录没有查看权限。此外,如果您在没有授予权限的情况下尝试手动添加权限脚本,脚本将失败。

运行存储过程

在创建存储过程后,打开一个新的TSQL窗口,并使用以下格式运行存储过程。在运行脚本之前,请确保结果以文本格式显示,您可以通过按 CTRL T 来设置。

sql SQL Server身份验证登录 EXEC usprdsclonelogin @NewLogin = [] @NewLoginPwd = 此处输入新登录的密码 @LoginToDuplicate = masterlogin @WindowsAuth = 0

Windows身份验证登录 EXEC usprdsclonelogin @NewLogin = [] @NewLoginPwd = NULL @LoginToDuplicate = masterlogin @WindowsAuth = 1

以下是将管理员账户克隆到新的域用户账户时的示例输出:

sqlEXEC dbousprdsclonelogin @NewLogin = MyDomainMyDomainUser @NewLoginPwd = NULL @WindowsAuth = 1 @LoginToDuplicate = admin

输出:

sql/克隆过程步骤//==================================================//1 创建新登录//2 新登录的服务器角色成员资格//3 新登录的服务器级权限//4 为新登录创建数据库用户//5 数据库用户的数据库角色成员资格//6 数据库级权限//==================================================//1 创建新登录/CREATE LOGIN [MyDomainMyDomainUser] FROM WINDOWS/2 新登录的服务器角色成员资格/EXEC spaddsrvrolemember @loginame = MyDomainMyDomainUser @rolename = setupadminEXEC spaddsrvrolemember @loginame = MyDomainMyDomainUser @rolename = processadmin/3 新登录的服务器级权限/USE master GRANT ALTER ANY EVENT SESSION TO [MyDomainMyDomainUser] WITH GRANT OPTION// 省略部分类似的GRANT语句/4 为新登录创建数据库用户/USE [DBATools]IF EXISTS(SELECT name FROM sysdatabaseprincipals WHERE name = admin)BEGIN IF EXISTS(SELECT name FROM sysdatabaseprincipals WHERE name = MyDomainMyDomainUser) EXEC sysspchangeuserslogin UpdateOne MyDomainMyDomainUser MyDomainMyDomainUser ELSE CREATE USER [MyDomainMyDomainUser] FROM LOGIN [MyDomainMyDomainUser]END// 省略部分类似的CREATE USER语句/5 数据库用户的数据库角色成员资格/USE [DBATools] EXEC spaddrolemember @rolename = dbowner @membername = MyDomainMyDomainUser

复制输出脚本并运行

在脚本生成输出后,从SSMS的Results标签中复制输出的脚本,并在新的查询窗口中运行。脚本运行后,您的新登录账户将创建,并具有与主登录相似的服务器级和数据库级权限。

本示例排除了SSISDB数据库中的ssisadmin和ssislogreader权限。如果您需要这些权限,请单独提供:

sqlALTER ROLE [ssisadmin] ADD MEMBER [mydomainusername]ALTER ROLE [ssislogreader] ADD MEMBER [mydomainusername]

清理

如果您在复制完成后不想保留存储过程例如,出于合规原因,可以使用以下脚本将其删除。

sqlUSE [DBNAME]GODROP PROCEDURE [dbo][usprdsclonelogin]GO

总结

在本篇文章中,我们讨论了如何在Amazon RDS for SQL Server中将主用户克隆到新的登录。我们还涵盖了一些关键考虑事项和最佳实践,以避免在您的应用程序中直接使用主用户。此解决方案可以帮助您创建一个满足业务需求的具有最小权限的新登录。

如果您对此主题有任何额外的见解、经验或关注,欢迎在评论区分享。

如何在 Amazon RDS for SQL Server 中克隆主用户权限 数据库博客

关于作者

Alvaro CostaNeto 是AWS的数据库专家解决方案架构师,致力于帮助客户在云端设计和实施数据库解决方案。他对数据库技术充满热情,拥有超过19年的工作经验,主要使用Microsoft SQL Server。他与妻子和两个孩子住在佛罗里达州Clermont,热爱航空和旅游,喜欢与家人和朋友聚会并探索新地方。

Rakesh Ramanukolanu 是Amazon Web Services的高级数据库专家解决方案架构师,帮助各行各业的客户设计、迁移和优化他们的SQL Server工作负载,以便转移到像Amazon RDS和Amazon RDS Custom这样的托管数据库平台。

Mesgana Gormley 是Amazon Web Services的高级数据库专家解决方案架构师,工作于Amazon RDS团队,为AWS客户提供技术指导,并帮助他们迁移、设计、部署和优化关系数据库工作负载。