视窗苹果电脑软件设置安全生产力Linux安卓性能配置苹果自定义设备管理iPhone设置 全部

如何在Microsoft SQL Server中配置安全性

已编辑 3 几周前 通过 ExtremeHow 编辑团队

Microsoft SQL Server数据库安全配置数据库视窗Linux信息技术用户管理认证服务器

如何在Microsoft SQL Server中配置安全性

翻译更新 3 几周前

Microsoft SQL Server是一种流行的数据库管理系统,可以实现数据的存储、检索和处理。然而,像任何管理敏感数据的系统一样,安全性极为重要。配置安全性的目的是保护数据免受未经授权的访问,并确保只有正确的人有权管理数据。本文提供了有关如何在Microsoft SQL Server中配置安全性的全面指南。

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使在表的行上实现细粒度访问控制成为可能。这确保用户只能访问他们有权访问的行。

您可以通过定义谓词函数和安全策略来创建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)

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安全性跟上新出现的威胁。

如果你发现文章内容有误, 您可以


评论