练习 - 保护正在传输的、静态的和显示的数据
“MarketplaceDb”数据库存储敏感信息,如物理地址、电子邮件地址和电话号码。 如果公开,恶意攻击者可能会利用此信息损害你的企业或客户。 了解如何使用加密和数据掩码增强数据库的安全性。
TLS 网络加密
Azure SQL 数据库始终为所有连接强制执行传输层安全性加密 (TLS),这确保数据库与客户端之间所有“在传输中”的数据都是加密的。 通过使用 TLS 加密,可以确保可能截获应用服务器和数据库之间流量的任何人都无法读取数据。 TLS 加密是 Internet 上保护流量的标准,并且在此情况下可以确保与 Azure SQL 数据库之间的网络流量在默认情况下是安全的。
透明数据加密
Azure SQL 数据库使用透明数据加密 (TDE) 保护静态数据。 TDE 可执行静态数据库、关联备份和事务日志文件的实时加密和解密,无需更改应用程序。 使用数据库加密密钥,透明的数据加密在页面级别对数据执行实时 I/O 加密和解密。 将每个页面读入内存时会将其解密,在写入磁盘之前会将其加密。
默认情况下,为所有新部署的 Azure SQL 数据库启用了 TDE。 请务必检查并确保该数据加密未关闭。 早期版本的 Azure SQL Server 数据库可能未启用 TDE。
在 Azure 门户中查看在 marketplaceDb 数据库上配置 TDE 的位置。
使用激活沙盒时所用的同一帐户登录到 Azure 门户。
在 Azure 门户顶部的搜索栏中,搜索 marketplaceDb,然后选择数据库。
在左侧菜单窗格中的“安全”下,选择“数据加密”。
在数据加密选项中,确认“数据加密”设置为“打开”。 还应该能看到“已加密”的加密状态。
由于新数据库默认已加密,因此在创建数据库后,可以确保数据在磁盘上加密。
注意
Azure 包括名为 Microsoft Defender for Cloud 的内置服务,可以让你了解环境(包括 Azure SQL 数据库)的安全性。 Microsoft Defender for Cloud 标记任何没有启用 TDE 的数据库,使你能够报告并采取措施保护数据。
动态数据屏蔽
你可能会注意到,在上一单元中运行查询时,数据库中的某些信息很敏感。 有些电话号码、电子邮件地址和其他信息可能不希望完全显示给有权访问数据的所有人。
也许你不希望用户能够看到完整的电话号码或电子邮件地址,但你仍然希望将部分数据提供给客户服务代表以识别客户。 通过使用 Azure SQL 数据库的动态数据掩码功能,你可以限制显示给用户的数据。 动态数据掩码是一种基于策略的安全功能,会在针对指定的数据库字段运行查询后返回的结果集中隐藏敏感数据,同时保持数据库中的数据不变。
数据掩码规则包含要应用掩码的列,以及对数据进行掩码的方式。 可以创建自己的掩码格式,也可以使用如下所示的标准掩码:
- 默认值:显示该数据类型的默认值。
- 信用卡值:只显示卡号的最后四位数,其他所有数字以小写的 x 显示。
- 电子邮件:隐藏域名,以外除电子邮件帐户名第一个字符以外的所有字符。
- 数字:在一系列值之间指定一个随机数字。 例如,对于信用卡过期月份和年份,可随机选择 1 到 12 中的月份,并将年份范围设置为 2018 到 3000。
- 自定义字符串:可以设置数据起始位置公开的字符数、数据结束位置公开的字符数,以及要为剩余数据重复的字符。
数据库管理员查询列时,仍会看到原始值。 非管理员看到的是掩码值。 你可以允许其他用户查看掩码版本,将他们添加到掩码列表中已排除的 SQL 用户即可。
看看数据掩码在 marketplaceDb 数据库中的工作方式。
仍处于“marketplaceDb”数据库面板上的门户中时,在左侧菜单窗格的“安全”下,选择“动态数据掩码”。
掩码规则屏幕将显示现有动态数据掩码的列表,并针对应该应用动态数据掩码的列提供建议。
为电话号码添加掩码,让其只显示后四位。 选择顶部的“添加掩码”按钮,打开“添加掩码规则”对话框。
选择以下值。
设置 值 架构 SalesLT 表 客户 列 电话 (nvarchar) 掩码字段格式 自定义字符串(前缀 [填充] 后缀) 公开的前缀 0 填充字符串 XXX-XXX- 公开的后缀 4 选择“添加”以添加掩码规则。
为电子邮件地址再添加一个。 再次选择顶部的“添加掩码”按钮,打开“添加掩码规则”对话框。
设置 值 架构 SalesLT 表 客户 列 电子邮件地址 (nvarchar) 掩码字段格式 电子邮件 (aXXX@XXX.com) 选择“添加”以添加掩码规则。
将每个新掩码添加到掩码规则列表。 选择“保存”应用掩码。
查看数据掩码如何更改查询。
现在以 ApplicationUser 用户的身份重新登录到数据库。
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
运行以下查询。
SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer; GO
查看如何对输出进行掩码。
FirstName LastName EmailAddress Phone ------------- ------------- -------------------- ------------ Orlando Gee oXXX@XXXX.com XXX-XXX-0173 Keith Harris kXXX@XXXX.com XXX-XXX-0127 Donna Carreras dXXX@XXXX.com XXX-XXX-0130 Janet Gates jXXX@XXXX.com XXX-XXX-0173 ...
使用你创建的掩码规则,数据将以你指定的格式进行掩码。 这些规则可让你的客户服务代表通过其电话号码的后四位验证客户,但在视图中隐藏完整号码和客户的电子邮件地址。