首页 / 资讯中心 / 文章详情

tfsec 规则详解:aws-dynamodb-enable-at-rest-encryption 强制 DAX 集群与 DynamoDB 表启用静态加密

tfsec 规则详解:aws-dynamodb-enable-at-rest-encryption 强制 DAX 集群与 DynamoDB 表启用静态加密 ★ FEATURED ARTICLE
应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载本指南以 tfsec 内置检查aws-dynamodb-enable-at-rest-encryption为核心讲解其触发条件、判定逻辑、Terraform 修复示例以及如何在本地与 CI 流水线中实际运行该检查。读完本文后你将能够识别未启用服务端加密的aws_dax_cluster配置、写出通过检查的合规代码并掌握结合严重级别过滤、规则忽略与同组检查aws-dynamodb-enable-recovery、aws-dynamodb-table-customer-key构建 DynamoDB 安全基线的方法。检查概览规则 ID 与默认严重级别aws-dynamodb-enable-at-rest-encryption是 tfsec 针对 AWS DynamoDB 资源组提供的安全规则之一。其官方定义位于 docs/checks/aws/dynamodb/enable-at-rest-encryption/index.md在仓库的规则总表 rules.md 中登记如下规则 IDProvider类别检查内容aws-dynamodb-enable-at-rest-encryptionawsdynamodbDAX Cluster should always encrypt data at rest该检查的默认严重级别为 high意味着一旦命中tfsec 默认会将其作为高优先级问题报告适合直接阻断不合规代码合入。值得注意的是tfsec 为历史版本向下兼容保留了旧的数字规则 ID。在 internal/pkg/legacy/map.go 中可以确认如下映射关系AWS081: aws-dynamodb-enable-at-rest-encryption,也就是说旧版本 tfsec 输出的AWS081规则在最新版本中等价于aws-dynamodb-enable-at-rest-encryption。如果你的既有 CI 配置或忽略注释中使用了AWS081迁移到新 ID 时无需改写逻辑。检查对象与风险说明为什么 DAX 需要静态加密根据 docs/checks/aws/dynamodb/enable-at-rest-encryption/index.md 的说明本检查同时覆盖两类对象Amazon DynamoDB AcceleratorDAX集群DAX 是 DynamoDB 的内存加速层用于缓存热点数据、提供微秒级读取延迟DynamoDB 表DAX 背后的持久化存储层。文档给出的核心依据是静态加密encryption at rest为数据提供了额外一层保护能够防止对底层存储进行未授权访问后直接读取数据。AWS 为 DynamoDB 及其加速组件提供透明的服务端加密SSE加密过程发生在数据写入底层存储之前、读取之后自动解密对应用透明无感。由此引出的可能影响Possible Impact为一旦底层存储被攻破未加密的数据可被自由读取。官方给出的修复建议Suggested Resolution是为 DAX 集群启用静态加密。从实现上看Terraform AWS Provider 在aws_dax_cluster资源中通过server_side_encryption嵌套块控制该能力其中enabled true/false决定是否开启加密。本检查正是围绕该配置块的三种不安全形态展开判定。判定逻辑三种会被判定为失败的写法当aws_dax_cluster资源出现以下任一形态时aws-dynamodb-enable-at-rest-encryption检查将报告失败对应文档中的 Insecure Example# 失败形态 1完全没有服务端加密配置 resource aws_dax_cluster bad_example { // no server side encryption at all } # 失败形态 2声明了 server_side_encryption 块但内容为空 resource aws_dax_cluster bad_example { // other DAX config server_side_encryption { // empty server side encryption config } } # 失败形态 3显式关闭了服务端加密 resource aws_dax_cluster bad_example { // other DAX config server_side_encryption { enabled false // disabled server side encryption } }这三种形态分别对应配置缺失未声明server_side_encryption块。从规则设计意图看tfsec 认为默认值不可靠显式声明加密才是合规基线空块声明虽然写了server_side_encryption {}但未提供任何参数。空块并不会产生有效的加密语义仍需判定为失败显式禁用enabled false是最直接的违规信号明确表明加密被关闭。合规写法显式开启服务端加密通过检查的写法对应文档中的 Secure Example非常明确——在aws_dax_cluster中显式设置server_side_encryption { enabled true }resource aws_dax_cluster good_example { // other DAX config server_side_encryption { enabled true // enabled server side encryption } }将上面的不安全示例替换为这一形态后aws-dynamodb-enable-at-rest-encryption检查即可通过。实战增强一份可运行、可复现的完整示例文档中的示例为了聚焦判定逻辑省略了 DAX 集群的必填参数。为了便于在真实 Terraform 工程中直接落地验证下面给出一个补全必填字段、可直接terraform plan的对照版本补全参数仅用于使配置合法不影响检查对server_side_encryption的判定结果# 不合规DAX 集群未启用服务端加密 resource aws_dax_cluster bad_example { cluster_name bad-dax-cluster node_type dax.r5.large replication_factor 1 iam_role_arn aws_iam_role.dax.arn subnet_group_name aws_dax_subnet_group.main.subnet_group_name # 缺少 server_side_encryption 块 } # 合规显式开启服务端加密 resource aws_dax_cluster good_example { cluster_name good-dax-cluster node_type dax.r5.large replication_factor 1 iam_role_arn aws_iam_role.dax.arn subnet_group_name aws_dax_subnet_group.main.subnet_group_name server_side_encryption { enabled true } }上述配置假设你已预先定义aws_iam_role.dax、aws_dax_subnet_group.main等依赖资源。若想快速验证检查行为而不搭建完整环境也可以直接使用文档中的最小化示例运行扫描。如何实际运行该检查tfsec 的完整使用方式见 README.md。对包含上述aws_dax_cluster资源的目录执行tfsec .tfsec 会扫描指定目录默认当前工作目录下的全部 Terraform/HCL 文件若发现任何问题退出码为非零否则退出码为 0这一语义让检查天然适合接入 CI 门禁。用严重级别过滤聚焦 high 风险由于本检查默认严重级别为 high你可以通过--minimum-severity让 CI 只拦截高优先级问题参数定义见 internal/app/tfsec/cmd/flags.go# 只报告 CRITICAL 与 HIGH 级别的问题 tfsec . --minimum-severity HIGH--minimum-severity的可选值为CRITICAL, HIGH, MEDIUM, LOW传入非法值时 tfsec 会直接报错提示见 flags.go。在 Docker 中运行不安装本地二进制也可以用官方镜像扫描当前目录见 README.mddocker run --rm -it -v $(pwd):/src aquasec/tfsec /src输出格式与文件导出默认输出为lovely可读格式也可通过--format选择json、csv、checkstyle、junit、sarif、markdown、html等格式便于对接不同 CI 平台参数见 flags.go# 输出 JSON 报告 tfsec . --format json # 同时输出多种格式到文件首个格式额外打印到 stdout tfsec . --format json,sarif --out scan-results违规代码的豁免与排除策略使用行内注释忽略对于确实需要临时豁免的 DAX 集群可参考 README.md 的忽略机制在违规行或资源块上方添加注释#tfsec:ignore:aws-dynamodb-enable-at-rest-encryption resource aws_dax_cluster temporary_example { # 已知风险业务评审通过限期整改 }忽略注释还支持过期时间确保豁免不会永久遗留见 README.md#tfsec:ignore:aws-dynamodb-enable-at-rest-encryption:exp:2026-06-30 resource aws_dax_cluster temporary_example { # 到 2026-06-30 后该忽略自动失效 }使用--exclude排除规则若要在整个扫描中禁用该检查例如历史存量代码尚未整改可使用--exclude参数见 flags.gotfsec . --exclude aws-dynamodb-enable-at-rest-encryption多个规则 ID 用逗号分隔。推荐仅在迁移过渡期使用此方式长期建议通过注释忽略并配合过期时间管理存量风险。与 DynamoDB 检查组的配合构建完整安全基线本检查并非孤立存在。tfsec 针对 DynamoDB 一共提供三条规则索引见 docs/checks/aws/dynamodb/index.md规则 ID关注点默认严重级别aws-dynamodb-enable-at-rest-encryptionDAX 集群与表启用静态加密highaws-dynamodb-enable-recovery表启用时间点恢复PITRmediumaws-dynamodb-table-customer-key表使用客户管理密钥CMK加密low其中静态加密本文主题解决数据是否加密存储的问题是最基础的底线客户管理密钥table-customer-key/index.md解决加密由谁掌控的问题——DynamoDB 默认使用 AWS 托管密钥若需自行控制轮换等策略应在aws_dynamodb_table的server_side_encryption块中指定kms_key_arn时间点恢复enable-recovery/index.md解决数据被误删/恶意删除后能否回滚的问题通过point_in_time_recovery { enabled true }开启。生产环境的 DynamoDB 加固建议同时满足这三条规则aws_dax_cluster显式开启server_side_encryptionaws_dynamodb_table使用 CMK 并开启 PITR再结合 tfsec 的--minimum-severity HIGH门禁与忽略过期机制即可形成从加密到密钥可控再到可恢复的完整数据保护闭环。小结aws-dynamodb-enable-at-rest-encryption是 tfsec 中一条默认高严重级别的 DynamoDB 静态加密检查覆盖aws_dax_cluster的三种不安全形态完全缺失server_side_encryption块、空块声明、以及enabled false。合规修复方式单一且明确——显式设置enabled true。结合仓库中的 rules.md 规则总表、legacy/map.go 的旧 ID 映射以及 README 与 flags.go 中记录的运行、过滤、豁免方式你可以在本地与 CI 中稳定落地该检查并联合 DynamoDB 同组规则构建完整的数据安全基线。赞分享应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载相关推荐Nanobot OpenAI 兼容 API 完整指南用 /v1/chat/completions 把本地 Agent 接入任何应用Nanobot OpenAI 兼容 API 完整指南用 /v1/chat/completions 把本地 Agent 接入任何应用 Nanobot 内置了一套应用安全SASTIaC在 TanStack DB 中加密本地数据用 RxDB 加密插件实现静态加密Encryption at Rest在 TanStack DB 中加密本地数据用 RxDB 加密插件实现静态加密Encryption at Rest TanStack DB 本身是纯内存的响数据库NoSQL嵌入式数据库实时数据库如何快速掌握开源电磁仿真工具openEMS的5个高效技巧指南如何快速掌握开源电磁仿真工具openEMS的5个高效技巧指南 想要学习电磁仿真但被昂贵的商业软件吓退openEMS这款免费开源电磁场求解器正是你的理想选择应用安全SASTIaC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站