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

标识和访问安全建议

本文列出了 Microsoft Defender for Cloud 中可能会显示的所有标识和访问安全建议。

环境中显示的建议基于要保护的资源和自定义配置。

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

提示

如果建议的描述中显示“无相关策略”,通常是因为该建议依赖于另一个建议

例如,建议“应修正 Endpoint Protection 运行状况失败”依赖于建议“应安装 Endpoint Protection 解决方案”,后者检查 Endpoint Protection 解决方案是否已安装。 基础建议确实具有一个策略。 将策略限制为仅用于基本建议可简化策略管理。

Azure 标识和访问建议

最多只能为订阅指定 3 个所有者

说明:为了减少被入侵的所有者帐户泄露的可能性,我们建议将所有者帐户数限制为最多 3 个(相关策略:最多应为订阅指定 3 个所有者)。

严重性:高

对 Azure 资源拥有所有者权限的帐户应启用 MFA

说明:如果只使用密码来对用户进行身份验证,则意味着打开了一条攻击途径。 用户经常对多个服务使用弱密码。 通过启用多重身份验证 (MFA),可以为帐户提供更高的安全性,同时仍然允许用户通过单一登录 (SSO) 在几乎所有应用程序进行身份验证。 多重身份验证是一种在登录期间提示用户提供另一种形式的标识的过程。 例如,可能会将代码发送到其手机,或者可能要求他们进行指纹扫描。 建议为对 Azure 资源具有所有者权限的所有帐户启用 MFA,以防止违规和攻击。 此处提供了更多详细信息和常见问题解答:管理订阅上的多重身份验证 (MFA) 实施(无相关策略)。

严重性:高

对 Azure 资源拥有读取权限的帐户应启用 MFA

说明:如果只使用密码来对用户进行身份验证,则意味着打开了一条攻击途径。 用户经常对多个服务使用弱密码。 通过启用多重身份验证 (MFA),可以为帐户提供更高的安全性,同时仍然允许用户通过单一登录 (SSO) 在几乎所有应用程序进行身份验证。 多重身份验证是一个在登录期间提示用户提供另一种形式的标识的过程。 例如,可能会将代码发送到其手机,或者可能要求他们进行指纹扫描。 建议为对 Azure 资源具有读取权限的所有帐户启用 MFA,以防止违规和攻击。 此处提供了更多详细信息和常见问题。 (无相关策略)

严重性:高

对 Azure 资源拥有写入权限的帐户应启用 MFA

说明:如果只使用密码来对用户进行身份验证,则意味着打开了一条攻击途径。 用户经常对多个服务使用弱密码。 通过启用多重身份验证 (MFA),可以为帐户提供更高的安全性,同时仍然允许用户通过单一登录 (SSO) 在几乎所有应用程序进行身份验证。 多重身份验证是一个在登录期间提示用户提供另一种形式的标识的过程。 例如,可能会将代码发送到其手机,或者可能要求他们进行指纹扫描。 建议为对 Azure 资源具有写入权限的所有帐户启用 MFA,以防止违规和攻击。 此处提供了更多详细信息和常见问题解答:管理订阅上的多重身份验证 (MFA) 实施(无相关策略)。

严重性:高

Azure Cosmos DB 帐户应使用 Azure Active Directory 作为唯一的身份验证方法

说明:向 Azure 服务进行身份验证的最佳方式是使用基于角色的访问控制 (RBAC)。 通过 RBAC,可以保持最低权限原则,并支持在遭到入侵时能够将撤销权限作为有效响应方法。 可以将 Azure Cosmos DB 帐户配置为强制实施 RBAC 作为唯一的身份验证方法。 配置强制实施时,会拒绝所有其他访问方法(主/辅助密钥和访问令牌)。 (无相关策略)

严重性:中等

应删除对 Azure 资源拥有所有者权限的已封锁帐户

说明:应从 Azure 资源中删除被阻止登录到 Active Directory 的用户帐户。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (无相关策略)

严重性:高

应删除对 Azure 资源拥有读取和写入权限的已封锁帐户

说明:应从 Azure 资源中删除被阻止登录到 Active Directory 的用户帐户。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (无相关策略)

严重性:高

应从订阅中删除已弃用的帐户

说明:应从订阅中删除已被阻止登录的用户帐户。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (相关策略:应从订阅中删除已弃用的帐户)。

严重性:高

应从订阅中删除拥有所有者权限的已弃用帐户

说明:应从订阅中删除已被阻止登录的用户帐户。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (相关策略:应从订阅中删除具有所有者权限的已弃用帐户)。

严重性:高

应启用 Key Vault 的诊断日志

说明:启用日志并将其保留长达一年的时间。 这样便可以在发生安全事件或网络遭泄露时,重新创建活动线索用于调查目的。 (相关策略:应启用密钥保管库中的诊断日志)。

严重性:低

应从订阅中删除拥有所有者权限的外部帐户

说明:应从订阅中删除拥有所有者权限的具有不同域名的帐户(外部帐户)。 这可防止不受监视的访问。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (相关策略:应从订阅中删除具有所有者权限的外部帐户)。

严重性:高

应从订阅中删除拥有读取权限的外部帐户

说明:应从订阅中删除拥有读取权限的具有不同域名的帐户(外部账户)。 这可防止不受监视的访问。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (相关策略:应从订阅中删除具有读取权限的外部帐户)。

严重性:高

应从订阅中删除拥有写入权限的外部帐户

说明:应从订阅中删除拥有写入权限的具有不同域名的帐户(外部账户)。 这可防止不受监视的访问。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (相关策略:应从订阅中删除具有写入权限的外部帐户)。

严重性:高

应在 Key Vault 上启用防火墙

说明:密钥保管库防火墙可防止未经授权的流量到达密钥保管库,并为机密提供额外的保护。 启用防火墙可确保只有来自允许的网络的流量可以访问密钥保管库。 (相关策略:应在密钥保管库上启用防火墙)。

严重性:中等

应删除对 Azure 资源拥有所有者权限的来宾帐户

说明:应从 Azure 资源中删除已在 Azure Active Directory 租户(不同域名)外部预配的、具有所有者权限的帐户。 来宾帐户不与企业租户标识使用相同的标准进行管理。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (无相关策略)

严重性:高

应删除对 Azure 资源拥有读取权限的来宾帐户

说明:应从 Azure 资源中删除已在 Azure Active Directory 租户(不同域名)外部预配的、具有读取权限的帐户。 来宾帐户不与企业租户标识使用相同的标准进行管理。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (无相关策略)

严重性:高

应删除对 Azure 资源拥有写入权限的来宾帐户

说明:应从 Azure 资源中删除已在 Azure Active Directory 租户(不同域名)外部预配的、具有写入权限的帐户。 来宾帐户不与企业租户标识使用相同的标准进行管理。 这些帐户可能会成为攻击者的目标,攻击者会设法在不被发现的情况下访问你的数据。 (无相关策略)

严重性:高

Key Vault 密钥应具有到期日期

说明:应为加密密钥定义非永久性到期日期。 密钥永久有效会导致潜在攻击者有更多时间来破解密钥。 建议的安全做法是为加密密钥设置到期日期。 (相关策略:密钥保管库密钥应具有过期日期)。

严重性:高

Key Vault 机密应具有到期日期

说明:应为机密定义非永久性到期日期。 机密永久有效会导致潜在攻击者有更多时间来破解密钥。 建议的安全做法是为机密设置到期日期。 (相关策略:密钥保管库机密应具有到期日期)。

严重性:高

密钥保管库应启用清除保护

说明:恶意删除密钥保管库可能会导致永久数据丢失。 你组织中的恶意内部人员可能会删除和清除密钥保管库。 清除保护通过强制实施软删除密钥保管库的强制保留期来保护你免受内部攻击。 你的组织内的任何人都无法在软删除保留期内清除你的密钥保管库。 (相关策略:密钥保管库应启用清除保护)。

严重性:中等

密钥保管库应启用软删除

说明:在未启用软删除的情况下删除密钥保管库,将永久删除密钥保管库中存储的所有机密、密钥和证书。 意外删除密钥保管库可能会导致永久丢失数据。 软删除允许在可配置的保持期内恢复意外删除的密钥保管库。 (相关策略:密钥保管库应启用软删除)。

严重性:高

应在对订阅拥有所有者权限的帐户上启用 MFA

说明:为了防止帐户或资源泄露,应为所有拥有所有者权限的订阅帐户启用多重身份验证 (MFA)。 (相关策略:应在对订阅具有所有者权限的帐户上启用 MFA)。

严重性:高

应在对订阅拥有读取权限的帐户上启用 MFA

说明:为了防止帐户或资源泄露,应为所有拥有读取权限的订阅帐户启用多重身份验证 (MFA)。 (相关策略:应在对订阅具有读取权限的帐户上启用 MFA)。

严重性:高

应在对订阅拥有写入权限的帐户上启用 MFA

说明:为了防止帐户或资源泄露,应为所有拥有写入权限的订阅帐户启用多重身份验证 (MFA)。 (相关策略:应在对订阅具有写入权限的帐户上启用 MFA)。

严重性:高

应启用适用于 Key Vault 的 Microsoft Defender

说明:Microsoft Defender for Cloud 包含 Microsoft Defender for Key Vault,提供额外的安全智能层。 Microsoft Defender for Key Vault 会检测访问或恶意利用 Key Vault 帐户的异常和可能有害的企图。

此计划的保护按 Defender 计划页上所示收费。 如果在此订阅中没有任何密钥保管库,则无需付费。 如果以后在此订阅上创建密钥保管库,则这些帐户将自动受到保护,并开始计费。 详细了解各区域的定价详细信息。 有关详细信息,请参阅适用于 Key Vault 的 Microsoft Defender 简介。 (相关策略:应启用 Azure Defender for Key Vault)。

严重性:高

应撤销 Azure 订阅中非活动标识的权限

说明:Microsoft Defender for Cloud 发现了一个在过去 45 天内未对 Azure 订阅中的任何资源执行任何操作的标识。 建议撤销非活动标识的权限,以减少云环境的攻击面。

严重性:中等

应为 Key Vault 配置专用终结点

说明:专用链接提供了一种将 Key Vault 连接到 Azure 资源,而无需通过公共 Internet 发送流量的方法。 专用链接提供深度防御,可防范数据外泄。 (相关策略:应为密钥保管库配置专用终结点)。

严重性:中等

应禁止存储帐户公共访问

说明:对 Azure 存储中的容器和 blob 进行匿名公共读取访问虽然是共享数据的一种简便方法,但可能会带来安全风险。 为了防止不希望的匿名访问导致数据泄露,Microsoft 建议禁止对存储帐户的公共访问,除非你的方案需要。 (相关策略:应禁止存储帐户公共访问)。

严重性:中等

应向订阅分配多个所有者

说明:指定多个订阅所有者,以实现管理员访问权限冗余。 (相关策略:应为订阅分配多个所有者)。

严重性:高

存储在 Azure Key Vault 中的证书的有效期不得超过 12 个月

说明:请确保证书的有效期不超过 12 个月。 (相关策略:证书应具有指定的最大有效期)。

严重性:中等

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

说明:过度预配的标识或过度权限标识,不使用其授予的许多权限。 定期正确调整这些标识的权限大小,以减少权限滥用的风险,无论是意外的还是恶意的。 此操作可降低安全事件期间的潜在爆炸半径。

严重性:中等

特权角色不应在订阅和资源组级别拥有永久访问权限

说明:Microsoft Defender for Cloud 发现了一个在过去 45 天内未对 Azure 订阅中的任何资源执行任何操作的标识。 建议撤销非活动标识的权限,以减少云环境的攻击面。

严重性:高

不应在订阅和资源组级别为服务主体分配管理角色

说明:在资源组或订阅级别使用特权角色分配的 Defender for Cloud 标识的服务主体。 特权管理员角色是可以对资源执行敏感操作的角色,例如所有者、参与者或用户访问管理员。 服务主体在高效安全地管理 Azure 资源方面发挥了关键作用,无需人工干预。 必须遵循 最低特权原则,仅授予给定服务主体执行其职责所需的最低访问权限级别。 管理员和特权访问是黑客的主要目标。 有关使用特权管理员角色分配时的最佳做法,请参阅 Azure RBAC 最佳做法Azure RBAC 的最佳做法。 有关 Azure RBAC 中可用角色的列表,请参阅 Azure 的内置角色

严重性:高

AWS 标识和访问建议

Amazon Elasticsearch Service 域应在 VPC 中

说明:无法包含具有公共终结点的域。 这不会评估用于确定公共可访问性的大众网络子网路由配置。

严重性:高

应限制向存储桶策略中其他 AWS 帐户授予 Amazon S3 权限

说明:实现最低特权访问是降低安全风险和错误或恶意意图影响的基础。 如果 S3 存储桶策略允许来自外部帐户的访问,则可能会导致内部威胁或攻击者引起的数据外泄。 “blacklistedactionpatterns”参数允许成功评估 S3 存储桶的规则。 该参数授予对未包含在“blacklistedactionpatterns”列表中的操作模式的外部帐户的访问权限。

严重性:高

请避免使用“根”帐户

说明:“根”帐户对 AWS 帐户中的所有资源具有无限制的访问权限。 强烈建议避免使用此帐户。 “根”帐户是特权最高的 AWS 帐户。 尽量减少使用此帐户并采用最低权限原则进行访问管理,可降低意外更改和意外泄露高特权凭据的风险。

严重性:高

AWS KMS 密钥不应被意外删除

说明:此控件检查 KMS 密钥是否计划删除。 如果计划删除 KMS 密钥,则此控件失败。 删除 KMS 密钥后无法恢复。 如果删除 KMS 密钥,KMS 密钥下的加密数据也永久不可恢复。 如果在计划删除的 KMS 密钥下加密了有意义的数据,请考虑解密数据或在新的 KMS 密钥下重新加密数据,除非有意执行加密擦除。 如果删除 KMS 密钥,则执行一个强制等待期,以便在计划有误的情况下留出时间来撤消删除。 默认等待期为 30 天,但在计划删除 KMS 密钥时,可以缩短为 7 天。 在等待期间,可以取消计划的删除,并且不会删除 KMS 密钥。 有关删除 KMS 密钥的详细信息,请参阅 AWS 密钥管理服务开发人员指南中的“删除 KMS 密钥”。

严重性:高

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

说明:过度预配的活动标识是有权访问其未使用的特权的标识。 过度预配的活动标识,尤其是对于已定义操作和职责的非人工帐户,在用户、密钥或资源泄露时可能会增加爆炸半径。 删除不需要的权限并建立评审过程以实现最低特权权限。

严重性:中等

应启用 AWS WAF 经典全局 Web ACL 日志记录

说明:此控件检查是否为 AWS WAF 全局 Web ACL 启用日志记录。 如果未为 Web ACL 启用日志记录,则此控件将失败。 日志记录是在全局范围内维护 AWS WAF 的可靠性、可用性和性能的重要组成部分。 这是许多组织中的业务和合规性要求,可用于对应用程序行为进行故障排除。 它还提供有关附加到 AWS WAF 的 Web ACL 所分析流量的详细信息。

严重性:中等

CloudFront 分发应配置默认根对象

说明:此控件检查 Amazon CloudFront 分发是否配置为返回默认根对象的特定对象。 如果 CloudFront 分发未配置默认根对象,则控件将失败。 用户有时可能会请求分发根 URL,而不是分发中的对象。 发生这种情况时,指定默认根对象可帮助避免公开 Web 分发的内容。

严重性:高

CloudFront 分发应启用源访问标识

说明:此控件检查是否配置了 Amazon S3 Origin 类型的 Amazon CloudFront 分发版(OAI)。 如果未配置 OAI,则控件将失败。 CloudFront OAI 会阻止用户直接访问 S3 存储桶内容。 当用户直接访问 S3 存储桶时,他们实际上会绕过 CloudFront 分发以及应用于基础 S3 存储桶内容的所有权限。

严重性:中等

应启用 CloudTrail 日志文件验证

说明:为了确保对 CloudTrail 日志进行额外的完整性检查,建议在所有 CloudTrails 上启用文件验证。

严重性:低

应启用 CloudTrail

说明:AWS CloudTrail 是一项 Web 服务,用于记录帐户的 AWS API 调用并将日志文件传送给你。 并非所有服务都默认启用所有 API 和事件的日志记录。 应实现 CloudTrail 外的其他审核线索,并查看 CloudTrail 支持的服务和集成中每个服务的文档。

严重性:高

CloudTrail 线索应与 Amazon CloudWatch 日志集成

说明:除了捕获指定 S3 存储桶中的 CloudTrail 日志以供长期分析外,还可以通过配置 CloudTrail 将日志发送到 CloudWatch 日志来执行实时分析。 对于在帐户的所有区域中启用的跟踪,CloudTrail 将日志文件从所有这些区域发送到 CloudWatch Logs 日志组。 建议将 CloudTrail 日志发送到 CloudWatch Logs,以确保捕获、监视 AWS 帐户活动,并适当发出警报。 将 CloudTrail 日志发送到 CloudWatch Logs 有助于基于用户、API、资源和 IP 地址进行实时和历史活动日志记录,并有机会为异常或敏感帐户活动建立警报和通知。

严重性:低

应启用数据库日志记录

说明:此控件检查 Amazon RDS 的以下日志是否已启用并发送到 CloudWatch 日志:

  • Oracle:(警报、审核、跟踪、侦听器)
  • PostgreSQL:(Postgresql,升级)
  • MySQL:(审核、错误、常规、SlowQuery)
  • MariaDB:(审核、错误、常规、慢查询)
  • SQL Server:(错误,代理)
  • 奥罗拉:(审核、错误、常规、慢查询)
  • Aurora-MySQL:(审核、错误、常规、SlowQuery)
  • 奥罗拉-PostgreSQL:(Postgresql,升级)。 RDS 数据库应启用相关日志。 数据库日志记录提供针对 RDS 的请求的详细记录。 数据库日志可帮助进行安全和访问审核,有助于诊断可用性问题。

严重性:中等

禁用 Amazon Sage Maker 笔记本实例的直接 Internet 访问

说明:应为 Sage Maker 笔记本实例禁用直接 Internet 访问。 这将检查是否对笔记本实例禁用了“DirectInternetAccess”字段。 实例应配置 VPC,默认设置应为“禁用 - 通过 VPC 访问 Internet”。 若要启用 Internet 访问从笔记本训练或托管模型,请确保 VPC 具有 NAT 网关,并且安全组允许出站连接。 确保对 Sage Maker 配置的访问权限仅限于授权用户,并限制用户的 IAM 权限以修改 Sage Maker 设置和资源。

严重性:高

在初始用户设置期间,不要为具有控制台密码的所有 IAM 用户设置访问密钥

说明:AWS 控制台默认选中用于创建要启用的访问密钥的复选框。 这导致不必要地生成许多访问密钥。 除了不必要的凭据,它还在审核和轮换这些密钥时生成不必要的管理工作。 要求用户在创建配置文件后采取其他步骤将更清楚地表明访问密钥是其工作所必需的[a],并在访问密钥在组织中某个位置使用的帐户上建立访问密钥后[b]。

严重性:中等

请确保创建了支持角色,以便通过 AWS 支持来管理事件

说明:AWS 提供了一个支持中心,可用于事件通知和响应,以及技术支持和客户服务。 创建 IAM 角色,以允许授权用户通过 AWS 支持管理事件。 为访问控制实现最低特权时,IAM 角色需要适当的 IAM 策略才能允许支持中心访问,以便通过 AWS 支持管理事件。

严重性:低

请确保访问密钥每 90 天或更短时间轮换一次

说明:访问密钥由访问密钥 ID 和机密访问密钥组成,用于对 AWS 中发出的编程请求进行签名。 AWS 用户需要自己的访问密钥,以便从 AWS Command Line Interface (AWS CLI)、适用于 Windows PowerShell 的工具、AWS SDK,或者使用单个 AWS 服务的 API 直接 HTTP 调用,对 AWS 进行编程化调用。 建议定期轮换所有访问密钥。 轮换访问密钥可减少与要使用的已泄露或终止帐户关联的访问密钥的机会窗口。 应轮换访问密钥,以确保无法使用旧密钥访问数据,该密钥可能已丢失、破解或被盗。

严重性:中等

请确保在所有区域中启用了 AWS Config

说明:AWS 配置是一项 Web 服务,用于对帐户中支持的 AWS 资源执行配置管理,并将日志文件传送给你。 记录的信息包括配置项目(AWS 资源)、配置项目(AWS 资源)之间的关系、资源之间的所有配置更改。 建议在所有区域中启用 AWS 配置。

AWS Config 捕获的 AWS 配置项目历史记录支持安全分析、资源更改跟踪和合规性审核。

严重性:中等

请确保在所有区域中启用了 CloudTrail

说明:AWS CloudTrail 是一项 Web 服务,用于记录帐户的 AWS API 调用并将日志文件传送给你。 记录的信息包括 API 调用方的标识、API 调用的时间、API 调用方的源 IP 地址、请求参数以及 AWS 服务返回的响应元素。 CloudTrail 提供帐户的 AWS API 调用历史记录,包括通过管理控制台、SDK、命令行工具和更高级别的 AWS 服务(如 CloudFormation)进行的 API 调用。 CloudTrail 生成的 AWS API 调用历史记录可实现安全分析、资源更改跟踪和合规性审核。 此外:

  • 检查是否存在多区域跟踪可确保检测到其他未使用区域中发生的意外活动。
  • 检查是否存在多区域跟踪可确保默认为跟踪启用“全局服务日志记录”,以捕获 AWS 全局服务上生成的事件的记录。
  • 对于多区域跟踪,检查是否为所有类型的读取/写入配置管理事件可确保记录在 AWS 帐户中的所有资源上执行的管理操作。

严重性:高

请确保禁用了 90 天或更长时间未使用的凭据

说明:AWS IAM 用户可以使用不同类型的凭据(例如密码或访问密钥)访问 AWS 资源。 建议删除或停用在 90 或更高版本中未使用的所有凭据。 禁用或删除不必要的凭据可以减少与要使用的已泄露或已放弃帐户关联的凭据的机会窗口。

严重性:中等

请确保 IAM 密码策略让密码在 90 天或更短时间内到期

说明:IAM 密码策略可能需要在给定天数后轮换或过期密码。 建议密码策略在 90 天或更短后过期密码。 缩短密码生存期可提高帐户针对暴力破解登录尝试的复原能力。 此外,在以下情况中,定期更改密码也有所帮助:

  • 有时,密码可能会被盗或泄露,而无需了解。 这会通过系统泄露、软件漏洞或内部威胁发生。
  • 某些企业和政府 Web 筛选器或代理服务器能够拦截和记录流量,即使流量已加密也是如此。
  • 许多人对许多系统(如工作、电子邮件和个人)使用相同的密码。
  • 遭到入侵的最终用户工作站可能有击键记录器。

严重性:低

请确保 IAM 密码策略防止密码重用

说明:IAM 密码策略可以阻止同一用户重复使用给定的密码。 建议密码策略阻止重复使用密码。 防止密码重用可提高帐户对暴力破解登录尝试的复原能力。

严重性:低

请确保 IAM 密码策略要求至少必须有一个小写字母

说明:密码策略部分用于强制实施密码复杂性要求。 IAM 密码策略可用于确保密码由不同的字符集组成。 建议密码策略至少需要一个小写字母。 设置密码复杂性策略可提高帐户针对暴力登录尝试的复原能力。

严重性:中等

请确保 IAM 密码策略要求至少必须有一个数字

说明:密码策略部分用于强制实施密码复杂性要求。 IAM 密码策略可用于确保密码由不同的字符集组成。 建议密码策略至少需要一个数字。 设置密码复杂性策略可提高帐户针对暴力登录尝试的复原能力。

严重性:中等

请确保 IAM 密码策略要求至少必须有一个符号

说明:密码策略部分用于强制实施密码复杂性要求。 IAM 密码策略可用于确保密码由不同的字符集组成。 建议密码策略至少需要一个符号。 设置密码复杂性策略可提高帐户针对暴力登录尝试的复原能力。

严重性:中等

请确保 IAM 密码策略要求至少必须有一个大写字母

说明:密码策略部分用于强制实施密码复杂性要求。 IAM 密码策略可用于确保密码由不同的字符集组成。 建议密码策略至少需要一个大写字母。 设置密码复杂性策略可提高帐户针对暴力登录尝试的复原能力。

严重性:中等

请确保 IAM 密码策略要求最短长度不少于 14 个字符

说明:密码策略部分用于强制实施密码复杂性要求。 IAM 密码策略可用于确保密码长度至少为给定长度。 建议密码策略要求最短密码长度为“14”。 设置密码复杂性策略可提高帐户针对暴力登录尝试的复原能力。

严重性:中等

确保为具有控制台密码的所有 IAM 用户启用多重身份验证(MFA)

说明:多重身份验证(MFA)在用户名和密码的基础上增加了额外的保护层。 启用 MFA 后,当用户登录到 AWS 网站时,系统会提示他们输入用户名和密码,以及 AWS MFA 设备中的身份验证代码。 建议为所有具有控制台密码的帐户启用 MFA。 启用 MFA 可为控制台访问提供更高的安全性,因为它要求验证主体拥有发出时间敏感型密钥的设备且了解凭据。

严重性:中等

应启用 GuardDuty

说明:若要提供针对入侵的其他保护,应在 AWS 帐户和区域中启用 GuardDuty。

GuardDuty 可能不是每个环境的完整解决方案。

严重性:中等

应为根用户启用硬件 MFA

说明:根帐户是帐户中特权最高的用户。 MFA 在用户名和密码之上提供了额外的保护层。 启用 MFA 后,当用户登录 AWS 网站时,系统会提示他们输入其用户名和密码,以及 AWS MFA 设备中的身份验证代码。 对于级别 2,建议使用硬件 MFA 保护根帐户。 硬件 MFA 的攻击面比虚拟 MFA 小。 例如,硬件 MFA 不会遭受虚拟 MFA 所在的移动智能手机所带来的攻击面。 对许多帐户使用硬件进行 MFA 时,可能会创建后勤设备管理问题。 如果发生这种情况,请考虑有选择地将此级别 2 建议实施到最高安全帐户。 然后,可以将级别 1 建议应用于剩余帐户。

严重性:低

应为 RDS 群集配置 IAM 身份验证

说明:此控制检查 RDS DB 群集是否已启用 IAM 数据库身份验证。 IAM 数据库身份验证允许对数据库实例进行无密码身份验证。 身份验证使用身份验证令牌。 与数据库之间的流量使用 SSL 进行加密。 有关详细信息,请参阅 Amazon Aurora 用户指南中的 IAM 数据库身份验证。

严重性:中等

应为 RDS 实例配置 IAM 身份验证

说明:此控制检查 RDS DB 实例是否已启用 IAM 数据库身份验证。 IAM 数据库身份验证允许使用身份验证令牌(而非密码)对数据库实例进行身份验证。 与数据库之间的流量使用 SSL 进行加密。 有关详细信息,请参阅 Amazon Aurora 用户指南中的 IAM 数据库身份验证。

严重性:中等

IAM 客户管理的策略不应允许对所有 KMS 密钥执行解密操作

说明:检查 IAM 客户托管策略的默认版本是否允许主体对所有资源使用 AWS KMS 解密操作。 此控件使用 自动推理引擎 Zelkova 来验证并警告你有关可能授予跨 AWS 帐户对机密的广泛访问权限的策略。 如果所有 KMS 密钥都允许“kms: Decrypt”或“kms: ReEncryptFrom”操作,则此控件将失败。 该控件评估附加和未附加的客户托管策略。 它不会检查内联策略或 AWS 托管策略。 使用 AWS KMS,可以控制谁可以使用你的 KMS 密钥并获取对加密数据的访问权限。 IAM 策略定义标识(用户、组或角色)可对哪些资源执行哪些操作。 遵循安全最佳实践,AWS 建议允许最小特权。 换句话说,你应该只授予标识“kms:Decrypt”或“kms:ReEncryptFrom”权限,并且仅对允许执行任务所需的密钥授予权限。 否则,用户可能会使用不适合数据的密钥。 不是为所有密钥授予权限,而是确定用户访问加密数据所需的最小密钥集。 然后设计允许用户仅使用这些密钥的策略。 例如,不允许对所有 KMS 密钥具有“kms: Decrypt”权限。 相反,仅对帐户的特定区域中的密钥允许“kms: Decrypt”。 采用最小特权原则,可降低意外泄漏数据的风险。

严重性:中等

创建的 IAM 客户托管策略不应允许对服务执行通配符操作

说明:此控件检查创建的基于 IAM 标识的策略是否具有 Allow 语句,这些语句使用 * 通配符授予对任何服务的所有操作的权限。 如果任何策略语句包含“Effect”:“Allow”和“Action”:“Service:*”,则控件将失败。 例如,策略中的以下语句导致找不到失败。

'Statement': [
{
  'Sid': 'EC2-Wildcard',
  'Effect': 'Allow',
  'Action': 'ec2:*',
  'Resource': '*'
}

如果将“Effect”:“Allow”与“NotAction”一起使用,则控件也会失败:“service:”。在这种情况下,NotAction 元素提供对 AWS 服务中的所有操作的访问权限,但 NotAction 中指定的操作除外。此控制仅适用于客户管理的 IAM 策略。它不适用于 AWS 管理的 IAM 策略。向 AWS 服务分配权限时,必须限定 IAM 策略中允许的 IAM 操作的范围。应将 IAM 操作限制为仅需要这些操作。这有助于预配最低特权权限。如果策略附加到可能不需要权限的 IAM 主体,过度宽松的策略可能会导致特权升级。在某些情况下,你可能希望允许具有类似前缀的 IAM 操作,例如 DescribeFlowLogs 和 DescribeAvailabilityZones。在这些授权情况下,可以将后缀通配符添加到通用前缀。例如,ec2:Describe

如果使用带有后缀通配符的前缀 IAM 操作,则此控件通过。 例如,策略中的以下语句导致传递了一个查找。

 'Statement': [
{
  'Sid': 'EC2-Wildcard',
  'Effect': 'Allow',
  'Action': 'ec2:Describe*',
  'Resource': '*'
}

以这种方式对相关的 IAM 操作进行分组时,还可以避免超出 IAM 策略大小限制。

严重性:低

IAM 策略应仅附加到组或角色

说明:默认情况下,IAM 用户、组和角色无权访问 AWS 资源。 IAM 策略是向用户、组或角色授予权限的方式。 建议将 IAM 策略直接应用于组和角色,但不适用于用户。 随着用户数量的增加,在组或角色级别分配权限可降低访问管理的复杂性。 降低访问管理复杂性也可能减少主体无意中接收或保留过多特权的机会。

严重性:低

不应创建允许完全 ":" 管理权限的 IAM 策略

说明:IAM 策略是向用户、组或角色授予特权的方式。 建议并考虑使用标准安全建议来授予最低特权,即仅授予执行任务所需的权限。 确定用户需要执行的操作,然后为他们创建策略,以使用户只执行这些任务,而不是允许完全管理权限。 从最低的权限集开始,并根据需要授予额外的权限,这样做更安全;而不是以太宽松的权限开头,然后尝试收紧这些权限。 提供完全管理权限(而不是限制在用户所需的最低权限集上)的确会使资源暴露于潜在不需要的操作中。 应删除具有 "Effect": "Allow" 与 Action": ""(而非 "Resource": "")的语句的 IAM 策略。

严重性:高

IAM 主体不应具有允许对所有 KMS 密钥执行解密操作的 IAM 内联策略

说明:检查嵌入在 IAM 标识(角色、用户或组)中的内联策略是否允许对所有 KMS 密钥执行 AWS KMS 解密操作。 此控件使用 自动推理引擎 Zelkova 来验证并警告你有关可能授予跨 AWS 帐户对机密的广泛访问权限的策略。 如果 kms:Decrypt 内联策略中的所有 KMS 密钥允许或 kms:ReEncryptFrom 操作,则此控件将失败。 使用 AWS KMS,可以控制谁可以使用你的 KMS 密钥并获取对加密数据的访问权限。 IAM 策略定义标识(用户、组或角色)可对哪些资源执行哪些操作。 遵循安全最佳实践,AWS 建议允许最小特权。 换句话说,你应该只授予标识他们需要的权限,并且仅对允许执行任务所需的密钥授予权限。 否则,用户可能会使用不适合数据的密钥。 不是为所有密钥授予权限,而是确定用户访问加密数据所需的最小密钥集。 然后设计允许用户仅使用这些密钥的策略。 例如,不允许 kms:Decrypt 对所有 KMS 密钥拥有权限。 相反,只在帐户特定区域中的密钥上允许这些权限。 采用最小特权原则,可降低意外泄漏数据的风险。

严重性:中等

Lambda 函数应限制公共访问

说明:Lambda 函数基于资源的策略应限制公共访问。 此建议不会检查内部主体的访问。 使用基于最低权限资源的策略确保对该函数的访问权限仅限于授权的主体。

严重性:高

应为所有 IAM 用户启用 MFA

说明:所有 IAM 用户都应启用多重身份验证(MFA)。

严重性:中等

应为根用户启用 MFA

说明:根帐户是帐户中特权最高的用户。 MFA 在用户名和密码之上提供了额外的保护层。 启用 MFA 后,当用户登录 AWS 网站时,系统会提示他们输入其用户名和密码,以及 AWS MFA 设备中的身份验证代码。 将虚拟 MFA 用于根帐户时,建议使用的设备不是个人设备。 相反,请使用专用的移动设备 (平板电脑或手机) ,你可以管理这些设备,使其独立于任何个人设备进行计费和保护。 这会降低由于设备丢失、设备置换或拥有设备的个人不再受雇于公司而导致失去 MFA 访问权限的风险。

严重性:低

IAM 用户的密码策略应有强配置

说明:检查 IAM 用户的帐户密码策略是否使用以下最低配置。

  • RequireUppercaseCharacters - 密码中至少需要一个大写字符。 (默认值 = true)
  • RequireLowercaseCharacters - 密码中至少需要一个小写字符。 (默认值 = true)
  • RequireNumbers - 密码中至少需要一个数字。 (默认值 = true)
  • MinimumPasswordLength - 密码最小长度。 (默认值 = 7 或更长)
  • PasswordReusePrevention - 允许重复使用之前的密码数。 (默认值 = 4)
  • MaxPasswordAge - 密码过期前的天数。 (默认值 = 90)

严重性:中等

应撤销 AWS 帐户中非活动标识的权限

说明:Microsoft Defender for Cloud 发现了在过去 45 天内未对 AWS 帐户中的任何资源执行任何操作的标识。 建议撤销非活动标识的权限,以减少云环境的攻击面。

严重性:中等

根帐户访问密钥不存在

说明:根帐户是 AWS 帐户中特权最高的用户。 AWS 访问密钥提供对给定 AWS 帐户的编程式访问。 建议删除与根帐户关联的所有访问密钥。 删除与根帐户关联的访问密钥会限制帐户被入侵的攻击途径。 此外,删除根访问密钥会鼓励创建和使用基于角色的最小特权帐户。

严重性:高

应启用 S3“阻止公共访问”设置

说明:为 S3 存储桶启用“阻止公共访问”设置有助于防止敏感数据泄漏并防止存储桶遭受恶意操作。

严重性:中等

应在存储桶级别启用 S3 阻止公共访问设置

说明:此控件检查 S3 存储桶是否应用了存储桶级公共访问块。 如果以下任一设置设置为 false,则此控件将失败:

  • ignorePublicAcls
  • blockPublicPolicy
  • blockPublicAcls
  • restrictPublicBuckets 阻止 S3 存储桶级别的公共访问提供控件,以确保对象永远不会具有公共访问权限。 通过访问控制列表 (ACL) 和/或存储桶级策略授予存储桶和对象公共访问权限。 除非你打算公开访问 S3 存储桶,否则应配置存储桶级别 Amazon S3 阻止公共访问功能。

严重性:高

应删除 S3 存储桶公共读取访问

说明:删除对 S3 存储桶的公共读取访问权限有助于保护数据并防止数据泄露。

严重性:高

应删除 S3 存储桶公共写入访问

说明:允许对 S3 存储桶进行公共写入访问可能会使你容易受到恶意操作,例如以牺牲为代价存储数据、加密文件进行赎金,或使用存储桶操作恶意软件。

严重性:高

Secrets Manager 机密应启用自动轮换

说明:此控件检查 AWS 机密管理器中存储的机密是否配置为自动轮换。 Secrets Manager 有助于提高组织的安全状况。 机密包含数据库凭据、密码和第三方 API 密钥。 你可以使用 Secrets Manager 集中存储机密、自动加密机密、控制对机密的访问,以及安全地自动轮换机密。 Secrets Manager 可以轮换机密。 可以使用轮换将长期机密替换为短期机密。 轮换机密会限制未经授权的用户可以使用已泄露机密的时间。 出于此原因,你应该经常轮换机密。 若要详细了解轮换,请参阅 AWS Secrets Manager 用户指南中的轮换 AWS Secrets Manager 机密

严重性:中等

已停止的 EC2 实例应在指定的时间段后删除

说明:此控制检查是否已停止任何 EC2 实例超过允许的天数。 EC2 实例如果停止的时间超过允许的最大时间段(默认为 30 天),则 EC2 实例将失败。 失败的结果表示,EC2 实例已经有很长一段时间没有运行了。 这会产生安全风险,因为 EC2 实例未受到主动维护(已分析、修补、更新)。 如果稍后启动,则缺少适当的维护可能会导致 AWS 环境中出现意外问题。 若要安全地安全地保持 EC2 实例长期处于非运行状态,请定期启动以进行维护,并在维护后将其停止。 理想情况下,这是一个自动化过程。

严重性:中等

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

说明:非活动标识是过去 90 天内未对任何资源执行任何操作的人类和非人类实体。 AWS 帐户中具有高风险权限的非活动 IAM 标识可能会受到攻击,如果保持原样,并且让组织能够滥用或利用凭据。 主动检测和响应未使用的标识有助于防止未经授权的实体访问 AWS 资源。

严重性:中等

GCP 标识和访问建议

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

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

严重性:中等

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

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

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

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

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

严重性:高

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

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

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

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

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

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

严重性:高

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

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

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

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

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

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

严重性:高

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

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

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

  • API 密钥是简单的加密字符串
  • API 密钥不会标识发出 API 请求的用户或应用程序
  • 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 为每个项目、文件夹和组织维护两个审核日志:管理活动和数据访问。

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

数据访问审计日志信息分为三种:

  • 管理员读取:记录读取元数据或配置信息的操作。 管理员活动审核日志记录无法禁用的元数据和配置信息的写入。
  • 数据读取:记录读取用户提供的数据的操作。
  • 数据写入:记录写入用户提供的数据的操作。

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

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

严重性:中等

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

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

严重性:高

确保使用公司登录凭据

说明:使用公司登录凭据而不是个人帐户,例如 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 Encrypter/Decrypter 允许用户/标识(对相关资源拥有足够的权限)使用加密密钥对静态数据进行加密和解密。 内置/预定义 IAM 角色 Cloud KMS CryptoKey Encrypter 允许用户/标识(对相关资源拥有足够的权限)使用加密密钥对静态数据进行加密。 内置/预定义 IAM 角色 Cloud KMS Crypto Key Decrypter 允许用户/标识(对相关资源拥有足够的权限)使用加密密钥对静态数据进行解密。 职责分离是确保一个人没有所有必要权限才能完成恶意操作的概念。 在云 KMS 中,这可能是一项操作,例如使用密钥访问和解密用户通常无权访问的数据。 职责分离是一种通常用于大型组织的业务控制,旨在帮助避免安全或隐私事件和错误。 它被认为是最佳做法。 没有用户应具有云 KMS 管理员和同时分配的任何Cloud KMS CryptoKey Encrypter/Decrypter角色Cloud KMS CryptoKey EncrypterCloud KMS CryptoKey Decrypter

严重性:高

说明:建议在向用户分配服务帐户相关角色时强制实施“职责分离”原则。 内置/预定义的 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 个外部服务帐户密钥,以促进密钥轮换。

严重性:中等

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

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

应禁用 GKE 网络仪表板

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

严重性:高

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

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

严重性:高

应撤销 GCP 项目中非活动标识的权限

说明:Microsoft Defender for Cloud 发现了在过去 45 天内未对 GCP 项目中的任何资源执行任何操作的标识。 建议撤销非活动标识的权限,以减少云环境的攻击面。

严重性:中等

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

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

严重性:高

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

说明:此建议评估节点池的配置属性,以检查是否未指定任何服务帐户,或者是否使用默认服务帐户。

严重性:高

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

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

严重性:高