tfsec DigitalOcean Compute 安全规则全解析:6 项检查的触发条件与修复实战
应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载本篇指南以 tfsec 仓库中的 DigitalOcean Compute 检查索引 为骨架完整讲解其下 6 个安全检查项enforce-https、kubernetes-auto-upgrades-not-enabled、no-public-egress、no-public-ingress、surge-upgrades-not-enabled、use-ssh-keys的默认严重级别、触发条件、不安全/安全配置示例并结合仓库源码说明这些规则 ID 的演变与忽略迁移机制帮助你在 Terraform 代码中准确识别并修复 DigitalOcean 基础设施的安全隐患。DigitalOcean Compute 检查项一览在 tfsec 的规则体系中每条规则由provider-service-checkname三段式 ID 唯一标识。DigitalOcean 提供商下分为compute计算与spaces对象存储两个服务域本文聚焦于compute域。该域共包含 6 个检查项覆盖负载均衡、Kubernetes 集群、防火墙与 Droplet 四类资源分布如下表检查 ID目标资源默认严重级别检查要点digitalocean-compute-enforce-httpsdigitalocean_loadbalancercritical负载均衡入口协议必须使用 HTTPSdigitalocean-compute-kubernetes-auto-upgrades-not-enableddigitalocean_kubernetes_clustercriticalKubernetes 集群必须启用自动升级digitalocean-compute-no-public-egressdigitalocean_firewallcritical防火墙出站规则不得开放到公网digitalocean-compute-no-public-ingressdigitalocean_firewallcritical防火墙入站规则不得开放到公网digitalocean-compute-surge-upgrades-not-enableddigitalocean_kubernetes_clustermediumKubernetes 集群应启用 surge 升级digitalocean-compute-use-ssh-keysdigitalocean_droplethighDroplet 必须配置 SSH 密钥登录这 6 个检查项在仓库的规则总表中有登记其文档页面按docs/checks/digitalocean/compute/check-name/index.md的结构组织由cmd/tfsec-docs命令基于模板自动生成参见 文档页面生成器。一、enforce-https强制负载均衡使用 HTTPS 入口检查 IDdigitalocean-compute-enforce-https默认严重级别critical检查动机纯 HTTP 协议是明文传输、可被人直接阅读的。如果恶意攻击者在你的网络链路上进行窃听就能看到所有来回传输的数据。应当使用 HTTPS——即基于加密TLS连接的 HTTP——使窃听者无法读取流量内容。该检查会检查digitalocean_loadbalancer资源的forwarding_rule块中entry_protocol的值是否使用了不安全的协议作为入口。不安全示例触发检查以下配置将入口与目标协议均设为http会命中digitalocean-compute-enforce-httpsresource digitalocean_loadbalancer bad_example { name bad_example-1 region nyc3 forwarding_rule { entry_port 80 entry_protocol http target_port 80 target_protocol http } droplet_ids [digitalocean_droplet.web.id] }安全示例通过检查将entry_protocol与entry_port切换为https/443即可通过检查resource digitalocean_loadbalancer bad_example { name bad_example-1 region nyc3 forwarding_rule { entry_port 443 entry_protocol https target_port 443 target_protocol https } droplet_ids [digitalocean_droplet.web.id] }可能影响与建议修复可能影响入站流量不受保护明文传输可能泄露敏感数据。建议修复切换到 HTTPS 以启用 TLS 安全特性。二、kubernetes-auto-upgrades-not-enabledKubernetes 集群必须自动升级检查 IDdigitalocean-compute-kubernetes-auto-upgrades-not-enabled默认严重级别critical检查动机DigitalOcean Kubernetes 集群应当开启自动升级以确保集群始终包含最新的安全补丁。该检查检查digitalocean_kubernetes_cluster资源的auto_upgrade属性。不安全示例触发检查将auto_upgrade显式设置为false会触发检查resource digitalocean_kubernetes_cluster foo { name foo region nyc1 version 1.20.2-do.0 auto_upgrade false node_pool { name autoscale-worker-pool size s-2vcpu-2gb auto_scale true min_nodes 1 max_nodes 5 } }安全示例通过检查将auto_upgrade设为trueresource digitalocean_kubernetes_cluster foo { name foo region nyc1 version 1.20.2-do.0 auto_upgrade true node_pool { name autoscale-worker-pool size s-2vcpu-2gb auto_scale true min_nodes 1 max_nodes 5 } }可能影响与建议修复可能影响集群未运行最新安全补丁可能成为渗透攻击的目标。建议修复启用自动升级后以确定性方式设置维护策略maintenance policy。三、no-public-egress禁止防火墙出站规则开放公网检查 IDdigitalocean-compute-no-public-egress默认严重级别critical检查动机将端口开放到公共互联网通常应当避免。除非明确需要否则应把访问限制在必须的 IP 地址或网段内。该检查扫描digitalocean_firewall资源的outbound_rule块若destination_addresses中包含0.0.0.0/0或::/0这类开放网段则判定失败。不安全示例触发检查resource digitalocean_firewall bad_example { name only-22-80-and-443 droplet_ids [digitalocean_droplet.web.id] outbound_rule { protocol tcp port_range 22 destination_addresses [0.0.0.0/0, ::/0] } }安全示例通过检查将目的地址收敛到具体的私有网段如192.168.1.0/24、fc00::/7resource digitalocean_firewall good_example { name only-22-80-and-443 droplet_ids [digitalocean_droplet.web.id] outbound_rule { protocol tcp port_range 22 destination_addresses [192.168.1.0/24, fc00::/7] } }可能影响与建议修复可能影响端口暴露允许来自公网的入口访问。建议修复设置更严格的 CIDR 网段范围。四、no-public-ingress禁止防火墙入站规则开放公网检查 IDdigitalocean-compute-no-public-ingress默认严重级别critical检查动机与出站规则同理将入站端口开放到公网同样应当避免。该检查扫描digitalocean_firewall资源的inbound_rule块若source_addresses中包含0.0.0.0/0或::/0则判定失败。不安全示例触发检查resource digitalocean_firewall bad_example { name only-22-80-and-443 droplet_ids [digitalocean_droplet.web.id] inbound_rule { protocol tcp port_range 22 source_addresses [0.0.0.0/0, ::/0] } }安全示例通过检查将来源地址收敛到私有网段resource digitalocean_firewall good_example { name only-22-80-and-443 droplet_ids [digitalocean_droplet.web.id] inbound_rule { protocol tcp port_range 22 source_addresses [192.168.1.0/24, fc00::/7] } }可能影响与建议修复可能影响端口暴露到公网可能被未授权访问。建议修复设置更严格的 CIDR 网段范围。五、surge-upgrades-not-enabledKubernetes 集群应启用 surge 升级检查 IDdigitalocean-compute-surge-upgrades-not-enabled默认严重级别medium检查动机升级集群期间工作负载会被临时迁移到新节点。虽然会产生少量额外成本但换来的是不会经历停机。该检查检查digitalocean_kubernetes_cluster资源的surge_upgrade属性。不安全示例触发检查resource digitalocean_kubernetes_cluster surge_upgrade_bad { name foo region nyc1 version 1.20.2-do.0 surge_upgrade false node_pool { name worker-pool size s-2vcpu-2gb node_count 3 taint { key workloadKind value database effect NoSchedule } } }安全示例通过检查resource digitalocean_kubernetes_cluster surge_upgrade_good { name foo region nyc1 version 1.20.2-do.0 surge_upgrade true node_pool { name worker-pool size s-2vcpu-2gb node_count 3 taint { key workloadKind value database effect NoSchedule } } }可能影响与建议修复可能影响升级过程可能影响 Kubernetes 集群的可用性产生停机。建议修复在 Kubernetes 集群中启用 surge 升级。六、use-ssh-keysDroplet 必须使用 SSH 密钥登录检查 IDdigitalocean-compute-use-ssh-keys默认严重级别high检查动机管理服务器时大部分时间都通过 SSH 连接终端会话。相比基于密码的登录SSH 密钥利用加密技术提供了更安全的登录方式被推荐给所有用户。该检查检查digitalocean_droplet资源是否配置了ssh_keys属性。不安全示例触发检查未提供任何ssh_keys的 Droplet 会触发检查resource digitalocean_droplet good_example { image ubuntu-18-04-x64 name web-1 region nyc2 size s-1vcpu-1gb }安全示例通过检查先通过data digitalocean_ssh_key数据源引用已存在的密钥再在 Droplet 中挂载data digitalocean_ssh_key terraform { name myKey } resource digitalocean_droplet good_example { image ubuntu-18-04-x64 name web-1 region nyc2 size s-1vcpu-1gb ssh_keys [data.digitalocean_ssh_key.myKey.id] }可能影响与建议修复可能影响使用用户名与密码登录更容易被攻破。建议修复使用 SSH 密钥进行登录。从源码看规则 ID 的演变与兼容机制旧 ID 到新 ID 的映射DigitalOcean Compute 的这些检查项早期使用独立的旧 ID如DIG001DIG004在 旧 ID 映射表 中可以看到对应的历史代码旧代码新规则 IDDIG001digitalocean-compute-no-public-ingressDIG002digitalocean-compute-no-public-egressDIG003digitalocean-compute-use-ssh-keysDIG004digitalocean-compute-enforce-https此外部分规则在命名重组中还经历过域名的迁移例如digitalocean-droplet-use-ssh-keys迁移为digitalocean-compute-use-ssh-keys、digitalocean-loadbalancing-enforce-https迁移为digitalocean-compute-enforce-https这些改名映射记录在 忽略迁移逻辑 的renamedMap中。ignore 迁移工具的使用由于规则 ID 发生过变化老代码中形如tfsec:ignore:DIG003的忽略注释可能失效。忽略迁移逻辑 中的RunMigration会递归扫描目录下的.tf文件用正则tfsec:ignore:([A-Z]{3}\d{3})匹配旧代码并将其自动替换为对应的新规则 ID先匹配renamedMap再叠加legacy.IDs映射保证忽略规则在新版本下继续生效。文档页面的生成方式本系列检查项文档含本文引用的全部示例由cmd/tfsec-docs工具基于统一模板生成模板定义了Default Severity、Explanation、Possible Impact、Suggested Resolution、Insecure Example、Secure Example、Links等章节并注明以下示例将导致 XX 检查失败/通过的固定文案参见 文档页面生成器 的baseWebPageTemplate。这意味着每个检查项文档的结构与内容均与规则源码保持同步你在docs/checks/digitalocean/compute/下看到的就是各检查项的最终呈现形式。使用建议运行tfsec扫描含digitalocean_*资源的 Terraform 工程时上述 6 项检查默认全部启用若需临时忽略某条规则可用tfsec:ignore:规则ID注释注意优先使用新 ID如digitalocean-compute-use-ssh-keys而非旧代码。防火墙类检查no-public-egress / no-public-ingress同时匹配 IPv4 的0.0.0.0/0与 IPv6 的::/0收紧规则时两类地址都要收敛。两条 Kubernetes 检查自动升级、surge 升级均为布尔属性检查false显式赋值会触发务必结合维护策略与节点池 taint 一并规划。负载均衡与 Droplet 的检查聚焦入口协议与登录凭证入口一律 HTTPS、登录一律 SSH 密钥是修复成本最低、收益最直接的两项。赞分享应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载相关推荐ESLint规则修复安全审计定期检查修复功能的安全性ESLint规则修复安全审计定期检查修复功能的安全性 引言为什么需要关注ESLint修复功能的安全性 在现代JavaScript开发中ESLint已成为开发工具Lint静态分析代码质量惠普暗影精灵终极性能解锁指南告别官方软件限制让你的游戏本火力全开惠普暗影精灵终极性能解锁指南告别官方软件限制让你的游戏本火力全开 还在为惠普暗影精灵笔记本官方软件的功能限制而烦恼吗想要完全掌控笔记本的散热、性能和功耗设桌面应用硬件开发tfsec忽略规则完全指南如何智能管理安全检查白名单tfsec忽略规则完全指南如何智能管理安全检查白名单 tfsec是一款强大的Terraform静态代码分析工具专门用于发现云基础设施配置中的安全漏洞和合规问应用安全SASTIaC上一篇Zephyr 中的 Seeed Studio XIAO RP2350 板级支持硬件特性、引脚映射与 UF2 拖拽烧录实战下一篇Dogecoin 节点带宽限速指南使用 contrib/qos 脚本tc iptables为 22556 端口设置 QoS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026年复旦-华盛顿大学EMBA:如何支持企业全球业务

2026年复旦-华盛顿大学EMBA:如何支持企业全球业务

判断一个EMBA是否值得读,关键不在于项目名气能否带来心理上的确定感,而在于它能否回应企业正在面对的经营问题。对出海负责人来说,这些问题通常集中在三点:能否看懂全球市场变化,能否推动财务、供应链、营销和团队协同…

2026/10/15 3:47:43 阅读更多 →
Path of Building 完整使用指南

Path of Building 完整使用指南

Path of Building 完整使用指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 新赛季开荒前,最常见的纠结是这样的:照着规划了三天,在…

2026/10/15 3:46:43 阅读更多 →
klogg 日志探索工具完全指南:核心特性、多平台安装与源码构建实战

klogg 日志探索工具完全指南:核心特性、多平台安装与源码构建实战

桌面应用开发工具 【免费下载链接】klogg Really fast log explorer based on glogg project 项目地址: https://gitcode.com/gh_mirrors/kl/klogg 点击查看 免费下载 klogg 是一款基于 Qt 的开源跨平台图形化日志浏览与搜索工具,可视为 grep、less 与 …

2026/10/15 3:46:43 阅读更多 →

最新新闻

模板代码生成工具:从元数据到可用接口的完整实现

模板代码生成工具:从元数据到可用接口的完整实现

1. 为什么需要模板代码生成工具:一大半重复代码其实不该手写做后端开发的朋友应该都有过这种体验:新项目启动,建表、写实体、写Mapper、写Service接口和实现、写Controller,然后前端再把列表页、表单页、弹窗、状态标签挨个撸一遍…

2026/10/15 4:45:53 阅读更多 →
桶排序全解析:原理、复杂度与工程实践

桶排序全解析:原理、复杂度与工程实践

1. 从"把数据扔进格子里"说起:桶排序的第一性原理如果你接触排序算法有一阵子,大概率听说过这句话:"桶排序在数据分布均匀的时候能做到接近O(n)"。但很多人学完快排、归并之后,对桶排序的印象只剩下一个模糊的…

2026/10/15 4:45:53 阅读更多 →
ET 200MP模拟量输出模块AQ 4xU/I ST选型接线调试指南

ET 200MP模拟量输出模块AQ 4xU/I ST选型接线调试指南

简介:西门子SIMATIC S7-1500/ET 200MP模拟量输出模块AQ 4xU/I ST设备手册,面向工业自动化领域的工程技术人员、系统集成商与运维人员。内容聚焦模拟量输出模块在制造、能源、交通等场景下的选型、接线、参数设置与调试问题,帮助用户实现精准的…

2026/10/15 4:45:53 阅读更多 →
Windows开机自启全攻略:启动文件夹、注册表、任务计划与服务详解

Windows开机自启全攻略:启动文件夹、注册表、任务计划与服务详解

1. 开机自启这件事,远不止把快捷方式拖进启动文件夹那么简单很多人第一次接触开机自启,都是因为某个小工具每次重启后都要手动打开,烦得不行。于是上网一搜,看到最多的答案就是“把快捷方式拖进启动文件夹”,照做之后确…

2026/10/15 4:45:53 阅读更多 →
基于地点相似度的POI推荐与路径重组MATLAB实现

基于地点相似度的POI推荐与路径重组MATLAB实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 4:45:53 阅读更多 →
延迟优化实战:从毫秒级到微秒级的系统性能提升路径

延迟优化实战:从毫秒级到微秒级的系统性能提升路径

1. 我为什么折腾到微秒级:被延迟拖垮的业务,往往都死得悄无声息很多人做性能优化,跑到“毫秒级”就收工了,觉得接口P99能压到5ms以内已经是了不起的成就。但如果你在真正的高并发业务链路里待过,就会明白:当…

2026/10/15 4:44:53 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →