如何通过CloudFormation启用DynamoDB静态加密?
可以通过CloudFormation创建启用静态加密的DynamoDB表
当然可以!你提到的SSESpecification属性完全可以在CloudFormation的AWS::DynamoDB::Table资源中配置,配置方式非常直接。
基础配置示例(启用默认AWS管理密钥加密)
下面是一个简化的CloudFormation模板片段,展示如何启用静态加密:
Resources: EncryptedDynamoDBTable: Type: AWS::DynamoDB::Table Properties: TableName: MyEncryptedTable AttributeDefinitions: - AttributeName: Id AttributeType: S KeySchema: - AttributeName: Id KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 SSESpecification: SSEEnabled: true
这里的SSESpecification是直接嵌套在Properties下的顶层属性,只要将SSEEnabled设为true,就会启用静态加密——默认情况下,DynamoDB会使用AWS管理的KMS密钥来加密你的表。
自定义KMS密钥的配置(可选)
如果你想使用自己创建的KMS密钥而非默认密钥,可以扩展SSESpecification配置,添加SSEType和KMSMasterKeyId属性:
SSESpecification: SSEEnabled: true SSEType: KMS KMSMasterKeyId: arn:aws:kms:us-east-1:123456789012:key/your-key-id
SSEType设为KMS表示使用客户管理的KMS密钥(默认值就是KMS,所以仅指定SSEEnabled: true时,本质也是用KMS类型,只是密钥由AWS托管)KMSMasterKeyId可以是密钥的ARN、密钥ID,或者别名的ARN(比如arn:aws:kms:us-east-1:123456789012:alias/your-key-alias)
关键注意事项
- 一旦启用静态加密,就无法再关闭该功能——这是DynamoDB的硬性限制,配置前请确认业务需求
- 如果使用自定义KMS密钥,要确保执行CloudFormation的角色拥有足够权限访问该密钥,比如
kms:DescribeKey和kms:CreateGrant权限
内容的提问来源于stack exchange,提问作者Kevin Smith
相关产品推荐
相关产品推荐

