狗万体育,狗万移动端,狗万官网官方网站

在博客中搜索

实验室数据安全

SQL Server 2019安全工具无意间透露了敏感数据的存储位置

Avidan Reich

保护数据并确保数据库符合安全基准和隐私法规(例如SOX,PCI,HIPAA和GDPR)的第一步是了解该数据库中包含哪些敏感信息。

Microsoft的SQL Server 2019引入了新工具SQL数据发现和分类 。 该软件内置于SQL Server Management Studio(SSMS)中,允许用户发现,分类,标记和报告数据库中的敏感数据。

分类引擎将扫描数据库并识别包含潜在敏感数据的列。 然后,它为用户提供了一种简单的方法来查看和应用分类建议,以及通过SSMS GUI或SQL语句ADD SENSITIVITY CLASSIFICATION手动对列进行分类 。 分类状态也被添加到审核日志中,并有助于监视对敏感数据的访问以达到合规性和审核目的。

通用安全工具在数据库外部执行此过程。 这遵循职责分离原则,该原则指出最佳实践是授权DBA仅执行其职责以执行其职责,例如设计数据库,将数据库作为一种技术进行管理以及监视数据库的使用和性能。

这意味着只有安全人员才能执行分类扫描-应用程序所有者将审查结果并标记敏感数据,然后安全人员将通过对该敏感数据应用审核和访问控制来对其进行保护。 通过在数据库外部执行扫描,DBA将失去流程,从而错过了参与敏感数据分类的机会。

尽管Microsoft的新分类工具易于使用,但它通过在数据库本身中进行标记来揭示敏感数据的存储位置(目录视图sys.sensitiveivity_classifications )。

这意味着,通过简单的查询,内部攻击者(例如恶意员工或安全性已受到威胁的员工)并持有“ 查看任何敏感度分类”权限,就可以准确地跟踪包含敏感数据的列,然后对其进行访问。 确实,在这里值得记住的是,连接到数据库的应用程序使用的DBA和数据库帐户通常都有权查看未加密和已加密的数据。

下面的代码示例返回带有相应分类的分类列:

 SELECT schema_name(O.schema_id)AS schema_name,O.NAME AS table_name,C.NAME AS column_name,information_type,label FROM sys.sensitivity_classifications sc JOIN sys.objects O ON sc.major_id = O.object_id JOIN sys.columns C ON sc .major_id = C.object_id和sc.minor_id = C.column_id 

查询输出

能够轻松查明有价值的数据位于何处,从而避免了扫描所有应用程序表以寻找敏感数据的漫长过程-这种嘈杂的方法可能会触发来自行为分析解决方案(例如Imperva Data Risk Analytics(以前称为CounterBreach))的事件。

此外,可以使用SQL语句DROP SENSITIVITY CLASSIFICATION更新敏感数据的标签。 拥有服务器权限控制服务器或数据库权限ALTER的攻击者可能在其攻击中使用此方法将敏感列的标签更改为不敏感,以便在数据活动监视(DAM)和其他监视下进行访问行为分析安全工具。

我们建议您使用数据库外部的安全性分类器(它可以使您的安全人员获得授权)或使用以下缓解措施的SQL Server分类器:

  • 验证仅授权帐户具有服务器权限“控制服务器”或数据库权限ALTER ,这允许它们执行语句DROP SENSITIVITY CLASSIFICATION

此外,如果您拥有DAM工具,我们建议您还添加以下缓解措施:

  • 监视对目录视图sys.sensitivity_classifications的访问
  • 监视SQL语句DROP SENSITIVITY CLASSIFICATION的执行

对敏感数据进行分类对于确保数据安全和数据库兼容至关重要。 通过采取一些其他步骤并遵循我们的建议,您可以保护敏感数据免于意外泄露。