如何在redshift中查询kms加密数据

Posted

技术标签:

【中文标题】如何在redshift中查询kms加密数据【英文标题】:how to query kms encrypted data in redshift 【发布时间】:2017-07-28 11:18:46 【问题描述】:

我已使用 aws kms 加密了我的 s3 密钥,并通过复制命令推送到 redshift。加密文件包含密文块和密钥字段。有没有办法查询已经加密的真实数据?

真实数据是这样的

"id":"1","name":"dummyname",age:"42"

我的加密数据如下所示

"CiphertextBlob":[1,2,3,0,120,233,75,200,66,143,164,147,227,238,147,160,116,177,169,157,151,230,181,14,191,156,140,146,43,184,202,30,55,51,17,114,237,1,96,101,196,239,48,167,210,15,193,102,57,210,110,143,138,232,0,0,0,126,48,124,6,9,42,134,72,134,247,13,1,7,6,160,111,48,109,2,1,0,48,104,6,9,42,134,72,134,247,13,1,7,1,48,30,6,9,96,134,72,1,101,3,4,1,46,48,17,4,12,14,218,49,42,14,25,206,72,238,21,16,108,2,1,16,128,59,185,185,70,8,156,85,194,144,17,206,233,181,87,105,10,140,135,145,66,47,247,242,163,1,69,237,116,152,162,95,86,73,209,218,214,205,204,214,243,151,78,99,3,19,56,105,58,202,158,36,227,244,108,99,93,209,4,50,113],"Plaintext":[243,146,203,144,109,46,20,207,245,11,58,63,178,191,136,49,243,247,189,88,11,28,59,222,217,53,156,239,233,15,129,22],"KeyId":"arn:aws:kms:<region>:<id>:key/<key>"

当通过复制命令将其推送到 redshift 时,AWS 是否有任何方法默认解密数据并允许查询真实数据?

【问题讨论】:

Encrypt Your Amazon Redshift Loads with Amazon S3 and AWS KMS? 谢谢。上面的链接讨论了加密和加载到红移。加密后查询redshift怎么办? 能否编辑您的问题并提供更多信息?例如,数据是如何加密的——您是使用 Amazon S3 SSE-KMS 自动加密,还是自己加密?如果是你自己做的,这样做有什么特别的原因吗? 【参考方案1】:

适用于 Redshift 的 AWS KMS 加密

如果您使用 AWS KMS 密钥进行了 S3 加密或客户端加密 (AWS CLI), 并使用复制命令将数据推送到Redshift,您可以查询数据,因为数据将在Redshift数据库中为解密格式。

只有在加载过程中,您的数据才会被加密格式,Redshift 使用 AWS KMS 密钥将推送的数据解密到 Redshift。

【讨论】:

以上是关于如何在redshift中查询kms加密数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python Jupyter Notebook 通过 KMS 加密从 S3 读取文件

DynamoDB 如何使用 AWS KMS

如何将密码存储在 Redshift 的表中?

如何使用 Cloud Formation 模板在 S3 存储桶上设置 SSE-S3 或 SSE-KMS 加密?

如何在 Redshift 中查询架构信息?

为啥即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据?