MSSQL让数据存储变的更安全

1. MSSQL 数据库的安全性

在现代科技的发展中,数据已经成为了一个极其珍贵的资源,因此数据安全便显得尤为重要。而在数据库的安全性方面,MSSQL 相比其他数据库有较高的水平。

MSSQL支持的安全特性包括:身份认证、身份验证、授权、加密、审计和检查。 授权可以通过数据库角色和授权对象来实现。可以授予对象级别或其他级别的权限。MSSQL还支持加密,通过透明数据加密(TDE)可以对整个数据库进行加密。

此外,MSSQL也提供了诸如审计和检查等重要安全特性。通过审计,可以记录数据库的所有操作,包括读、写和修改操作以及用户登录等,保障了数据库的完整性和一致性。检查功能则可以帮助检查数据库服务器的配置,以防止潜在的安全风险。

2. MSSQL 数据库的身份认证

身份认证是保障数据库安全的第一关键。MSSQL数据可以使用windows身份认证(windows authentication)和SQL Server身份认证(SQL Server authentication)两种方式进行身份认证。

2.1 Windows 身份认证

在 Windows 身份认证中,MSSQL数据库服务器会使用 Windows 操作系统的账号和密码进行身份验证。这种方式最大的优点是可以实现 Single Sign-On,即一次登陆就可以使用多个受信任的应用程序。

通过以下代码,可以在 SQL Server 中添加 Windows 身份验证的登录方式:

--在 SQL Server 中添加一个 Windows 身份验证的登录方式

USE [master]

GO

CREATE LOGIN [Domain\Login] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

GO

2.2 SQL Server 身份认证

SQL Server 身份认证是指利用 SQL Server 登录账户和密码进行身份验证的方式。这种方式更加灵活,可以在不同的平台上使用,但相比 Windows 身份认证来说,不太安全。因此在使用 SQL Server 身份认证时,需要对密码设置复杂度规则,避免设置过于简单的密码。

通过以下代码,可以在 SQL Server 中添加 SQL Server 身份认证的登录名称:

--在 SQL Server 中添加一个 SQL Server 身份验证的登录名称

USE [master]

GO

CREATE LOGIN [SQL_Login] WITH PASSWORD=N'YourPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO

3. MSSQL 数据库的身份验证

身份认证是确认访问者身份的过程,而身份验证是确认访问者在数据库中拥有访问权限的过程。MSSQL 数据库支持多种身份验证方式,包括 Windows 身份验证、SQL Server 身份验证、证书和 ASP.NET 身份提供程序等。

3.1 Windows 身份验证

在 Windows 身份验证中,MSSQL数据库服务器会根据Windows操作系统的账号信息,确认访问者的身份。如果用户已经使用Windows操作系统登录,MSSQL数据库服务器会自动认证,不需要再次输入密码。

使用下面的代码,可以创建一个使用Windows身份验证的数据库用户:

-- 在 MSSQL 中创建一个 Windows 身份验证的数据库用户

CREATE USER [domain\username] FOR LOGIN [domain\username]

3.2 SQL Server 身份验证

在 SQL Server 身份验证中,MSSQL 数据库服务器会根据用户提供的登录名和密码进行身份验证。用户可以通过 SQL Server Management Studio 或 T-SQL 脚本等方式进行身份验证。

使用下面的代码,可以创建一个使用 SQL Server 身份验证的数据库用户:

--在SQL Server中创建一个 SQL Server 身份验证的数据库用户

CREATE LOGIN [SQL_Login] WITH PASSWORD=N'YourPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO

CREATE USER [SQL_User] FOR LOGIN [SQL_Login]

4. MSSQL 数据库加密

MSSQL 数据库提供了多种加密方式,包括透明数据加密 (TDE)、动态数据加密 (DDE) 、列级加密、以及 Always Encrypted。

4.1 TDE 加密

透明数据加密 (TDE) 可以对整个数据库进行加密,从而保护数据库的机密数据。在 TDE 加密中,MSSQL 数据库管理员只需要对整个数据库添加一个加密器,而无需对每个表或列进行加密操作,这个过程对现有应用程序的影响最小。

使用下面的代码,可以对指定的 MSSQL 数据库启用 TDE 加密:

--启用 TDE 加密

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p@ssword123';

GO

CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My Certificate for TDE';

GO

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_256

ENCRYPTION BY SERVER CERTIFICATE MyServerCert;

GO

ALTER DATABASE AdventureWorks2012

SET ENCRYPTION ON;

GO

4.2 Always Encrypted 加密

Always Encrypted是 MSSQL 中的另一种加密方式,它采用分段式加密,对列级数据进行加密,可以对单个列或多个列进行加密,因此可以最大限度地保护数据的隐私和完整性。

使用下面的代码可以创建一个使用 Always Encrypted 加密的数据库:

-- 在 SQL Server 中创建一个使用 Always Encrypted 加密的数据库

CREATE COLUMN MASTER KEY MyCMK WITH (

KEY_STORE_PROVIDER_NAME = 'MSSQL_CERTIFICATE_STORE',

KEY_PATH = 'CurrentUser/My/A91442DD679BE8BA0E249A638E8D424B74D8BABC');

CREATE COLUMN ENCRYPTION KEY MyCEK

WITH VALUES

(

COLUMN_MASTER_KEY = MyCMK,

ALGORITHM = 'RSA_OAEP',

ENCRYPTED_VALUE = 0x016E00000163007500630074006500670031003200004471C01A24D4CA5F2AA5A1D0B63E520F6487E7B9CF45EAF32497A08B65D258CE2DEC82236D22B7373DD2EE7DAFBB2A7A06714ED66B435BF1C94D267CA3CE2D9AEB4E3477302C9E34FBDAE9A9EF88D4EA4C5C70000

);

CREATE TABLE [dbo].[Patients]

(

[PatientID] [int] IDENTITY(1,1) NOT NULL,

[SSN] [char](11) COLLATE SQL_Latin1_General_CP1_CI_AS ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = MyCEK,

ENCRYPTION_TYPE = DETERMINISTIC,

ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,

[FirstName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[LastName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

[AdditionalInfo] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

CONSTRAINT [PK_T_Patients] PRIMARY KEY CLUSTERED (

[PatientID] ASC

)

)

5. MSSQL 数据库审计

MSSQL 数据库的审计是指记录并审查数据库操作的过程,包括读、写、修改、备份、还原等。MSSQL 数据库的审计可以通过 SQL Server Management Studio 或 Transact-SQL 语句进行配置。

使用下面的代码,可以在 MSSQL 数据库中配置审计:

--在 SQL Server 中配置审计

--在 SQL Server 中创建服务器级别的审计

USE master;

GO

CREATE SERVER AUDIT Audit_PayPal

TO FILE

(

FILEPATH = 'D:\MSSQL\Audits\'

)

WITH

(

QUEUE_DELAY = 1000,

ON_FAILURE = CONTINUE,

AUDIT_GUID = 'D0171D9C-DB97-4162-95E7-F2A2AA220C74'

);

GO

--在 SQL Server 中创建数据库级别的审计

USE [PayPal];

GO

CREATE DATABASE AUDIT SPECIFICATION Ex_Audit_PayPal

FOR SERVER AUDIT Audit_PayPal

ADD (SELECT, INSERT, UPDATE, DELETE ON PayPal.* BY public)

WITH (STATE=ON);

GO

--启用审计

ALTER SERVER AUDIT Audit_PayPal

WITH (STATE = ON);

GO

总结

MSSQL 数据库提供了多种安全性能和加密功能,包括身份认证、授权、加密、审计、检查等等。作为一款广泛使用的商业数据库,MSSQL 数据库的安全性能优秀,可以保障数据库中的机密数据。

数据库标签