你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Google Cloud Platform (GCP) 资源的安全建议

本文列出了使用 “环境设置 ”页连接 Google Cloud Platform (GCP) 帐户时在 Microsoft Defender for Cloud 中看到的所有建议。 环境中显示的建议基于要保护的资源和自定义配置。

若要了解可以针对这些建议采取的操作,请参阅 Defender for Cloud 修正建议

安全功能分数根据已完成的安全建议数量计算得出。 若要首先确定要解决的建议,请查看每个建议的严重性及其对安全功能分数的潜在影响。

GCP 计算建议

Compute Engine VM 应使用容器优化 OS

说明:此建议评估键值对“imageType”:“COS”的节点池的配置属性。

严重性:低

应在 GCP 虚拟机上解决 EDR 配置问题

说明:若要保护虚拟机免受最新威胁和漏洞的影响,请解决已安装的终结点检测和响应(EDR)解决方案的所有已识别的配置问题。
注意:目前,此建议仅适用于已启用 Microsoft Defender for Endpoint (MDE) 的资源。

严重性:高

应在 GCP 虚拟机上安装 EDR 解决方案

说明:若要保护虚拟机,请安装终结点检测和响应(EDR)解决方案。 EDR 有助于阻止、检测、调查和响应高级威胁。 请使用 Microsoft Defender for Servers 部署 Microsoft Defender for Endpoint。 如果资源被归类为“不正常”,则它未安装受支持的 EDR 解决方案 [占位符链接 - 了解详细信息]。 如果安装了无法通过此建议发现的 EDR 解决方案,则可以免除该解决方案。

严重性:高

确保为 VM 实例启用“阻止项目范围内的 SSH 密钥”

说明:建议使用特定于实例的 SSH 密钥,而不是使用通用/共享项目范围的 SSH 密钥来访问实例。 项目范围的 SSH 密钥存储在计算/项目元数据中。 项目范围的 SSH 密钥可用于登录到项目中的所有实例。 使用项目范围的 SSH 密钥可简化 SSH 密钥管理,但如果遭到入侵,将带来可能影响项目内所有实例的安全风险。 建议使用特定于实例的 SSH 密钥,如果 SSH 密钥遭到入侵,则可以限制攻击面。

严重性:中等

确保计算实例在已启用受防护的 VM 的情况下启动

说明:为了防范高级威胁并确保 VM 上的启动加载程序和固件已签名和未采样,建议在启用受防护的 VM 的情况下启动计算实例。 受防护的 VM 是 Google Cloud Platform 上的虚拟机 (VM),通过一组安全控制措施进行了强化,有助于抵御 Rootkit 和 Bootkit。 受防护的 VM 为 Compute Engine VM 实例提供可验证的完整性,因此可确信实例未受到启动或内核级恶意软件或 Rootkit 的入侵。 受防护的 VM 的可验证完整性是通过使用安全启动、已启用虚拟受信任平台模块 (vTPM) 的受度量启动和完整性监视来实现的。 受防护的 VM 实例运行使用 Google 证书颁发机构签名和验证的固件,确保实例的固件未修改并建立安全启动的信任根。 完整性监视可帮助了解 VM 实例的状态并做出决策,而受防护的 VM vTPM 通过执行创建已知良好启动基线(称为完整性策略基线)所需的度量来启用受度量启动。 完整性策略基线用于与后续 VM 启动的度量进行比较,以确定是否有任何更改。 安全启动验证所有启动组件的数字签名并在签名验证失败时停止启动过程,帮助确保系统仅运行正版软件。

严重性:高

确保没有为 VM 实例启用“启用连接到串行端口”

说明:与串行端口交互通常称为串行控制台,这类似于使用终端窗口,在该输入和输出完全处于文本模式,并且没有图形界面或鼠标支持。 如果在实例上启用交互式串行控制台,客户端可以尝试从任何 IP 地址连接到该实例。 因此,应禁用交互式串行控制台支持。 一个虚拟机实例有四个虚拟串行端口。 与串行端口交互类似于使用终端窗口,在该输入和输出完全处于文本模式,并且没有图形界面或鼠标支持。 实例的操作系统、BIOS 和其他系统级实体经常将输出写入串行端口,并且可以接受命令或提示回答等输入。 通常,这些系统级实体使用第一个串行端口(端口 1),串行端口 1 通常称为串行控制台。 交互式串行控制台不支持基于 IP 的访问限制,例如 IP 允许列表。 如果在实例上启用交互式串行控制台,客户端可以尝试从任何 IP 地址连接到该实例。 这使得任何人都能够在知道正确的 SSH 密钥、用户名、项目 ID、区域和实例名称的情况下连接到该实例。 因此,应禁用交互式串行控制台支持。

严重性:中等

确保将 Cloud SQL PostgreSQL 实例的“log_duration”数据库标志设置为“on”

说明:启用log_hostname设置会导致记录每个已完成语句的持续时间。 这不会记录查询的文本,因此行为与log_min_duration_statement标志不同。 会话启动后,无法更改此参数。 监视执行查询所花费的时间对于识别任何占用资源的查询和评估服务器性能至关重要。 可以采取进一步措施,例如负载均衡和使用优化查询,以确保服务器的性能和稳定性。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_executor_stats”数据库标志设置为“off”

说明:PostgreSQL 执行程序负责执行 PostgreSQL 规划器移交的计划。 执行程序以递归方式处理计划以提取所需的行集。 “log_executor_stats”标志控制在每个查询的 PostgreSQL 日志中包含 PostgreSQL 执行程序性能统计信息。 “log_executor_stats”标志启用用于记录 PostgreSQL 执行程序性能统计信息的粗略分析方法,尽管这可用于故障排除,但它可能会显著增加日志量并产生性能开销。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_min_error_statement”数据库标志设置为“Error”或更严格的值

说明:“log_min_error_statement”标志定义被视为错误语句的最低消息严重性级别。 错误语句的消息随 SQL 语句一起记录。 有效值包括“DEBUG5”、“DEBUG4”、“DEBUG3”、“DEBUG2”、“DEBUG1”、“INFO”、“NOTICE”、“WARNING”、“ERROR”、“LOG”、“FATAL”和“PANIC”。每个严重级别包括上面提及的后续级别。 请确保设置为 ERROR 或更严格的值。 审核有助于解决操作问题,还可以进行取证分析。 如果未将“log_min_error_statement”设置为正确的值,则消息可能不会被适当分类为错误消息。 将常规日志消息视为错误消息很难找到实际错误,并且仅考虑更严格的严重性级别,因为错误消息可能会跳过实际错误来记录其 SQL 语句。 应将“log_min_error_statement”标志应设置为“ERROR”或更严格的值。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_parser_stats”数据库标志设置为“off”

说明:PostgreSQL 规划器/优化器负责分析和验证服务器收到的每个查询的语法。 如果语法正确,将生成“分析树”,否则将生成错误。 “log_parser_stats”标志控制在每个查询的 PostgreSQL 日志中包含分析程序性能统计信息。 “log_parser_stats”标志启用用于日志记录分析程序性能统计信息的粗略分析方法,尽管它可用于故障排除,但它可能会显著增加日志量并产生性能开销。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_planner_stats”数据库标志设置为“off”

说明:可以通过多种方式执行相同的 SQL 查询,但仍产生不同的结果。 PostgreSQL 规划器/优化器负责为每个查询创建最佳执行计划。 “log_planner_stats”标志控制在每个查询的 PostgreSQL 日志中包含 PostgreSQL 规划器性能统计信息。 “log_planner_stats”标志启用用于记录 PostgreSQL 规划器性能统计信息的粗略分析方法,尽管这可用于故障排除,但它可能会显著增加日志量并产生性能开销。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_statement_stats”数据库标志设置为“off”

说明:“log_statement_stats”标志控制在每个查询的 PostgreSQL 日志中包含 SQL 查询的端到端性能统计信息。 无法使用其他模块统计信息(log_parser_stats、log_planner_statslog_executor_stats)来启用此功能。 “log_statement_stats”标志可启用一种粗略的分析方法,用于记录 SQL 查询的端到端性能统计信息。 这可用于故障排除,但可能会显著增加日志量,并产生性能开销。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保计算实例没有公共 IP 地址

说明:不应将计算实例配置为具有外部 IP 地址。 为了减少攻击面,计算实例不应具有公共 IP 地址。 相反,应在负载均衡器后面配置实例,以最大程度地减少实例对 Internet 的暴露。 应排除 GKE 创建的实例,因为其中一些实例具有外部 IP 地址,并且无法通过编辑实例设置来更改。 这些 VM 具有以 gke 开头 的名称,并标记为 goog-gke-node

严重性:高

确保未将实例配置为使用默认服务帐户

说明:建议将实例配置为不使用默认计算引擎服务帐户,因为它对项目具有编辑器角色。 默认的 Compute Engine 服务帐户对项目具有“编辑者”角色,该角色允许对大多数 Google Cloud 服务进行读写访问。 若要防范 VM 遭到入侵并阻止攻击者访问所有项目,建议不要使用默认的计算引擎服务帐户。 相反,应创建一个新的服务帐户,并仅分配实例所需的权限。 默认计算引擎服务帐户命名 [PROJECT_NUMBER]- compute@developer.gserviceaccount.com。 应排除由 GKE 创建的 VM。 这些 VM 具有以 gke 开头 的名称,并标记为 goog-gke-node

严重性:高

确保未将实例配置为使用能够完全访问所有云 API 的默认服务帐户

说明:为了支持最低特权原则并防止潜在的特权升级,建议将实例分配到默认服务帐户“计算引擎默认服务帐户”,范围为“允许对所有云 API 完全访问权限”。除了可以选择性地创建、管理和使用用户托管的自定义服务帐户之外,Google 计算引擎还提供默认服务帐户“计算引擎默认服务帐户”,供实例访问必要的云服务。 “Compute Engine 默认服务帐户”分配有“项目编辑者”角色,因此,该服务帐户几乎具有所有云服务的所有功能,但计费除外。 但是,当分配给实例的“计算引擎默认服务帐户”时,它可以在三个范围内运行。

  1. 允许默认访问:仅允许运行实例所需的最低访问权限(最低特权)。
  2. 允许对所有云 API 进行完全访问:允许完全访问所有云 API/服务(访问过多)。
  3. 设置每个 API 的访问权限:允许实例管理员仅选择执行实例所需的特定业务功能的 API。如果实例配置了“计算引擎默认服务帐户”,其范围为“允许完全访问所有云 API”,具体取决于分配给用户(s)访问实例的 IAM 角色,它可能允许用户执行云操作/API 调用,用户不应执行导致权限升级成功。 应排除由 GKE 创建的 VM。 这些 VM 的名称以“gke-”开头,标记为“goog-gke-node”。

严重性:中等

确保未在实例上启用 IP 转发

说明:除非数据包的源 IP 地址与实例的 IP 地址匹配,否则计算引擎实例无法转发数据包。 同样,GCP 不会传递目标 IP 地址与接收数据包的实例的 IP 地址不同的数据包。 但是,如果要使用实例来帮助路由数据包,则这两种功能都是必需的。 应禁用数据包转发,以防止数据丢失或信息泄露。 除非数据包的源 IP 地址与实例的 IP 地址匹配,否则计算引擎实例无法转发数据包。 同样,GCP 不会传递目标 IP 地址与接收数据包的实例的 IP 地址不同的数据包。 但是,如果要使用实例来帮助路由数据包,则这两种功能都是必需的。 若要启用此源 IP 和目标 IP 检查,请禁用 canIpForward 字段,该字段允许实例发送和接收具有非匹配目标或源 IP 的数据包。

严重性:中等

确保将 Cloud SQL PostgreSQL 实例的“log_checkpoints”数据库标志设置为“on”

说明:确保将 Cloud SQL PostgreSQL 实例的 log_检查points 数据库标志设置为 on。 启用 log_checkpoints 会导致在服务器日志中记录检查点和重启点。 日志消息中包含一些统计信息,包括写入的缓冲区数和写入它们所用的时间。 此参数只能在 postgresql.conf 文件中或服务器命令行上设置。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_lock_waits”数据库标志设置为“on”

说明:为 PostgreSQL 实例启用“log_lock_waits”标志将为任何会话等待创建一个日志,该等待时间超过分配的“deadlock_timeout”获取锁的时间。 死锁超时定义了在检查任何条件之前等待锁的时间。 死锁超时的频繁运行可能表明存在潜在问题。 通过启用log_lock_waits标志来记录此类等待,可以用于识别由于锁定延迟而导致的性能不佳,或者如果专门制作的 SQL 正尝试通过持有锁来耗尽资源的时间过多。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_min_duration_statement”数据库标志设置为“-1”

说明:“log_min_duration_statement”标志定义记录语句总持续时间的语句的最小执行时间(以毫秒为单位)。 确保禁用“log_min_duration_statement”,即设置值 -1。 日志记录 SQL 语句可能包括不应记录在日志中的敏感信息。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保正确设置 Cloud SQL PostgreSQL 实例的“log_min_messages”数据库标志

说明:“log_min_error_statement”标志定义被视为错误语句的最低消息严重性级别。 错误语句的消息随 SQL 语句一起记录。 有效值包括“DEBUG5”、“DEBUG4”、“DEBUG3”、“DEBUG2”、“DEBUG1”、“INFO”、“NOTICE”、“WARNING”、“ERROR”、“LOG”、“FATAL”和“PANIC”。每个严重级别包括上面提及的后续级别。 注意:若要有效地关闭记录失败的语句,请将此参数设置为 PANIC。 ERROR 被视为最佳做法设置。 仅应根据组织的日志记录策略进行更改。 审核有助于解决操作问题,还可以进行取证分析。 如果未将“log_min_error_statement”设置为正确的值,则消息可能不会被适当分类为错误消息。 将常规日志消息视为错误消息会导致难以找到实际错误,同时仅考虑更严格的严重性级别,因为错误消息可能会跳过实际错误来记录其 SQL 语句。 应根据组织的日志记录策略设置“log_min_error_statement”标志。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保 Cloud SQL PostgreSQL 实例的“log_temp_files”数据库标志设置为“0”

说明:PostgreSQL 可以在这些操作超过“work_mem”时为操作创建临时文件,例如排序、哈希和临时查询结果。“log_temp_files”标志控制日志记录名称和删除时的文件大小。 将“log_temp_files”配置为 0 会导致记录所有临时文件信息,而正值仅记录大小大于或等于指定千字节数的文件。 如果值为“-1”,则禁用临时文件信息日志记录。 如果未记录所有临时文件,则可能更难确定可能由于应用程序编码不佳或故意资源不足尝试而导致的潜在性能问题。

严重性:低

确保使用客户提供的加密密钥对关键 VM 的 VM 磁盘进行加密

说明:客户提供的加密密钥(C标准版K)是 Google Cloud 存储 和 Google 计算引擎中的一项功能。 如果你提供自己的加密密钥,Google 会使用你的密钥来保护 Google 生成的用于加密和解密你的数据的密钥。 默认情况下,Google Compute Engine 会对所有静态数据进行加密。 Compute Engine 会处理和管理此加密,你无需执行任何其他操作。 但是,如果你想自己控制和管理此加密,可以提供自己的加密密钥。 默认情况下,Google Compute Engine 会对所有静态数据进行加密。 Compute Engine 会处理和管理此加密,你无需执行任何其他操作。 但是,如果你想自己控制和管理此加密,可以提供自己的加密密钥。 如果你提供自己的加密密钥,Compute Engine 会使用你的密钥来保护 Google 生成的用于加密和解密数据的密钥。 只有能够提供正确密钥的用户才能使用受客户提供的加密密钥保护的资源。 Google 不会将密钥存储在其服务器上,并且无法访问受保护的数据,除非你提供密钥。 这也意味着,如果忘记或丢失密钥,则 Google 无法恢复密钥或恢复使用丢失密钥加密的任何数据。 至少业务关键型 VM 应使用 CSEK 加密 VM 磁盘。

严重性:中等

GCP 项目应已启用 Azure Arc 自动预配

说明:若要充分了解 Microsoft Defender for 服务器的安全内容,应将 GCP VM 实例连接到 Azure Arc。若要确保所有符合条件的 VM 实例自动接收 Azure Arc,请在 GCP 项目级别启用从 Defender for Cloud 自动预配。 详细了解 Azure Arc适用于服务器的 Microsoft Defender

严重性:高

GCP VM 实例应连接到 Azure Arc

说明:连接 GCP 虚拟机 Azure Arc,以便完全了解 Microsoft Defender for Servers 安全内容。 了解有关 Azure Arc 的详细信息,以及关于混合云环境中的适用于服务器的 Microsoft Defender

严重性:高

GCP VM 实例应安装 OS 配置代理

说明:若要使用 Azure Arc 自动预配接收完整的 Defender for Servers 功能,GCP VM 应启用 OS 配置代理。

严重性:高

应启用 GKE 群集的自动修复功能

说明:此建议评估键值对“key”:“autoRepair”,“value”:true 的节点池的管理属性。

严重性:中等

应启用 GKE 群集的自动升级功能

说明:此建议评估键值对“key”:“autoUpgrade”,“value”:true 的节点池的管理属性。

严重性:高

应启用对 GKE 群集的监视

说明:此建议评估群集的 monitoringService 属性是否包含云监视应用于写入指标的位置。

严重性:中等

GCP 容器建议

[预览]GCP 注册表中的容器映像应已解决漏洞发现

说明:Defender for Cloud 会扫描注册表映像中的已知漏洞(CVE),并为每个扫描的映像提供详细的发现。 扫描和修正注册表中容器映像的漏洞有助于维护安全可靠的软件供应链,降低安全事件的风险,并确保符合行业标准。

严重性:高

类型:漏洞评估

[预览]GCP 中运行的容器应已解决漏洞发现

说明:Defender for Cloud 创建 Kubernetes 群集中当前运行的所有容器工作负荷的清单,并通过匹配所使用的映像以及为注册表映像创建的漏洞报告来为这些工作负荷提供漏洞报告。 扫描和修正容器工作负载的漏洞对于确保可靠且安全的软件供应链、降低安全事件的风险以及确保符合行业标准至关重要。

严重性:高

类型:漏洞评估

应在 GCP 连接器上启用 Defender for Containers 的高级配置

说明:Microsoft Defender for Containers 提供云原生 Kubernetes 安全功能,包括环境强化、工作负载保护和运行时保护。 为确保正确预配解决方案并获得全套功能,请启用所有高级配置设置。

严重性:高

GKE 群集应已安装 Microsoft Defender 的 Azure Arc 扩展

说明:Microsoft Defender 的 群集扩展 为 GKE 群集提供安全功能。 该扩展从群集及其节点收集数据,以识别安全漏洞和威胁。 此扩展适用于支持 Azure Arc 的 Kubernetes。 详细了解 Microsoft Defender for Cloud 针对容器化环境的安全功能

严重性:高

GKE 群集应已安装 Azure Policy 扩展

说明:适用于 Kubernetes 的 Azure Policy 扩展扩展了 Gatekeeper v3(用于开放策略代理 (OPA) 的许可控制器 Webhook),以集中、一致的方式在群集上应用大规模强制措施和安全措施。 此扩展适用于支持 Azure Arc 的 Kubernetes

严重性:高

应在 GCP 连接器上启用 Microsoft Defender for Containers

说明:Microsoft Defender for Containers 提供云原生 Kubernetes 安全功能,包括环境强化、工作负载保护和运行时保护。 在 GCP 连接器上启用容器计划,以加强 Kubernetes 群集的安全性并修正安全问题。 详细了解 Microsoft Defender for Containers。

严重性:高

应启用 GKE 群集的自动修复功能

说明:此建议评估键值对“key”:“autoRepair”,“value”:true 的节点池的管理属性。

严重性:中等

应启用 GKE 群集的自动升级功能

说明:此建议评估键值对“key”:“autoUpgrade”,“value”:true 的节点池的管理属性。

严重性:高

应启用对 GKE 群集的监视

说明:此建议评估群集的 monitoringService 属性是否包含云监视应用于写入指标的位置。

严重性:中等

应启用 GKE 群集的日志记录

说明:此建议评估群集的 loggingService 属性是否包含云日志记录应用于写入日志的位置。

严重性:高

应禁用 GKE 网络仪表板

说明:此建议评估键值对“disabled”:false 的 addonsConfig 属性的 kubernetesDashboard 字段。

严重性:高

应在 GKE 群集上禁用旧式授权

说明:此建议评估群集的旧版Abac 属性,以获取键值对“enabled”:true。

严重性:高

应在 GKE 群集上启用控制平面授权网络

说明:此建议评估群集的 masterAuthorizedNetworksConfig 属性作为键值对“enabled”:false。

严重性:高

GKE 群集应已启用别名 IP 范围

说明:此建议评估群集中 ipAllocationPolicy 的 useIPAliases 字段是否设置为 false。

严重性:低

GKE 群集应已启用专用群集

说明:此建议评估 privateClusterConfig 属性的 enablePrivateNodes 字段是否设置为 false。

严重性:高

应在 GKE 群集上启用网络策略

说明:此建议评估键值对“disabled”的 addonsConfig 属性的 networkPolicy 字段:true。

严重性:中等

数据平面建议

启用适用于 Kubernetes 的 Azure Policy 后,GCP 支持所有 Kubernetes 数据平面安全建议。

GCP 数据建议

确保将 Cloud SQL SQL Server 实例的“3625 (trace flag)”数据库标志设置为“off”

说明:建议将云 SQL Server 实例的“3625(跟踪标志)”数据库标志设置为“off”。跟踪标志通常用于诊断性能问题或调试存储过程或复杂计算机系统,但也可能建议Microsoft 支持部门来解决对特定工作负荷产生负面影响的行为。 当按照指示使用时,所有记录的跟踪标志和 Microsoft 支持部门推荐的跟踪标志在生产环境中都完全受支持。 “3625(跟踪日志)”通过使用“******屏蔽某些错误消息的参数,限制返回给不是 sysadmin 固定服务器角色成员的用户的信息量。 这可以帮助阻止披露敏感信息。 因此,建议禁用此标志。 此建议适用于 SQL Server 数据库实例。

严重性:中等

确保将 Cloud SQL SQL Server 实例的“external scripts enabled”数据库标志设置为“off”

说明:建议将 Cloud SQL Server 实例的“已启用外部脚本”数据库标志设置为关闭。 “external scripts enabled”允许执行包含某些远程语言扩展的脚本。 此属性默认处于禁用状态。 安装“高级分析服务”后,安装程序可以根据需要将此属性设置为 true。 由于“external scripts enabled”功能允许执行 SQL 外部的脚本(例如位于 R 库中的文件),这可能会对系统的安全性产生不利影响,因此应禁用此功能。 此建议适用于 SQL Server 数据库实例。

严重性:高

确保将 Cloud SQL SQL Server 实例的“remote access”数据库标志设置为“off”

说明:建议将云 SQL Server 实例的“远程访问”数据库标志设置为“关闭”。“远程访问”选项控制从运行 SQL Server 实例的本地或远程服务器执行存储过程。 该选项的默认值为 1。 这将授权允许从远程服务器执行本地存储过程或从本地服务器执行远程存储过程。 若要防止本地存储过程在远程服务器上运行或远程存储过程在本地服务器上运行,必须禁用此选项。 “remote access”选项控制本地存储过程在远程服务器上的执行或远程存储过程在本地服务器上的执行。 “remote access”功能可能会被滥用,用于通过将查询处理卸载到目标来对远程服务器发起拒绝服务 (DoS) 攻击,因此应禁用此功能。 此建议适用于 SQL Server 数据库实例。

严重性:高

确保将 Cloud SQL MySQL 实例的“skip_show_database”数据库标志设置为“on”

说明:建议将 Cloud SQL Mysql 实例的“skip_show_database”数据库标志设置为“on”。如果“skip_show_database”数据库标志没有 SHOW DATABA标准版S 权限,则阻止用户使用 SHOW DATABA标准版S 语句。 如果担心用户能够看到属于其他用户的数据库,则此功能可提高安全性。 其效果取决于 SHOW DATABASES 权限:如果变量值为 ON,则仅允许具有 SHOW DATABASES 权限的用户使用 SHOW DATABASES 语句,该语句显示所有数据库名称。 如果值为 OFF,则允许所有用户使用 SHOW DATABASES,但该语句仅显示用户对其具有 SHOW DATABASES 或其他权限的数据库的名称。 此建议适用于 MySQL 数据库实例。

严重性:低

确保为所有 BigQuery 数据集指定默认的客户管理的加密密钥 (CMEK)

说明:BigQuery 默认使用 Google 托管加密密钥使用信封加密来加密静态数据。 数据使用数据加密密钥加密,数据加密密钥本身使用密钥加密密钥进一步加密。 此过程是无缝的,不需要用户提供任何其他输入。 但是,如果想拥有更大的控制权,可以使用客户管理的加密密钥 (CMEK) 作为 BigQuery 数据集的加密密钥管理解决方案。 默认情况下,BigQuery 使用 Google 托管的加密密钥进行信封加密来加密静态数据。 这是无缝的,不需要用户的任何其他输入。 为了更好地控制加密,可以使用客户管理的加密密钥 (CMEK) 作为 BigQuery 数据集的加密密钥管理解决方案。 为数据集设置默认的客户管理的加密密钥 (CMEK) 可确保将来创建的任何表都使用指定的 CMEK(如果未提供其他选项)。 注意:Google 不会将密钥存储在其服务器上,并且无法访问受保护的数据,除非你提供密钥。 这也意味着,如果忘记或丢失密钥,则 Google 无法恢复密钥或恢复使用丢失密钥加密的任何数据。

严重性:中等

确保所有 BigQuery 表都使用客户管理的加密密钥 (CMEK) 进行加密

说明:BigQuery 默认使用 Google 托管加密密钥使用信封加密来加密静态数据。 数据使用数据加密密钥加密,数据加密密钥本身使用密钥加密密钥进一步加密。 此过程是无缝的,不需要用户提供任何其他输入。 但是,如果想拥有更大的控制权,可以使用客户管理的加密密钥 (CMEK) 作为 BigQuery 数据集的加密密钥管理解决方案。 如果使用 CMEK,则 CMEK 用于加密数据加密密钥,而不是使用 Google 管理的加密密钥。 默认情况下,BigQuery 使用 Google 托管的加密密钥进行信封加密来加密静态数据。 这是无缝的,不需要用户的任何其他输入。 为了更好地控制加密,可以使用客户管理的加密密钥 (CMEK) 作为 BigQuery 表的加密密钥管理解决方案。 CMEK 用于加密数据加密密钥,而不是使用 Google 管理的加密密钥。 BigQuery 存储表和 CMEK 关联,加密/解密是自动完成的。 在 BigQuery 数据集上应用默认的客户管理的密钥可确保将来创建的所有新表都使用 CMEK 进行加密,但现有表需要进行更新才能单独使用 CMEK。 注意:Google 不会将密钥存储在其服务器上,并且无法访问受保护的数据,除非你提供密钥。 这也意味着,如果忘记或丢失密钥,则 Google 无法恢复密钥或恢复使用丢失密钥加密的任何数据。

严重性:中等

确保 BigQuery 数据集不可匿名访问或公开访问

说明:建议 BigQuery 数据集上的 IAM 策略不允许匿名和/或公共访问。 向 allUsers 或 allAuthenticatedUsers 授予权限将允许任何人访问数据集。 如果敏感数据存储在数据集中,则此类访问可能不可取。 因此,请确保不允许匿名和/或公共访问数据集。

严重性:高

确保为 Cloud SQL 数据库实例配置了自动备份

说明:建议将所有 SQL 数据库实例设置为启用自动备份。 备份提供了一种还原 Cloud SQL 实例以恢复丢失的数据或从该实例的问题中恢复的方法。 需要为包含应防止丢失或损坏的数据的任何实例设置自动备份。 此建议适用于 SQL Server、PostgreSql、MySql 第 1 代和 MySql 第 2 代实例。

严重性:高

确保 Cloud SQL 数据库实例不对外开放

说明:数据库服务器应仅接受来自受信任网络/IP 的连接,并限制来自世界的访问。 若要最大程度地减少数据库服务器实例上的攻击面,应仅批准受信任的/已知和必需的 IP(s)才能连接到该实例。 授权网络不应将 IP/网络配置为“0.0.0.0/0”,这将允许从世界上任何地方访问实例。 请注意,授权网络仅适用于具有公共 IP 的实例。

严重性:高

确保 Cloud SQL 数据库实例没有公共 IP

说明:建议将第二代 Sql 实例配置为使用专用 IP 而不是公共 IP。 若要降低组织的攻击面,云 SQL 数据库不应具有公共 IP。 专用 IP 为应用程序提供增强的网络安全性和更低的延迟。

严重性:高

确保 Cloud Storage 存储桶不可匿名访问或公开访问

说明:建议 Cloud 存储 存储桶上的 IAM 策略不允许匿名或公共访问。 允许匿名或公开访问将授予任何人访问存储桶内容的权限。 如果要存储任何敏感数据,则可能不需要此类访问。 因此,请确保不允许匿名或公共访问存储桶。

严重性:高

确保云存储桶启用了统一的桶级别访问

说明:建议在云存储存储桶上启用统一的存储桶级别访问。 建议使用统一的存储桶级访问权限来统一并简化授予对云存储资源的访问权限的方式。 云存储提供了两个系统来授予用户访问存储桶和对象的权限:云标识和访问管理(云 IAM)和访问控制列表 (ACL)。
这些系统并行运行,为了使用户能够访问 Cloud Storage 资源,只有其中一个系统需要授予用户权限。 Cloud IAM 在整个 Google Cloud 中使用,可用于在存储桶和项目级别授予各种权限。 ACL 仅供 Cloud Storage 使用并且权限选项有限,但可用于按对象授予权限。

为了支持统一的权限系统,Cloud Storage 具有统一存储桶级访问权限。 使用此功能会禁用所有云存储资源的 ACL:然后通过 Cloud IAM 专门授予对云存储资源的访问权限。 启用统一的存储桶级访问可确保如果存储存储桶无法公开访问,则存储桶中的任何对象都无法公开访问。

严重性:中等

确保计算实例已启用机密计算

说明:Google Cloud 加密静态和传输中的数据,但必须解密客户数据进行处理。 机密计算是一项突破性技术,用于加密正在使用的数据,同时正在处理数据。 机密计算环境将数据加密保存在内存中和中央处理器 (CPU) 之外的其他位置。 机密 VM 利用 AMD EPYC CPU 的安全加密虚拟化 (SEV) 功能。 客户数据在使用、索引、查询或训练时会保持加密状态。 加密密钥在每个 VM 的硬件中生成,不可导出。 由于性能和安全性的内置硬件优化,机密计算工作负载的性能不会受到重大影响。 通过机密计算,在处理客户的敏感代码和其他数据时,这些数据在内存中加密。 Google 无权访问加密密钥。 机密 VM 有助于缓解与依赖 Google 基础结构或 Google 内部人员以明文方式访问客户数据相关的风险担忧。

严重性:高

确保使用存储桶锁配置日志存储桶上的保留策略

说明:在日志存储桶上启用保留策略将保护存储在云存储存储桶中的日志不被覆盖或意外删除。 建议在用作日志接收器的所有存储存储桶上设置保留策略并配置存储桶锁定。 可以通过创建一个或多个包含日志筛选器和目标的接收器来导出日志。 当 Stackdriver 日志记录接收新的日志条目时,它们会与每个接收器进行比较。 如果日志条目与接收器的筛选器匹配,则会将该日志条目的副本写入目标。 接收器可配置为导出存储桶中的日志。 建议为这些云存储存储桶配置数据保留策略并锁定数据保留策略;从而永久防止策略减少或删除。 这样,如果系统遭到攻击者或想要掩盖其踪迹的恶意内部人员的入侵,活动日志肯定会得到保留,用于取证和安全调查。

严重性:低

确保 Cloud SQL 数据库实例要求所有传入连接都使用 SSL

说明:建议强制实施与 SQL 数据库实例的所有传入连接以使用 SSL。 SQL 数据库连接如果成功捕获(MITM);可以显示敏感数据,例如凭据、数据库查询、查询输出等。出于安全性,建议在连接到实例时始终使用 SSL 加密。 此建议适用于 Postgresql、MySql 第 1 代和 MySql 第 2 代实例。

严重性:高

确保将 SQL Server 实例上 Cloud SQL 的“contained database authentication”数据库标志设置为“off”

说明:建议在 SQL Server 实例上为 Cloud SQL 设置“包含的数据库身份验证”数据库标志设置为“off”。包含的数据库包括定义数据库所需的所有数据库设置和元数据,并且对安装数据库的数据库引擎实例没有配置依赖关系。 用户可以连接到数据库而无需在 数据库引擎 级别对登录名进行身份验证。 将数据库与数据库引擎隔离可以轻松地将数据库移到另一个 SQL Server实例。 包含的数据库面临着一些独有的威胁, SQL Server 数据库引擎 管理员应该了解并缓解这些威胁。 大部分威胁都与 USER WITH PASSWORD 身份验证过程相关,该过程会将身份验证的范围从数据库引擎级别转到数据库级别,因此建议禁用此标志。 此建议适用于 SQL Server 数据库实例。

严重性:中等

确保将 Cloud SQL SQL Server 实例的“cross db ownership chaining”数据库标志设置为“off”

说明:建议将云 SQL Server 实例的“跨数据库所有权链”数据库标志设置为“关闭”。使用“跨数据库所有权”链接选项为 Microsoft SQL Server 实例配置跨数据库所有权链。 此服务器选项使您能够在数据库级别控制跨数据库所有权链接,或者允许在所有数据库中启用跨数据库所有权链接。 建议不要启用“跨数据库所有权”,除非 SQL Server 实例托管的所有数据库都必须参与跨数据库所有权链,并且你已了解此设置的安全影响。 此建议适用于 SQL Server 数据库实例。

严重性:中等

确保将 Cloud SQL MySQL 实例的“local_infile”数据库标志设置为“off”

说明:建议将云 SQL MySQL 实例的local_infile数据库标志设置为关闭。 local_infile 标志控制 LOAD DATA 语句的服务器端 LOCAL 功能。 根据 local_infile 设置,服务器可拒绝或允许在客户端启用了 LOCAL 的客户端加载本地数据。 若要明确地使服务器拒绝 LOAD DATA LOCAL 语句(无论客户端程序和库在生成时或运行时如何配置),请在禁用 local_infile 的情况下启动 mysqld。 也可以在运行时设置 local_infile。 由于与local_infile标志关联的安全问题,建议禁用它。 此建议适用于 MySQL 数据库实例。

严重性:中等

确保存在针对 Cloud Storage IAM 权限更改的日志指标筛选器和警报

说明:建议为 Cloud 存储 Bucket IAM 更改建立指标筛选器和警报。 监视对云存储存储桶权限的更改可以减少检测和更正对存储桶内敏感云存储存储桶和对象的权限所需的时间。

严重性:低

确保存在针对 SQL 实例配置更改的日志指标筛选器和警报

说明:建议为 SQL 实例配置更改建立指标筛选器和警报。 监视对 SQL 实例配置更改的更改可能会缩短在 SQL 服务器上检测和更正错误配置所需的时间。 下面是可能影响 SQL 实例安全状况的一些可配置选项:

  • 启用自动备份和高可用性:配置错误可能会对业务连续性、灾难恢复和高可用性造成不利影响
  • 授权网络:配置不当可能会增加对不受信任的网络的风险

严重性:低

确保每个服务帐户只有 GCP 托管的服务帐户密钥

说明:用户托管服务帐户不应具有用户管理的密钥。 有权访问密钥的任何人都可以通过服务帐户访问资源。 GCP 托管的密钥由 App Engine 和 Compute Engine 等 Cloud Platform 服务使用。 无法下载这些密钥。 Google 将保留密钥,并大约每周自动轮换一次。 用户管理的密钥由用户创建、下载和管理。 它们在创建后 10 年到期。 对于用户管理的密钥,用户必须拥有密钥管理活动的所有权,其中包括:

  • 密钥存储
  • 键分布
  • 密钥吊销
  • 密钥轮换
  • 保护密钥不被未经授权的用户使用
  • 密钥恢复

即使有密钥所有者的预防措施,密钥也很容易因常见的开发不当行为而泄露,例如,将密钥签入源代码或将其保留在下载目录中,或者不小心将它们留在支持博客/频道上。 建议防止用户托管服务帐户密钥。

严重性:低

确保已根据需要设置 Cloud SQL SQL Server 实例的“user connections”数据库标志

说明:建议根据组织定义的值为 Cloud SQL Server 实例设置“用户连接”数据库标志。 “user connections”选项指定 SQL Server 实例上允许同时建立的最大用户连接数。 允许的实际用户连接数也取决于所使用的 SQL Server 版本,以及应用程序或应用程序和硬件的限制。 SQL Server 允许的最大用户连接数为 32767。 由于用户连接是动态(自动配置)选项,SQL Server 将根据需要自动调整最大用户连接数,最大不超过允许的最大值。 例如,如果仅有 10 个用户登录,则要分配 10 个用户连接对象。 在大多数情况下,无需更改此选项的值。 默认值为 0,表示允许的最多用户连接数为 (32,767) 。 此建议适用于 SQL Server 数据库实例。

严重性:低

确保未配置 Cloud SQL SQL Server 实例的“user options”数据库标志

说明:建议不要配置云 SQL Server 实例的“用户选项”数据库标志。 “user options”指定适用于所有用户的全局默认值。 将建立一个用户工作会话期间使用的默认查询处理选项的列表。 用户选项选项允许更改 标准版T 选项的默认值(如果服务器的默认设置不适用)。 用户可以使用 SET 语句覆盖这些默认值。 可以为新登录名动态配置 user options 。 更改用户选项的设置后,新的登录会话将使用新设置;当前登录会话不受影响。 此建议适用于 SQL Server 数据库实例。

严重性:低

应启用 GKE 群集的日志记录

说明:此建议评估群集的 loggingService 属性是否包含云日志记录应用于写入日志的位置。

严重性:高

应在配置了接收器的存储桶上启用对象版本控制

说明:此建议评估存储桶版本控制属性中已启用的字段是否设置为 true。

严重性:高

应调查项目中的过度预配标识,以减少权限蠕变索引 (PCI)

说明:应调查项目中过度预配的标识,以减少权限爬行索引(PCI),并保护基础结构。 通过移除未使用的高风险权限分配来减少 PCI。 高 PCI 反映了与具有超出正常或所需使用权限的标识相关的风险。

严重性:中等

具有加密密钥的项目不应具有带所有者权限的用户

说明:此建议评估已分配角色/所有者的项目元数据中的 IAM 允许策略。

严重性:中等

用作日志接收器的存储桶不应为可公开访问

说明:此建议评估主体 allUsers 或 allAuthenticatedUsers(授予公共访问权限)的存储桶的 IAM 策略。

严重性:高

GCP IdentityAndAccess 建议

加密密钥的用户数不得超过三个

说明:此建议评估密钥环的 IAM 策略, 项目和组织,并检索具有角色的主体,这些主体允许他们使用云 KMS 密钥加密、解密或签名数据:roles/owner、roles/cloudkms.cryptoKeyEncrypterDecrypter、roles/cloudkms.cryptoKeyEncrypter、roles/cloudkms.cryptoKeyDecrypter、roles/cloudkms.signer 和 roles/cloudkms.signerVerifier。

严重性:中等

确保没有为项目创建 API 密钥

说明:密钥不安全,因为它们可以公开查看,例如在浏览器中查看,也可以在密钥所在的设备上访问它们。 建议改用标准身份验证流。

使用 API 密钥所涉及的安全风险如下:

  1. API 密钥是简单的加密字符串
  2. API 密钥不会标识发出 API 请求的用户或应用程序
  3. API 密钥通常可供客户端访问,因此可以轻松发现和窃取 API 密钥

为了避免使用 API 密钥的安全风险,建议改用标准身份验证流。

严重性:高

确保 API 密钥仅限于应用程序需要访问的 API

说明:API 密钥不安全,因为它们可以公开查看,例如在浏览器中查看,也可以在密钥所在的设备上访问它们。 建议将 API 密钥限制为仅使用应用程序所需的 API(调用)。

使用 API 密钥所涉及的安全风险如下:

  1. API 密钥是简单的加密字符串
  2. API 密钥不会标识发出 API 请求的用户或应用程序
  3. API 密钥通常可供客户端访问,因此可以轻松发现和窃取 API 密钥

鉴于这些潜在风险,Google 建议使用标准身份验证流而不是 API 密钥。 但是,在有限的情况下,API 密钥更合适。 例如,如果有一个移动应用程序需要使用 Google 云翻译 API,但不需要后端服务器,API 密钥是向该 API 进行身份验证的最简单方法。

为了通过提供最小特权来减少攻击面,可将 API 密钥限制为仅使用(调用)应用程序所需的 API。

严重性:高

确保只有指定的主机和应用才能使用 API 密钥

说明:不受限制的密钥不安全,因为它们可以公开查看,例如在浏览器中查看,也可以在密钥所在的设备上访问它们。 建议将 API 密钥用法限制为受信任的主机、HTTP 引用者和应用。

使用 API 密钥所涉及的安全风险如下:

  1. API 密钥是简单的加密字符串
  2. API 密钥不会标识发出 API 请求的用户或应用程序
  3. API 密钥通常可供客户端访问,因此可以轻松发现和窃取 API 密钥

鉴于这些潜在风险,Google 建议使用标准身份验证流而不是 API 密钥。 但是,在有限的情况下,API 密钥更合适。 例如,如果有一个移动应用程序需要使用 Google 云翻译 API,但不需要后端服务器,API 密钥是向该 API 进行身份验证的最简单方法。

为了减少攻击途径,API 密钥只能限制为受信任的主机、HTTP 引用者和应用程序。

严重性:高

确保 API 密钥每 90 天轮换一次

说明:建议每隔 90 天轮换 API 密钥。

使用 API 密钥所涉及的安全风险如下:

  1. API 密钥是简单的加密字符串
  2. API 密钥不会标识发出 API 请求的用户或应用程序
  3. API 密钥通常可供客户端访问,因此可以轻松发现和窃取 API 密钥

由于存在这些潜在风险,Google 建议使用标准身份验证流而不是 API 密钥。 但是,在有限的情况下,API 密钥更合适。 例如,如果有一个移动应用程序需要使用 Google 云翻译 API,但不需要后端服务器,API 密钥是向该 API 进行身份验证的最简单方法。

密钥被盗后,它没有过期时间,这意味着它可能会无限期使用,除非项目所有者撤销或重新生成密钥。 轮换 API 密钥将减少与使用已泄露或已终止帐户关联的访问密钥的机会窗口。

应轮换 API 密钥,以确保无法使用可能丢失、破解或被盗的旧密钥访问数据。

严重性:高

确保在 90 天内轮换了 KMS 加密密钥

说明:Google Cloud 密钥管理服务将加密密钥存储在分层结构中,旨在实现有用而优雅的访问控制管理。 轮换计划的格式取决于所使用的客户端库。 对于 gcloud 命令行工具,下一个旋转时间必须采用“ISO”或“RFC3339”格式,并且旋转周期必须采用“INTEGER[UNIT]”格式,其中单位可以是秒(秒)、分钟(m)、小时(h)或天(d)。 设置密钥轮换周期和开始时间。 可以使用指定的“轮换周期”创建密钥,这是自动生成新密钥版本之间的时间。 还可以使用指定的下一次轮换时间创建密钥。 密钥是一个命名对象,表示用于特定目的的“加密密钥”。 密钥材料(用于“加密”的实际位)在创建新密钥版本时可能会随时间而变化。 密钥用于保护某些“数据语料库”。可以使用同一密钥对文件集合进行加密,并且对该密钥具有“解密”权限的人员能够解密这些文件。 因此,有必要确保将“轮换周期”设置为特定时间。

严重性:中等

确保存在针对项目所有权分配/更改的日志指标筛选器和警报

说明:为了防止对用户/服务帐户进行不必要的项目所有权分配,并进一步滥用项目和资源,应监视所有“角色/所有者”分配。 角色分配为基元角色“roles/Owner”的成员(用户/服务帐户)是项目所有者。 项目所有者拥有角色所属项目的所有权限。 总结如下:

  • 项目内所有 GCP 服务的所有查看器权限
  • 修改项目内所有 GCP 服务状态的操作的权限
  • 管理项目和项目内所有资源的角色和权限
  • 为向成员(用户/服务帐户)授予所有者角色的项目设置计费将允许该成员修改标识和访问管理 (IAM) 策略。 因此,仅当成员具有管理 IAM 策略的合法目的时,才向其授予所有者角色。 这是因为项目 IAM 策略包含敏感的访问控制数据。 允许管理 IAM 策略的最小用户集将简化可能需要的任何审核。 项目所有权对项目具有最高级别的权限。 为避免滥用项目资源,应监视上述项目所有权分配/变更操作,并提醒相关接收者。
  • 发送项目所有权邀请
  • 接受/拒绝用户邀请项目所有权
  • role\Owner添加到用户/服务帐户
  • 从中删除用户/服务帐户 role\Owner

严重性:低

确保为项目启用 oslogin

说明:启用 OS 登录会将 SSH 证书绑定到 IAM 用户,并有助于有效的 SSH 证书管理。 启用 osLogin 可确保用于连接到实例的 SSH 密钥映射到 IAM 用户。 撤销对 IAM 用户的访问权限将撤销与该特定用户关联的所有 SSH 密钥。 它有助于集中和自动化的 SSH 密钥对管理,这对于处理响应泄露的 SSH 密钥对和/或吊销外部/第三方/供应商用户等情况非常有用。 若要了解哪个实例导致项目运行不正常,请参阅建议“确保所有实例都启用奥斯陆”。

严重性:中等

确保为所有实例启用 oslogin

说明:启用 OS 登录会将 SSH 证书绑定到 IAM 用户,并有助于有效的 SSH 证书管理。 启用 osLogin 可确保用于连接到实例的 SSH 密钥映射到 IAM 用户。 撤销对 IAM 用户的访问权限将撤销与该特定用户关联的所有 SSH 密钥。 它有助于集中和自动化的 SSH 密钥对管理,这对于处理响应泄露的 SSH 密钥对和/或吊销外部/第三方/供应商用户等情况非常有用。

严重性:中等

确保为项目的所有服务和所有用户正确配置了 Cloud Audit Logging

说明:建议将云审核日志记录配置为跟踪所有管理活动和读取、写入对用户数据的访问权限。

Cloud Audit Logging 为每个项目、文件夹和组织维护两个审核日志:管理活动和数据访问。

  1. 管理员活动日志包含 API 调用或其他管理操作的日志条目,这些操作修改资源的配置或元数据。 管理员为所有服务启用活动审核日志,并且无法配置。
  2. 数据访问审核日志记录创建、修改或读取用户提供的数据的 API 调用。 这些在默认情况下是禁用的,应该启用。 数据访问审计日志信息分为三种:
  • 管理员读取:记录读取元数据或配置信息的操作。 管理员活动审核日志记录无法禁用的元数据和配置信息的写入。
  • 数据读取:记录读取用户提供的数据的操作。
  • 数据写入:记录写入用户提供的数据的操作。

建议采用如下方式配置有效的默认审核配置:

  1. 将 logtype 设置为 DATA_READ(记录用户活动跟踪)和 DATA_WRITES(记录对用户数据的更改/篡改)。
  2. 为数据访问审核日志功能支持的所有服务启用审核配置。
  3. 应为所有用户捕获日志,也就是说,任何审核配置部分中都没有免除的用户。 这将确保覆盖审核配置不会与要求相矛盾。

严重性:中等

确保 Cloud KMS 加密密钥不可匿名访问或公开访问

说明:建议云 KMS 上的 IAM 策略“加密密钥”应限制匿名和/或公共访问。 向“allUsers”或“allAuthenticatedUsers”授予权限将允许任何人访问数据集。 如果敏感数据存储在该位置,则此类访问可能不可取。 在这种情况下,请确保不允许匿名和/或公共访问云 KMS“cryptokey”。

严重性:高

确保使用公司登录凭据

说明:使用公司登录凭据而不是个人帐户,例如 Gmail 帐户。 建议使用完全托管的公司 Google 帐户来提高对云平台资源的可见性、审核和控制访问权限。 不应将基于用户组织外部的 Gmail 帐户(如个人帐户)用于业务目的。

严重性:高

确保没有在项目级别向 IAM 用户分配“服务帐户用户”或“服务帐户令牌创建者”角色

说明:建议将“服务帐户用户(iam.serviceAccountUser)”和“服务帐户令牌创建者(iam.serviceAccountTokenCreator)”角色分配给特定服务帐户的用户,而不是将角色分配给项目级别的用户。 服务帐户是属于应用程序或虚拟机 (VM)(而不是单个最终用户)的特殊 Google 帐户。 应用程序/VM 实例使用服务帐户调用服务的 Google API,这样用户就不会直接参与。 除了作为标识之外,服务帐户还是一种附加了 IAM 策略的资源。 这些策略决定了谁可以使用服务帐户。 具有更新 App Engine 和 Compute Engine 实例的 IAM 角色的用户(例如 App Engine 部署者或 Compute Instance 管理员)可以作为用于运行这些实例的服务帐户有效地运行代码,并间接获得对服务帐户有权访问的所有资源的访问权限。 同样,对计算引擎实例的 SSH 访问也可能提供作为该实例/服务帐户执行代码的功能。 根据业务需要,可以为一个项目配置多个用户管理的服务帐户。 为项目的用户授予“iam.serviceAccountUser”或“iam.serviceAserviceAccountTokenCreatorccountUser”角色,可让用户访问项目中的所有服务帐户,包括将来可能创建的服务帐户。 这可能会导致特权提升,方法是使用服务帐户和相应的“计算引擎实例”。为了实现“最低特权”最佳做法,IAM 用户不应在项目级别分配“服务帐户用户”或“服务帐户令牌创建者”角色。 相反,应将这些角色分配给特定服务帐户的用户,从而授予该用户对服务帐户的访问权限。 “服务帐户用户”允许用户将服务帐户绑定到长期运行的作业服务,而“服务帐户令牌创建者”角色允许用户直接模拟(或断言)服务帐户的标识。

严重性:中等

说明:建议在向用户分配 KMS 相关角色时强制实施“职责分离”原则。 内置/预定义的 IAM 角色“Cloud KMS 管理员”允许用户/标识创建、删除和管理服务帐户。 内置/预定义的 IAM 角色“Cloud KMS CryptoKey 加密者/解密者”允许用户/标识(对相关资源具有足够的权限)使用加密密钥对静态数据进行加密和解密。 内置/预定义的 IAM 角色“Cloud KMS CryptoKey 加密者”允许用户/标识(对相关资源具有足够的权限)使用加密密钥对静态数据进行加密。 内置/预定义的 IAM 角色“Cloud KMS CryptoKey 解密者”允许用户/标识(对相关资源具有足够的权限)使用加密密钥对静态数据进行解密。 职责分离是确保一个人没有所有必要权限才能完成恶意操作的概念。 在云 KMS 中,这可能是一项操作,例如使用密钥访问和解密用户通常无权访问的数据。 职责分离是一种通常用于大型组织的业务控制,旨在帮助避免安全或隐私事件和错误。 它被认为是最佳做法。 没有用户应具有云 KMS 管理员以及同时分配的任何“Cloud KMS CryptoKey Encrypter/Decrypter”、“Cloud KMS CryptoKey Encrypter”、“Cloud KMS CryptoKey 解密器”角色。

严重性:高

说明:建议在向用户分配服务帐户相关角色时强制实施“职责分离”原则。 内置/预定义的 IAM 角色“服务帐户管理员”允许用户/标识创建、删除和管理服务帐户。 内置/预定义的 IAM 角色“服务帐户用户”允许用户/标识(对 Compute 和 App Engine 具有足够的权限)将服务帐户分配给应用/计算实例。 职责分离是确保一个人没有所有必要权限才能完成恶意操作的概念。 在 Cloud IAM - 服务帐户中,这可能是一项操作,例如使用服务帐户访问用户通常不应有权访问的资源。 职责分离是一种通常用于大型组织的业务控制,旨在帮助避免安全或隐私事件和错误。 它被认为是最佳做法。 不应为任何用户同时分配“服务帐户管理员”和“服务帐户用户”角色。

严重性:中等

确保服务帐户没有管理员权限

说明:服务帐户是属于应用程序或 VM 而不是单个最终用户的特殊 Google 帐户。 应用程序使用服务帐户调用服务的 Google API,这样用户就不会直接参与。 建议不要对 ServiceAccount 使用管理员访问权限。 服务帐户代表资源(应用程序或 VM)的服务级别安全性,可由分配给它的角色来确定。 使用管理员权限注册 ServiceAccount 可获得对分配的应用程序或 VM 的完全访问权限。 ServiceAccount 访问持有者可以执行关键操作,如删除、更新更改设置等,无需用户干预。 因此,建议服务帐户不具有管理员权限。

严重性:中等

确保为所有日志条目配置了接收器

说明:建议创建一个接收器,用于导出所有日志条目的副本。 这有助于聚合来自多个项目的日志,并将其导出到安全信息和事件管理 (SIEM)。 日志条目保存在 Stackdriver Logging 中。 若要聚合日志,请将它们导出到 SIEM。 若要使其保持更长时间,建议设置日志接收器。 导出过程涉及编写筛选器以选择要导出的日志条目,以及在 Cloud Storage、BigQuery 或 Cloud Pub/Sub 中选择目标。 筛选器和目标保存在称为接收器的对象中。 若要确保所有日志条目都导出到接收器,请确保没有为接收器配置筛选器。 可以在项目、组织、文件夹和计费帐户中创建接收器。

严重性:低

确保存在针对审核配置更改的日志指标筛选器和警报

说明:Google Cloud Platform (GCP) 服务将审核日志条目写入管理员活动和数据访问日志,以帮助回答 GCP 项目中“谁做了什么、在哪里和何时?”的问题。 云审核日志记录的信息包括 API 调用方的标识、API 调用的时间、API 调用方的源 IP 地址、请求参数以及 GCP 服务返回的响应元素。 云审核日志记录提供帐户的 GCP API 调用历史记录,包括通过控制台、SDK、命令行工具和其他 GCP 服务进行的 API 调用。 云审核日志生成的管理员活动和数据访问日志支持安全分析、资源更改跟踪和合规性审核。 针对审核配置更改配置指标筛选器和警报,可确保维护建议的审核配置状态,以便项目中的所有活动在任何时间点都可以审核。

严重性:低

确保存在针对自定义角色更改的日志指标筛选器和警报

说明:建议为更改标识和访问管理(IAM)角色创建、删除和更新活动建立指标筛选器和警报。 Google Cloud IAM 提供了预定义的角色,可提供对特定 Google Cloud Platform 资源的精细访问权限,并防止对其他资源进行不必要的访问。 但是,为了满足组织特定的需求,Cloud IAM 还提供了创建自定义角色的功能。 具有“组织角色管理员”角色或“IAM 角色管理员”角色的项目所有者和管理员可以创建自定义角色。 监视角色创建、删除和更新活动将有助于在早期阶段识别任何特权过大的角色。

严重性:低

确保服务帐户的用户管理的密钥/外部密钥每 90 天或更短时间轮换一次

说明:服务帐户密钥由密钥 ID(Private_key_Id)和私钥组成,用于对用户向 Google 云服务发出的编程请求进行签名,可供该特定服务帐户访问。 建议定期轮换所有服务帐户密钥。 轮换服务帐户密钥将减少与使用已泄露或已终止帐户关联的访问密钥的机会窗口。 应轮换服务帐户密钥,以确保无法使用可能丢失、破解或被盗的旧密钥访问数据。 每个服务帐户都与一个由 Google Cloud Platform (GCP) 管理的密钥对相关联。 它用于 GCP 中的服务到服务身份验证。 Google 每天轮换密钥。 GCP 提供了创建一个或多个用户管理(也称为外部密钥对)密钥对的选项,以便从 GCP 外部使用(例如,用于应用程序默认凭据)。 创建新密钥对时,需要用户下载私钥(Google 不保留)。

使用外部密钥时,用户负责保护私钥的安全和其他管理操作,例如密钥轮换。 可以通过 IAM API、gcloud 命令行工具或 Google Cloud Platform 控制台中的服务帐户页面管理外部密钥。

GCP 可促进每个服务帐户最多 10 个外部服务帐户密钥,以促进密钥轮换。

严重性:中等

应禁用 GKE 网络仪表板

说明:此建议评估键值对“disabled”:false 的 addonsConfig 属性的 kubernetesDashboard 字段。

严重性:高

应在 GKE 群集上禁用旧式授权

说明:此建议评估群集的旧版Abac 属性,以获取键值对“enabled”:true。

严重性:高

不应在组织或文件夹级别分配 Redis IAM 角色

说明:此建议评估组织或文件夹级别的主体分配角色/redis.admin、roles/redis.editor、roles/redis.viewer 的资源元数据中的 IAM 允许策略。

严重性:高

服务帐户在群集中应具有受限的项目访问权限

说明:如果未指定任何服务帐户或使用默认服务帐户,则此建议将节点池的配置属性评估为检查。

严重性:高

用户应具有包含粒度 IAM 角色的最小特权访问权限

说明:此建议评估任何分配的角色/所有者、角色/编写者或角色/读取者的资源元数据中的 IAM 策略。

严重性:高

应删除 GCP 环境中的超级标识(预览版)

说明:超级标识具有一组强大的权限。 超级管理员是有权访问所有权限和所有资源的人工或工作负荷标识。 他们可以创建和修改服务配置设置、添加或删除标识,以及访问甚至删除数据。 这些标识不受监视,如果遭到入侵,则存在权限滥用的重大风险。

严重性:高

应删除 GCP 环境中未使用的标识(预览版)

说明:必须识别未使用的标识,因为它们构成重大安全风险。 这些标识通常涉及不良做法,例如权限过多和管理不当的密钥,使组织能够公开凭据滥用或利用,并增加资源的攻击面。 非活动标识是过去 90 天内未对任何资源执行任何操作的人和非人类实体。 如果未仔细管理,服务帐户密钥可能会成为安全风险。

严重性:中等

GCP 过度预配的标识应仅具有必要的权限(预览版)

说明:过度预配的活动标识是有权访问其未使用的特权的标识。 过度预配的活动标识,尤其是对于具有非常明确定义的操作和职责的非人帐户,在用户、密钥或资源泄露的情况下,可能会增加爆炸半径。最低特权原则规定,资源应仅有权访问其所需的确切资源才能正常运行。 此原则旨在解决泄露标识的风险,使攻击者能够访问各种资源。

严重性:中等

GCP 网络建议

群集主机应配置为仅使用专用内部 IP 地址访问 Google API

说明:此建议评估子网的 privateIpHttpAccess 属性是否设置为 false。

严重性:高

计算实例应使用配置为使用目标 HTTPS 代理的负载均衡器

说明:此建议评估 targetHttpProxy 资源的 selfLink 属性是否与转发规则中的目标属性匹配,以及转发规则是否包含设置为 External 的 loadBalancingScheme 字段。

严重性:中等

应在 GKE 群集上启用控制平面授权网络

说明:此建议评估群集的 masterAuthorizedNetworksConfig 属性作为键值对“enabled”:false。

严重性:高

应在防火墙上设置流出量拒绝规则,以阻止不需要的出站流量

说明:此建议评估防火墙中的 destinationRanges 属性是否设置为 0.0.0.0/0,而被拒绝的属性是否包含键值对“IPProtocol”:“all”。

严重性:低

确保标识感知代理(IAP)后面的实例的防火墙规则仅允许来自 Google Cloud Loadbalancer(GCLB) 运行状况检查和代理地址的流量

说明:对 VM 的访问应受防火墙规则的限制,这些规则仅允许 IAP 流量,方法是确保仅允许 IAP 代理的连接。 为确保负载均衡正常工作,还应允许进行运行状况检查。 IAP 确保通过验证传入请求来控制对 VM 的访问。 但是,如果 VM 仍可从 IAP 以外的 IP 地址进行访问,则仍可能向实例发送未经身份验证的请求。 必须小心,以确保不会阻止加载程序运行状况检查,因为这会阻止负载均衡器正确了解 VM 的运行状况并正确进行负载均衡。

严重性:中等

确保项目不存在旧网络

说明:为了防止使用旧网络,项目不应配置旧网络。 旧网络具有单个网络 IPv4 前缀范围和整个网络的单个网关 IP 地址。 网络在范围内是全局的,跨所有云区域。 无法在旧网络中创建子网,并且无法从旧网络切换到自动或自定义子网网络。 旧网络可能会对高网络流量项目产生影响,并受到单一争用点或故障的影响。

严重性:中等

确保已正确设置 Cloud SQL PostgreSQL 实例的“log_hostname”数据库标志

说明:PostgreSQL 仅记录连接主机的 IP 地址。 除了记录的 IP 地址之外,“log_hostname”标志还控制“主机名”的记录。 性能影响取决于环境配置和主机名解析设置。 此参数只能在“postgresql.conf”文件或服务器命令行中设置。 记录主机名可能会导致服务器性能开销,因为对于记录的每条语句,都需要 DNS 解析才能将 IP 地址转换为主机名。 根据设置,这可能不可忽略。 此外,稍后在查看日志(不包括使用动态主机名的情况)时,可以将记录的 IP 地址解析为其 DNS 名称。 此建议适用于 PostgreSQL 数据库实例。

严重性:低

确保没有 HTTPS 或 SSL 代理负载均衡器允许使用具有弱密码套件的 SSL 策略

说明:安全套接字层 (SSL) 策略确定客户端在连接到负载均衡器时允许使用哪些端口传输层安全性 (TLS) 功能。 为了防止使用不安全的功能,SSL 策略应至少使用具有 MODERN 配置文件的 TLS 1.2;或 (b) RESTRICTED 配置文件,因为它实际上要求客户端使用 TLS 1.2,而不考虑选择的最低 TLS 版本;或 (3) 不支持以下任何功能的自定义配置文件:TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA

负载均衡器用于在多个服务器之间有效地分配流量。 SSL 代理和 HTTPS 负载均衡器都是外部负载均衡器,这意味着它们将流量从 Internet 分配到 GCP 网络。 GCP 客户可以使用客户端可用于建立连接的最低 TLS 版本(1.0、1.1 或 1.2)以及指定允许的密码套件的配置文件(兼容、新式、受限或自定义)来配置负载均衡器 SSL 策略。 为了满足使用过时协议的用户,可将 GCP 负载平衡器配置为允许使用不安全的密码套件。 事实上,GCP 默认 SSL 策略使用最低 TLS 版本 1.0 和兼容配置文件,从而允许最广泛的不安全密码套件。 因此,客户可以轻松配置负载均衡器,甚至不知道它们允许过时的密码套件。

严重性:中等

确保为所有 VPC 网络启用 Cloud DNS 日志记录

说明:云 DNS 日志记录将查询记录从你的 API 内部的名称服务器到 Stackdriver 的查询。 记录的查询可能来自 Compute Engine VM、GKE 容器或 VPC 内预配的其他 GCP 资源。 安全监视和取证不能只依赖于来自VP流日志的 IP 地址,尤其是在考虑云资源的动态 IP 使用率、HTTP 虚拟主机路由和其他技术时,这些技术会掩盖客户端从 IP 地址使用的 DNS 名称。 监视 Cloud DNS 日志可查看 VPC 中客户端请求的 DNS 名称。 可以针对异常域名监视这些日志,根据威胁情报进行评估,注意:若要完全捕获 DNS,防火墙必须阻止出口 UDP/53 (DNS) 和 TCP/443 (通过 HTTPS 的 DNS)阻止客户端使用外部 DNS 名称服务器进行解析。

严重性:高

确保为 Cloud DNS 启用 DNSSEC

说明:云域名系统(DNS)是一种快速、可靠且经济高效的域名系统,为 Internet 上的数百万个域提供支持。 Cloud DNS 中的域名系统安全扩展 (DNSSEC) 使域所有者能够采取简单的步骤来保护其域免受 DNS 劫持和中间人攻击以及其他攻击。 域名系统安全扩展 (DNSSEC) 通过启用 DNS 响应验证来增加 DNS 协议的安全性。 拥有将域名 www.example.com 转换为其关联 IP 地址的可信 DNS 是当今基于 Web 的应用程序的日益重要的构建基块。 攻击者可以劫持此域/IP 查找过程,并通过 DNS 劫持和中间人攻击将用户重定向到恶意站点。 DNSSEC 通过对 DNS 记录进行加密签名来帮助降低此类攻击的风险。 因此,它阻止攻击者发出虚假的 DNS 响应,这些响应可能会将浏览器误导到恶意网站。

严重性:中等

确保限制从 Internet 进行的 RDP 访问

说明:GCP 防火墙规则特定于一个VP网络。 每个规则在满足其条件时可允许或拒绝流量。 其条件允许用户指定流量类型,例如端口和协议,以及流量的源或目标,包括 IP 地址、子网和实例。 防火墙规则在VP网络级别定义,特定于定义它们的网络。 规则本身不能在网络之间共享。 防火墙规则仅支持 IPv4 流量。 按地址指定入口规则的源或出口规则的目标时,可使用 CIDR 表示法中的 IPv4 地址或 IPv4 块。 可以避免使用端口 3389 上的 RDP 从 Internet 传入到使用 RDP 的来自 INTERNET 的流量(0.0.0.0.0/0) 传入流量。 VPC 网络中的 GCP 防火墙规则。 这些规则适用于从实例到网络实例的传出(出口)流量和传入(入口)流量。 即使流量保留在网络中(例如,实例到实例通信),也可控制出口流和入口流。 若要使实例具有传出 Internet 访问权限,网络必须具有指定了目标 IP 的有效 Internet 网关路由或自定义路由。 此路由只是定义 Internet 的路径,以避免使用默认端口 3389 通过 RDP 从 Internet 指定的最常规 (0.0.0.0/0) 目标 IP 范围。 应限制从 Internet 到特定 IP 范围的通用访问。

严重性:高

确保没有将 RSASHA1 用作云 DNS DNSSEC 中的密钥签名密钥

说明:此注册表中的 DNS标准版C 算法编号可用于 CERT RR。 区域签名 (DNSSEC) 和事务安全机制(SIG(0) 和 TSIG)利用这些算法的特定子集。 用于密钥签名的算法应该是建议的算法,并且应该很强大。 此注册表中的域名系统安全扩展插件(DNS标准版C)算法编号可用于证书 RR。 区域签名 (DNSSEC) 和事务安全机制(SIG(0) 和 TSIG)利用这些算法的特定子集。 用于密钥签名的算法应该是建议的算法,并且应该很强大。 为托管区域启用 DNSSEC 或使用 DNSSEC 创建托管区域时,用户可以选择 DNSSEC 签名算法和拒绝存在类型。 更改 DNS标准版C 设置仅在尚未启用 DNS标准版C 的情况下对托管区域有效。 如果需要更改已启用托管区域的设置,请关闭 DNS标准版C,然后使用不同的设置重新启用它。

严重性:中等

确保没有将 RSASHA1 用作云 DNS DNSSEC 中的区域签名密钥

说明:此注册表中的 DNS标准版C 算法编号可用于 CERT RR。 区域签名 (DNSSEC) 和事务安全机制(SIG(0) 和 TSIG)利用这些算法的特定子集。 用于密钥签名的算法应该是建议的算法,并且应该很强大。 此注册表中的 DNS标准版C 算法编号可用于证书 RR。 区域签名 (DNSSEC) 和事务安全机制(SIG(0) 和 TSIG)利用这些算法的特定子集。 用于密钥签名的算法应该是建议的算法,并且应该很强大。 为托管区域启用 DNS标准版C 或使用 DNS标准版C 创建托管区域时,可以选择 DNS标准版C 签名算法和拒绝存在类型。 更改 DNS标准版C 设置仅在尚未启用 DNS标准版C 的情况下对托管区域有效。 如果需要更改已启用托管区域的设置,请关闭 DNS标准版C,然后使用不同的设置重新启用它。

严重性:中等

确保限制从 Internet 进行的 SSH 访问

说明:GCP 防火墙规则特定于一个VP网络。 每个规则在满足其条件时可允许或拒绝流量。 其条件允许用户指定流量类型,例如端口和协议,以及流量的源或目标,包括 IP 地址、子网和实例。 防火墙规则在VP网络级别定义,特定于定义它们的网络。 规则本身不能在网络之间共享。 防火墙规则仅支持 IPv4 流量。 按地址指定入口规则的源或出口规则的目标时,只能使用 CIDR 表示法中的 IPv4 地址或 IPv4 块。 可以避免在端口 22 上使用 SSH 从 Internet 传入到 VPC 或 VM 实例的常规 (0.0.0.0/0) 传入流量。 VPC 网络中的 GCP 防火墙规则适用于从实例到网络实例的传出(出口)流量和传入(入口)流量。 即使流量保留在网络中(例如,实例到实例通信),也可控制出口流和入口流。 若要使实例具有传出 Internet 访问权限,网络必须具有指定了目标 IP 的有效 Internet 网关路由或自定义路由。 此路由仅定义 Internet 的路径,以避免使用默认端口“22”从 Internet 指定的最常规的目标 IP 范围(0.0.0.0/0)。 应限制从 Internet 到特定 IP 范围的通用访问。

严重性:高

确保项目中不存在默认网络

说明:为了防止使用“默认”网络,项目不应具有“默认”网络。 默认网络具有预先配置的网络配置,并自动生成以下不安全的防火墙规则:

  • default-allow-internal:允许网络中实例之间所有协议和端口的入口连接。
  • default-allow-ssh:允许 TCP 端口 22 (SSH) 上的入口连接从任何源连接到网络中的任何实例。
  • default-allow-rdp:允许 TCP 端口 3389 (RDP) 上的入口连接从任何源连接到网络中的任何实例。
  • default-allow-icmp:允许从任何源到网络中任何实例的入口 ICMP 流量。

这些自动创建的防火墙规则不会记录审核,无法配置为启用防火墙规则日志记录。 此外,默认网络是自动模式网络,这意味着其子网使用相同的预定义 IP 地址范围,因此无法将 Cloud VPN 或 VPC 网络对等互连与默认网络一起使用。 组织应根据其安全性和网络要求,创建新网络并删除默认网络。

严重性:中等

确保存在针对 VPC 网络更改的日志指标筛选器和警报

说明:建议为虚拟私有云(VR)网络更改建立指标筛选器和警报。 项目中可以有多个一个VP。 此外,还可以在两个 VPN 之间创建对等连接,使网络流量能够在 VPN 之间路由。 监视对一个VP的更改将有助于确保VP流量流不会受到影响。

严重性:低

确保存在针对 VPC 网络防火墙规则更改的日志指标筛选器和警报

说明:建议为虚拟私有云(VR)网络防火墙规则更改建立指标筛选器和警报。 监视创建或更新防火墙规则事件可深入了解网络访问更改,并可以减少检测可疑活动所需的时间。

严重性:低

确保存在针对 VPC 网络路由更改的日志指标筛选器和警报

说明:建议为虚拟私有云(VPN)网络路由更改建立指标筛选器和警报。 Google Cloud Platform (GCP) 路由定义网络流量从 VM 实例到另一个目标所采用的路径。 另一个目标可以在组织 VPC 网络内部(例如另一个 VM),也可以位于其外部。 每个路由都包含一个目标和下一个跃点。 目标 IP 在目标范围内的流量将被发送到下一个跃点进行传递。 监视路由表的更改有助于确保所有 VPC 流量都流经预期路径。

严重性:低

确保将 Cloud SQL PostgreSQL 实例的“log_connections”数据库标志设置为“on”

说明:启用log_connections设置会导致每次尝试连接到服务器以及成功完成客户端身份验证。 会话启动后,无法更改此参数。 默认情况下,PostgreSQL 不会记录尝试的连接。 启用log_connections设置将为每个尝试的连接创建日志条目,并成功完成客户端身份验证,这对于排查问题以及确定与服务器的任何异常连接尝试非常有用。 此建议适用于 PostgreSQL 数据库实例。

严重性:中等

确保将 Cloud SQL PostgreSQL 实例的“log_disconnections”数据库标志设置为“on”

说明:启用log_disconnections设置会记录每个会话的结束时间,包括会话持续时间。 PostgreSQL 不会默认记录会话详细信息,例如持续时间和会话结束。 启用log_disconnections设置将在每个会话结束时创建日志条目,这对于解决问题和确定一段时间内的任何异常活动非常有用。 log_disconnections 和 log_connections 协同工作,通常,这对将一起启用/禁用。 此建议适用于 PostgreSQL 数据库实例。

严重性:中等

确保为 VPC 网络中的每个子网启用 VPC 流日志

说明:流日志是一项功能,使用户能够捕获有关传入和传出组织 AZURE 子网中网络接口的 IP 流量的信息。 创建流日志后,用户可以在 Stackdriver Logging 中查看和检索其数据。 建议为每个业务关键型的VP子网启用流日志。 VPC 网络和子网提供逻辑隔离和安全的网络分区,可在其中启动 GCP 资源。 为子网启用流日志后,该子网中的 VM 开始报告所有传输控制协议 (TCP) 和用户数据报协议 (UDP) 流。 每个 VM 都会对它看到的 TCP 和 UDP 流(入站和出站)进行采样,无论该流是发往或来自另一个 VM、本地数据中心中的主机、Google 服务还是 Internet 上的主机。 如果两个 GCP VM 正在通信,并且都位于已启用 VPC 流日志的子网中,则这两个 VM 都会报告这些流。 流日志支持以下用例:1. 网络监视。 2. 了解网络使用情况并优化网络流量费用。 3. 网络取证。 4. 实时安全分析流日志提供子网内每个 VM 的网络流量的可见性,并可用于检测安全工作流期间的异常流量或见解。

严重性:低

应启用防火墙规则日志记录

说明:此建议评估防火墙元数据中的 logConfig 属性,以查看其是否为空或包含键值对“enable”:false。

严重性:中等

不应将防火墙配置为对公共开放

说明:此建议评估以下两种配置之一的 sourceRanges 和允许的属性:

sourceRanges 属性包含 0.0.0.0/0,允许的属性包含包含任何协议或协议:端口的规则的组合,但以下规则除外:icmp tcp:22 tcp:443 tcp:3389 udp:3389 sctp:22

sourceRanges 属性包含包括任何非专用 IP 地址的 IP 范围的组合,允许的属性包含允许所有 tcp 端口或所有 udp 端口的规则的组合。

严重性:高

防火墙不应配置为具有允许通用访问权限的开放 CASSANDRA 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:7000-7001、7199、8888、9042、9160、61620-61621。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 CISCOSECURE_WEBSM 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:9090。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 DIRECTORY_SERVICES 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:445 和 UDP:445。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 DNS 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:53 和 UDP:53。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 ELASTICSEARCH 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:9200、9300。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 FTP 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:21。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 HTTP 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:80。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 LDAP 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:389、636 和 UDP:389。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 MEMCACHED 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:11211、11214-11215 和 UDP:11211、11214-11215。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 MONGODB 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:27017-27019。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 MYSQL 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:3306。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 NETBIOS 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:137-139 和 UDP:137-139。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 ORACLEDB 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:1521、2483-2484 和 UDP:2483-2484。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 POP3 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:110。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 PostgreSQL 端口

说明:此建议评估以下协议和端口的防火墙元数据中允许的属性:TCP:5432 和 UDP:5432。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 REDIS 端口

说明:此建议评估防火墙元数据中允许的属性是否包含以下协议和端口:TCP:6379。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 SMTP 端口

说明:此建议评估防火墙元数据中允许的属性是否包含以下协议和端口:TCP:25。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 SSH 端口

说明:此建议评估防火墙元数据中允许的属性是否包含以下协议和端口:TCP:22 和 SCTP:22。

严重性:低

防火墙不应配置为具有允许通用访问权限的开放 TELNET 端口

说明:此建议评估防火墙元数据中允许的属性是否包含以下协议和端口:TCP:23。

严重性:低

GKE 群集应已启用别名 IP 范围

说明:此建议评估群集中 ipAllocationPolicy 的 useIPAliases 字段是否设置为 false。

严重性:低

GKE 群集应已启用专用群集

说明:此建议评估 privateClusterConfig 属性的 enablePrivateNodes 字段是否设置为 false。

严重性:高

应在 GKE 群集上启用网络策略

说明:此建议评估键值对“disabled”的 addonsConfig 属性的 networkPolicy 字段:true。

严重性:中等