资讯动态

tfsec 检查项详解:Google Compute Disk 应使用客户管理密钥加密(google-compute-disk-encryption-customer-keys)

发布时间:2026/10/15 5:39:40 来源:尧图企业网站定制
应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载tfsec 内置的google-compute-disk-encryption-customer-keys检查用于扫描 Google Cloud 计算磁盘google_compute_disk强制要求磁盘使用客户管理密钥Customer Managed Encryption Key, CMEK进行加密。本文以 tfsec 官方检查文档 disk-encryption-customer-key 为骨架结合仓库中的规则注册表与命令行用法完整说明该检查的判定逻辑、不安全/安全配置写法以及在实际扫描流程中的排除与严重级别过滤方法帮助你在 Terraform 代码评审阶段自动发现密钥托管缺失的风险。检查项基本信息在 tfsec 的规则体系中该检查对应如下元信息见 rules.md属性值规则 IDgoogle-compute-disk-encryption-customer-keys提供方google分类compute检查目标google_compute_disk资源默认严重级别low低该检查位于 Google Compute 检查族之中与它同族的磁盘安全相关检查还包括google-compute-disk-encryption-no-plaintext-key禁止在代码中以明文raw_key方式提供加密密钥默认严重级别为critical见 disk-encryption-no-plaintext-key 文档google-compute-vm-disk-encryption-customer-key针对google_compute_instance的启动盘与附加盘要求同样使用客户管理密钥见 vm-disk-encryption-customer-key 文档。三者共同构成了 tfsec 对 Google Compute 磁盘加密的完整校验面其中本文的主角负责检查独立磁盘资源是否声明了托管密钥。检查原因与影响分析官方文档对该检查的解释如下使用非托管unmanaged密钥会使密钥轮换和一般性的密钥管理变得困难。可能的影响使用非托管密钥意味着无法进行规范的密钥管理包括无法按组织策略定期轮换密钥、无法集中审计密钥生命周期也无法在密钥泄露时通过 Google Cloud KMS 快速撤销或更换。建议的修复方式使用托管密钥managed keys来加密磁盘即在google_compute_disk中通过disk_encryption_key块引用 Google Cloud KMS 密钥。从云平台最佳实践角度看这对应的是 Google Cloud 的 CMEK 能力由客户在 Cloud KMS 中创建密钥环与加密密钥再通过kms_key_self_link关联到磁盘。这样密钥的创建、轮换、权限授予和销毁都由客户自己的 KMS 体系管理符合多数企业的合规与审计要求。不安全示例会触发检查以下 Terraform 配置会被google-compute-disk-encryption-customer-keys检查判定为失败因为它虽然完整定义了磁盘的名称、类型、可用区、镜像、标签和物理块大小却完全没有声明任何加密密钥resource google_compute_disk bad_example { name test-disk type pd-ssd zone us-central1-a image debian-9-stretch-v20200805 labels { environment dev } physical_block_size_bytes 4096 }此时磁盘将使用 Google 默认的、由平台自动管理的密钥进行加密SSE 默认加密仍会开启但该密钥不受你的组织控制无法自定义轮换周期也无法按合规要求进行密钥级审计。安全示例通过检查以下配置在磁盘上添加了disk_encryption_key块并通过kms_key_self_link引用客户管理的 KMS 密钥即可通过本检查resource google_compute_disk good_example { name test-disk type pd-ssd zone us-central1-a image debian-9-stretch-v20200805 labels { environment dev } physical_block_size_bytes 4096 disk_encryption_key { kms_key_self_link something } }在实际生产配置中kms_key_self_link不应是字面量而应引用真实的 KMS 密钥资源。更推荐的写法是先声明 KMS 资源再通过引用传入例如resource google_kms_key_ring keyring { name disk-keyring location us-central1 } resource google_kms_crypto_key example { name disk-crypto-key key_ring google_kms_key_ring.keyring.id } resource google_compute_disk good_example { name test-disk type pd-ssd zone us-central1-a image debian-9-stretch-v20200805 disk_encryption_key { kms_key_self_link google_kms_crypto_key.example.id } }这样既满足 tfsec 检查也符合 Terraform 引用资源属性的最佳实践避免在代码中出现魔法字符串。同理在google_compute_instance的boot_disk中使用kms_key_self_link对应的是 vm-disk-encryption-customer-key 检查的通过形态。在扫描流程中如何应用该检查直接运行扫描tfsec 默认扫描当前目录下的 Terraform 文件无需任何参数tfsec .命中本检查后输出会标记规则 IDgoogle-compute-disk-encryption-customer-keys并附上失败资源所在文件的代码片段。按严重级别过滤由于本检查默认严重级别为low如果你只关心中等级别以上的问题可以通过--minimum-severity短参数-m过滤low 级别的结果将被省略tfsec . -m MEDIUM完整参数说明可在 usage.md 中查看或直接运行tfsec --help。临时排除该检查在 README 的排除示例中tfsec 明确给出了将本检查与其他规则一起排除的写法见 README.mdtfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys-e/--exclude接受逗号分隔的规则 ID 列表适用于某批存量资源暂未整改、先放行再分批治理的场景。需要说明的是排除属于临时策略长期更推荐在资源声明中补齐disk_encryption_key或在代码中通过 ignores 机制 显式记录豁免理由。与其他磁盘加密检查的协同检查 ID检查对象核心要求默认严重级别google-compute-disk-encryption-customer-keysgoogle_compute_disk必须通过kms_key_self_link使用客户管理密钥lowgoogle-compute-disk-encryption-no-plaintext-keygoogle_compute_disk禁止raw_key明文密钥criticalgoogle-compute-vm-disk-encryption-customer-keygoogle_compute_instance启动盘/附加盘必须使用客户管理密钥low建议在 CI 流水线如 GitHub Actions、PR 检查中同时启用这三条规则并配合--minimum-severity MEDIUM与--format sarif等输出格式将结果上报到代码扫描平台。对于存量低风险资源可结合-e排除与 ignores 豁免逐步完成密钥托管改造。小结google-compute-disk-encryption-customer-keys是 tfsec 内置的 Google Compute 磁盘加密治理规则其判定逻辑非常简单清晰google_compute_disk若未声明disk_encryption_key且未通过kms_key_self_link关联客户管理的 KMS 密钥即判定为不合规。通过本文的不安全/安全示例你可以快速在现有 Terraform 代码中定位并修复此类问题结合-m、-e等命令行参数与同族检查disk-encryption-no-plaintext-key、vm-disk-encryption-customer-key即可在代码提交前系统性落实 Google Compute 磁盘的密钥托管要求。赞分享应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载相关推荐tfsec 检查项解析Google Compute 磁盘加密密钥明文泄露google-compute-disk-encryption-no-plaintext-keytfsec 检查项解析Google Compute 磁盘加密密钥明文泄露google compute disk encryption no plaintex应用安全SASTIaCtfsec AWS Neptune 检查详解encryption-customer-key 强制使用客户托管密钥加密tfsec AWS Neptune 检查详解encryption customer key 强制使用客户托管密钥加密 导读 本文围绕 tfsec 内置检查规则应用安全SASTIaCtfsec 检查规则详解EBS 卷加密应使用客户托管密钥aws-ec2-volume-encryption-customer-keytfsec 检查规则详解EBS 卷加密应使用客户托管密钥aws ec2 volume encryption customer key tfsec 是用于扫应用安全SASTIaC上一篇 开源项目推荐Overcooked-AI —— 智能餐饮竞赛中的合作与策略下一篇探索艺术的边界DCT-Net——全身体像风格化利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑