本文介绍如何使用 KMS 密钥配置服务器端加密,以便使用 Unity 目录读取路径中的 s3a://
文件。 它提供给需要跨云访问加密 S3 存储桶中的外部数据表和存储卷的用户。
使用 Unity 目录为 S3 配置加密
您可以配置服务器端加密,以允许 Unity Catalog 中的外部表和卷访问 S3 中的数据。 使用Delta Sharing共享的外部表不支持SSE加密。
步骤 1:在 AWS 中更新 KMS 密钥策略
为了保护 S3 中的数据,AWS 支持使用 Amazon S3 托管密钥(SSE-S3)或 AWS KMS 密钥(SSE-KMS)进行服务器端加密(SSE)。 如果使用 AWS S3 托管密钥,请跳到步骤 2。
在 AWS 中,转到 KMS 服务。
单击要向其添加权限的密钥。
在“ 密钥策略 ”部分中,选择“ 切换到策略”视图。
编辑允许 S3 使用密钥的密钥策略部分,例如:
{ "Sid": "Allow access through S3 for all principals in the account that are authorized to use S3", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<AWS ACCOUNT ID>", "kms:ViaService": "s3.<REGION>.amazonaws.com" } } },
单击“保存更改”。
步骤 2:使用 Unity 目录配置对 S3 的访问
使用 “创建存储凭据以连接到 Azure Data Lake Storage”中的说明创建存储凭据连接到 S3。
请确保在与 S3 存储桶相同的帐户中创建 IAM 策略。 如果使用 SSE-KMS,请在策略中包括以下内容:
{ "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<KMS-KEY>" ], "Effect": "Allow" },
请参阅 步骤 1:创建 IAM 角色。
创建一个外部位置以连接到 S3,使用 “创建外部位置以将云存储连接到 Azure Databricks”中的说明。
在外部位置配置服务器端加密,请参阅外部位置上的加密算法配置说明(仅适用于 AWS S3)。