如何通过CloudFormation为DynamoDB表配置加密功能及加密密钥
关于DynamoDB CloudFormation模板加密相关问题解答
1. 当前模板创建表的默认加密措施
- 静态加密:2022年之后所有新创建的DynamoDB表默认开启静态加密,默认使用AWS拥有的加密密钥,该加密完全免费,密钥由AWS全权管理,对用户无感知,不会暴露给用户。
- 传输加密:所有和DynamoDB的API交互默认强制使用TLS 1.2及以上协议加密,数据传输过程全程加密保护。
2. 模板中指定使用AWS自带密钥加密的方法
你可以通过添加SSESpecification配置项,切换使用AWS托管的KMS密钥(即归属于你AWS账户KMS服务的预置aws/dynamodb密钥),修改后的模板示例如下:
AWSTemplateFormatVersion: "2010-09-09" Resources: myDynamoDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "product" AttributeType: "S" - AttributeName: "model" AttributeType: "S" KeySchema: - AttributeName: "product" KeyType: "HASH" - AttributeName: "Model" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" TableName: "InfoTable" # 新增服务端加密配置 SSESpecification: SSEEnabled: true SSEType: KMS
3. 是否需要额外新增密钥资源
- 如果你使用默认的AWS拥有的密钥,或者上面提到的AWS托管
aws/dynamodbKMS密钥,不需要额外新增任何密钥资源,直接配置即可。 - 只有当你需要使用自定义的客户托管密钥时,才需要在模板中额外新增
AWS::KMS::Key资源定义,再在SSESpecification的KMSMasterKeyId字段中关联该密钥即可。
内容的提问来源于stack exchange,提问作者kyagu
相关产品推荐
相关产品推荐

