在表存储桶中指定具有 Amazon KMS 密钥的服务器端加密(SSE-KMS)
默认情况下,所有 Amazon S3 表存储桶都配置了加密,所有在表存储桶中创建的新表都会自动静态加密。具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)是每个表存储桶的默认加密配置。如果您要指定不同的加密类型,可以使用具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)。
可以在 CreateTableBucket
或 CreateTable
请求中指定 SSE-KMS 加密,也可以在 PutTableBucketEncryption
请求中设置表存储桶中的默认加密配置。
重要
要支持对通过 SSE-KMS 加密的表和表存储桶进行自动维护,您必须向 maintenance.s3tables.amazonaws.com 服务主体授予使用 KMS 密钥的权限。有关更多信息,请参阅 S3 表类数据存储服务 SSE-KMS 加密的权限要求。
为表存储桶指定加密
在创建新的表存储桶时,您可以指定 SSE-KMS 作为默认加密类型,有关示例,请参阅创建表存储桶。创建表存储桶后,您可以使用 REST API 操作、Amazon SDK 和 Amazon Command Line Interface(Amazon CLI)来指定将 SSE-KMS 用作默认加密设置。
注意
当您将 SSE-KMS 指定为默认加密类型时,用于加密的密钥必须支持访问 S3 表类数据存储服务维护服务主体。如果维护服务主体没有访问权限,您将无法在该表存储桶中创建表。有关更多信息,请参阅 向 S3 表类数据存储服务维护服务主体授予对 KMS 密钥的权限 。
要使用以下示例 Amazon CLI 命令,请将用户输入占位符
替换为您自己的信息。
aws s3tables put-table-bucket-encryption \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
; \ --encryption-configuration '{ "sseAlgorithm": "aws:kms", "kmsKeyArn": "arn:aws:kms:us-east-1
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" }' \ --region us-east-1
您可以使用 DeleteTableBucketEncryption API 操作移除表存储桶的默认加密设置。移除加密设置后,在表存储桶中创建的新表将使用默认的 SSE-S3 加密。
为表指定加密
在使用查询引擎、REST API 操作、Amazon SDK 和 Amazon Command Line Interface(Amazon CLI)创建新表时,可以对该表应用 SSE-KMS 加密。您在创建表时指定的加密设置优先于表存储桶的默认加密设置。
注意
对表使用 SSE-KMS 加密时,用于加密的密钥必须支持 S3 表类数据存储服务维护服务主体访问该表。如果维护服务主体没有访问权限,您将无法创建表。有关更多信息,请参阅 向 S3 表类数据存储服务维护服务主体授予对 KMS 密钥的权限 。
所需权限
创建加密表需要以下权限
s3tables:CreateTable
s3tables:PutTableEncryption
以下 Amazon CLI 示例使用基本架构创建一个新表,并使用客户自主管理型 Amazon KMS 密钥对其进行加密。要使用该命令,请将用户输入占位符
替换为您自己的信息。
aws s3tables create-table \ --table-bucket-arn "arn:aws:s3tables:
Region
:ownerAccountId
:bucket/amzn-s3-demo-table-bucket
" \ --namespace "mydataset" \ --name "orders" \ --format "ICEBERG" \ --encryption-configuration '{ "sseAlgorithm": "aws:kms", "kmsKeyArn": "arn:aws:kms:Region
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" }'\ --metadata '{ "iceberg": { "schema": { "fields": [ { "name": "order_id", "type": "string", "required": true }, { "name": "order_date", "type": "timestamp", "required": true }, { "name": "total_amount", "type": "decimal(10,2)", "required": true } ] } } }'