雪花外部舞台的加密选项有什么用途?

时间:2020-07-27 16:30:02

标签: amazon-web-services amazon-s3 encryption snowflake-cloud-data-platform

简而言之:

在创建外部舞台时,Snowflake提供加密选项。以下是选项(来自https://docs.snowflake.com/en/sql-reference/sql/create-stage.html

[ ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '<string>' ] |
                   [ TYPE = 'AWS_SSE_S3' ] |
                   [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] |
                   [ TYPE = NONE ] ) ]

虽然我们知道AWS_CSE用于客户端加密(其中,在雪花外部阶段分别由客户使用客户拥有的主密钥对数据进行加密/解密),AWS_SSE_S3和AWS_SSE_KMS选项的用途是什么?

详细信息:

在我们的方案中,我们有一个S3存储桶(OUR_S3_BUCKET),其存储桶级别的加密设置为SSE-KMS,创建了一个传入目录并上传了文件covid_data.csv。

S3://OUR_S3_BUCKET/incomig/covid_data.csv.

要访问此文件,我们通过引用S3存储桶创建了存储集成,并在Snowflake中创建了三个外部阶段。

EXTERNAL STAGE 1 (without encryption):

CREATE OR REPLACE STAGE TEST_STG_NOENC
URL='S3://OUR_S3_BUCKET/incomig/'
STORAGE_INTEGRATION = INBOUND_S3;

EXTERNAL STAGE 2 (with AWS_SSE_S3):

CREATE OR REPLACE STAGE TEST_STG_SSE_S3
URL='S3://OUR_S3_BUCKET/incomig/'
STORAGE_INTEGRATION = INBOUND_S3
ENCRYPTION = ( TYPE = 'AWS_SSE_S3');

EXTERNAL STAGE 3 (with AWS_SSE_MKS):

CREATE OR REPLACE STAGE TEST_STG_SSE_KMS
URL='S3://OUR_S3_BUCKET/incomig/'
STORAGE_INTEGRATION = INBOUND_S3
ENCRYPTION = ( TYPE = 'AWS_SSE_KMS'  KMS_KEY_ID = 'arn:aws:kms:region:account_no:key/KMS_KEY_ID');

我们可以通过从所有三个外部阶段中进行选择来访问covid_data.csv数据。

select t.$1, t.$2, t.$3
    from @<<All 3 external stages>> (file_format => OUR_CSV_FILE_FORMAT ) t;

即使我们的S3存储桶是使用SSE_KMS加密的,我们也可以使用不带加密选项的阶段(TEST_STG_NOENC)访问文件。

在这种情况下,AWS_SSE_S3和AWS_SSE_KMS加密选项的用途是什么?

0 个答案:

没有答案