Chr*_*ill 2 security sql-server t-sql
我正在尝试创建一个 SQL 语句来在 SQL Server 中创建一个登录名和用户,这将允许 Web 应用程序对单个数据库执行 crud 操作,并允许完全访问所有表和存储过程、视图等。
我知道如何创建一个登录名和一个用户......但我作为继续的最佳方式离开了我的深度。
CREATE LOGIN [myUser] WITH PASSWORD=N'xxx', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
CREATE USER [myUser] FOR LOGIN [myUser]
WITH DEFAULT_SCHEMA = dbo;
GO
Run Code Online (Sandbox Code Playgroud)
如果您希望用户能够读取数据库中的任何表和视图,那么您可以从 SQL Server 2012 开始运行以下命令
ALTER ROLE db_datareader ADD MEMBER MyUser;
Run Code Online (Sandbox Code Playgroud)
对于以前的版本,您将运行
sp_addrolemember 'db_datareader','MyUser';
Run Code Online (Sandbox Code Playgroud)
db_datareader 是一个内置角色,它授予对所有内容的读取访问权限。db_datawriter 相当于写入。
如果要授予有限的 CRUD 访问权限,则需要创建一个新角色并使用 GRANT 语句为该角色分配权限。完成后,您可以使用上述语句使您的用户也成为新角色的成员。
CREATE ROLE MyLimitedCRUDRole;
Run Code Online (Sandbox Code Playgroud)
对于您问题的存储过程部分,我将为存储过程访问设置显式角色。我会将其与 MyLimitedCRUDRole 分开,因为 MyLimitedCRUDRole 的可见性在 GDPR 世界中变得越来越重要。
为了清晰起见,我还建议让角色具有明确且单一的目的。
CREATE ROLE db_AllProcExecutor;
GRANT EXECUTE ON MyStoredProc to db_AllProcExecutor;
Run Code Online (Sandbox Code Playgroud)
可以动态生成 GRANT 语句,但在任何具有安全敏感性的数据库上,我都会非常小心地这样做。
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |