已编辑 3 几周前 通过 ExtremeHow 编辑团队
Microsoft SQL Server数据库安全配置数据库视窗Linux信息技术用户管理认证服务器
翻译更新 3 几周前
Microsoft SQL Server是一种流行的数据库管理系统,可以实现数据的存储、检索和处理。然而,像任何管理敏感数据的系统一样,安全性极为重要。配置安全性的目的是保护数据免受未经授权的访问,并确保只有正确的人有权管理数据。本文提供了有关如何在Microsoft SQL Server中配置安全性的全面指南。
SQL Server中的安全模型基于登录帐户、用户和角色的组合。这些元素共同协作,以确保只有授权用户可以访问数据库并执行某些操作。让我们仔细看看这些元素。
登录是用于连接到SQL Server实例的帐户。SQL Server支持多种类型的登录,包括SQL Server身份验证和Windows身份验证。通常,Windows身份验证更受青睐,因为它集成了Windows安全模型,且被认为更安全。
要创建新登录,请按以下步骤操作:
use master; CREATE LOGIN [TestLogin] WITH PASSWORD='YourStrongPassword123';
在此示例中,创建了一个名为TestLogin的新SQL Server身份验证登录。始终为您的登录使用强密码。
为实例创建登录后,可以在每个特定数据库中创建该登录可以访问的用户。数据库中的用户与登录相关联,这种关联允许用户在访问数据库时进行身份验证。
要为我们之前创建的登录创建数据库用户,请使用以下命令:
use your database; CREATE USER [TestUser] FOR LOGIN [TestLogin];
此命令在指定数据库(YourDatabase)中创建与登录TestLogin相关联的用户。
角色是您可以分配给用户或用户组的一组权限。通过将权限分组为角色然后将用户分配给该角色,它提供了一种简单的权限管理方式。
SQL Server提供了固定服务器角色和固定数据库角色。固定服务器角色适用于SQL Server的整个实例,而固定数据库角色仅适用于特定数据库。
您可以按如下方式将用户添加到某个数据库角色:
use your database; EXECUTE sp_addrolemember 'db_datareader', 'TestUser';
此命令将TestUser添加到db_datareader角色,从而授予该用户在指定数据库中读取所有数据的权限。
权限是对SQL Server资源(如表、视图或存储过程)执行某些操作的权利。SQL Server提供了一组广泛的权限,您可以根据其安全需求向登录或用户授予或拒绝权限。
假设您希望允许用户插入数据到特定表中。您可以运行以下命令:
use your database; GRANT INSERT ON [YourTable] TO TestUser;
此命令允许TestUser将数据插入到YourDatabase中的指定表(YourTable)。
SQL Server提供了加密功能,以保护存储、传输或在SQL Server实例和应用程序之间交换的敏感数据。这包括对透明数据加密(TDE)和始终加密(Always Encrypted)的支持。
TDE通过加密数据帮助保持数据安全,这意味着磁盘上的物理文件也被加密。然而,数据对连接数据库的应用程序仍然以明文形式显示。
要在数据库上实现TDE,请按以下步骤操作:
use master; Create master key encryption by password = 'YourStrongPassword123'; CREATE CERTIFICATE EncryptCert WITH SUBJECT = 'Database Encryption Certificate'; use your database; Create database encryption key with algorithm = AES_256 Encryption by server certificate EncryptCert; ALTER DATABASE YourDatabase SET ENCRYPTION ON;
这一系列命令使用证书为YourDatabase设置数据库加密。
始终加密旨在保护SQL Server数据库中的敏感数据。只有拥有加密密钥的客户端应用程序才能访问明文数据。加密发生在客户端级别,因此SQL Server永远不会看到未加密的值。
设置始终加密需要使用列主密钥和列加密密钥。列主密钥存储在SQL Server之外,而列加密密钥存储在SQL Server中,用于加密敏感列。
通常,设置这个需要配置加密密钥并使用SQL Server Management Studio(SSMS)或PowerShell脚本更改表列以使用加密。
SQL Server中的审核是安全性的重要组成部分,因为它有助于跟踪和记录系统中发生的事件。您可以审核服务器级事件或数据库级事件,SQL Server提供了内置的审核对象来促进这些活动。
下面是创建审核并将其与服务器级对象关联的基本示例:
Create a server audit ServerAudit in file(filepath = 'C:\AuditFiles\'); Change server audit ServerAudit with (status = on); Create a server audit specification ServerAuditSpec ServerAudit for server audits add(failed_login_group); Change server audit specification ServerAuditSpec with (status = on);
此脚本创建一个审核,该审核记录失败的登录尝试并将日志输出到指定的文件位置。
SQL Server支持若干安全策略,帮助自动化和管理安全实践。一些显著的安全策略包括行级安全性(RLS)和动态数据掩码(DDM)。
RLS使在表的行上实现细粒度访问控制成为可能。这确保用户只能访问他们有权访问的行。
您可以通过定义谓词函数和安全策略来创建RLS。谓词函数定义用于过滤行的逻辑。
CREATE FUNCTION dbo.fn_securitypredicate (@UserName AS sysname) Returns Table With SchemaBinding As select return 1 as result where @username = USER_NAME(); Create a security policy SecurityPolicy ADD FILTER PREDICATE dbo.fn_securitypredicate(username) on your table with (status = on);
此示例根据用户名过滤对YourTable的访问。
DDM是SQL Server中的一个内置功能,它促进了在向未经授权的用户呈现数据时隐藏敏感数据的过程。数据以完整的形式存储,但在检索时被隐藏或匿名化。
下面是如何在表上设置DDM的示例:
ALTER TABLE YourTable ALTER COLUMN SensitiveColumn ADD MASKED WITH (FUNCTION = 'partial(2,"*",0)');
这使用部分掩码功能来掩盖SensitiveColumn,显示前两个字母并掩盖其余字母。
在Microsoft SQL Server中配置安全性包含多个步骤,从设置登录、用户和角色到实施加密策略、审核和安全策略。了解您可以使用的各种工具和策略将使您能够为您的SQL Server实例创建一个强大的安全架构。定期检查和更新您的配置可以确保您的SQL Server安全性跟上新出现的威胁。
如果你发现文章内容有误, 您可以