SQL Server下的列级加密实现(sqlserver列加密)

SQL Server是微软开发的关系型数据库管理系统, 是一个功能强大的服务器端软件。它具有廉价且可用于数据库应用程序开发的强大功能,这使其成为企业中最普遍使用的数据库。 SQL Server可以提供无缝的数据安全,包括数据库访问控制、备份和恢复、数据加密和审计等。

列级加密是数据安全中一种强大的技术,它可以有效地加密数据库中的数据,以此防止恶意用户访问或偷窃数据。SQL Server提供了一种叫做 always encrypted 的功能,可以实现列级加密。 always encrypted 遵守客户的安全性策略,可以保护在表中存储的数据,不管是被存储还是传输到客户端,always encrypted 都可以让数据处于加密状态。

在SQL Server中实现列级加密,需要满足以下几个步骤:

1、创建一个带有 always encrypted 这个功能的数据库。

2、为要加密的列设置加密类型,有可用的 Randomized encryption 和 Deterministic encryption 两种类型的加密,选择哪一种可以根据实际需求进行定制 。

3、创建敏感数据类型的数据库表,这步需要确保表中的字段都是 always encrypted,才能正确的使用。

4、向带 always encrypted 的数据库表中插入数据,此时数据会被加密并存储到数据库中。

5、当需要访问加密数据时,你可以使用 SQL Server 提供的 always encryption 键加密以访问数据,这样就可以保证数据的安全。

下面是实现列级加密的示例代码,把它复制到 SSMS(SQL Server Management Studio)中,并执行它:

— Create Database

CREATE DATABASE MyDatabase;

— Create Table

CREATE TABLE Person(

id INT NOT NULL PRIMARY KEY,

name VARCHAR(50) ALWAYS ENCRYPTED,

age INT,

address VARCHAR(100) ALWAYS ENCRYPTED

);

— Insert data into Table

INSERT INTO Person (id, name, age, address)

VALUES (1, ENCRYPTBYKEY(KEY_GUID(‘Key1′),’John’), 30,

ENCRYPTBYKEY(KEY_GUID(‘Key2′),’New York’));

— Retrieve and decrypt

SELECT id,

CONVERT(varchar(50), DECRYPTBYKEY(name)) as Name,

age,

CONVERT(varchar(100), DECRYPTBYKEY(address)) as Address

FROM Person

WHERE id = 1;

以上就是SQL Server下列级加密的实现,可以有效地保护数据库中的数据,大大提高了数据的安全性。


数据运维技术 » SQL Server下的列级加密实现(sqlserver列加密)