【问题标题】:How to mask a column in Redshift?如何屏蔽 Redshift 中的列?
【发布时间】:2019-04-29 08:59:38
【问题描述】:

我需要保留一个用户表,以授予对必须屏蔽密码字段的应用程序的访问权限。

怎么办?

示例:如果您在 Redshift 中查询 select * from PG_USER;,您会看到密码列值显示为 *****。如何为我的自定义表格做到这一点?

【问题讨论】:

  • 将其存储在不同的表中或在列中加密。不要在任何地方存储明文密码。并且只将它们放在用户无权访问的地方。
  • 如何在列级别加密?
  • 您没有直接在表中加密密码。这应该由将数据插入表的脚本来处理。完成身份验证后,您将表中的加密数据与提供的加密密码进行比较。如果加密算法(或者很可能是密码的哈希)相同,那么就会匹配。
  • @GordonLinoff “将其存储在不同的表中”是什么意思?您的意思是创建一个在列出用户及其其他详细信息时不显示密码列的视图?
  • @EdgarsT。我正在考虑做完全相同的事情,但将其保留在我的优先级列表的第二位,首先是一个简单的掩蔽。所以与此同时,我想到了这个查询,即 Redshift 如何为我在问题中提到的表执行此操作,当 select * 完成时他们如何屏蔽它?我不允许看到它的 SQL 源代码,这可以帮助我弄清楚屏蔽逻辑。有什么帮助吗?

标签: sql amazon-web-services amazon-redshift data-masking


【解决方案1】:

如果表中有您不希望特定用户看到的列,则:

  • 不要授予他们使用表的权限
  • 使用CREATE VIEW 选择您希望他们能够查看的所有列
  • 授予他们使用视图的权限
  • 告诉他们使用视图而不是表格(它们的操作方式相同)

或者,创建一个没有违规列的表,并授予他们使用该表的权限。

【讨论】:

  • 我会这样做的。但与此同时,我想到了这个查询,即 Redshift 如何为我在问题中提到的表执行此操作,当 select * 完成时他们如何屏蔽它?我不允许看到它的 SQL 源代码,这可以帮助我弄清楚屏蔽逻辑。有什么帮助吗?
  • PG_USER 表是一个特殊的系统表。列出密码会违反安全性,因此掩码可能是 PostgreSQL 内置的(Redshift 就是在此基础上构建的)。
  • 使用 VIEWs 的想法对您来说是一个可能的解决方案。我想建议使用一些外部解决方案,例如 DataSunrise,它可以帮助您使用达到目标来为某些用户屏蔽数据。
【解决方案2】:

以下帖子展示了如何通过一些数据保护最佳实践在 Redshift 中实施加密 UDF。 https://techsboot.com/blogs/redshift/encrypt_decrypt_udf_using_pyaes/

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2019-11-25
  • 2018-05-27
  • 1970-01-01
  • 2011-03-04
  • 2011-08-11
  • 2017-07-02
相关资源
最近更新 更多