本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Security Hub 控件适用于 IAM
这些 AWS Security Hub 控件评估 AWS Identity and Access Management (IAM) 服务和资源。
这些控件可能并非全部可用 AWS 区域。有关更多信息,请参阅 按地区划分的控件可用性。
[IAM.1] IAM 策略不应允许完全的 “*” 管理权限
相关要求:PCIDSSv3.2.1/7.2.1、CIS AWS Foundations Benchmark v1.2.0/1.22、CIS AWS Foundations Benchmark v1.4.0/1.16、 NIST.800-53.r5 AC-2、 NIST.800-53.r5 AC-2 (1)、(15)、(7) NIST.800-53.r5 AC-3、、 NIST.800-53.r5 AC-3 (10)、(2)、 NIST.800-53.r5 AC-3 (3) NIST.800-53.r5 AC-5 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6
类别:保护 > 安全访问管理
严重性:高
资源类型:AWS::IAM::Policy
AWS Config 规则:iam-policy-no-statements-with-admin-access
计划类型:已触发变更
参数:
excludePermissionBoundaryPolicy: true
(不可自定义)
此控件通过添加带有 over 的IAM语句来检查策略的默认版本(也称为客户托管策略)是否"Effect": "Allow"
具有"Action": "*"
管理员访问权限"Resource": "*"
。如果您有包含此类声明的IAM策略,则控制失败。
该控制仅检查您创建的客户托管策略。它不检查内联策略和 AWS 托管策略。
IAM策略定义了授予用户、组或角色的一组权限。按照标准的安全建议, AWS 建议您授予最低权限,即仅授予执行任务所需的权限。当您提供完全管理权限而不是用户所需的最低权限集时,您会将资源暴给可能有害的操作。
首先确定用户需要执行的任务,然后拟定仅限用户执行这些任务的策略,而不是允许完全管理权限。最开始只授予最低权限,然后根据需要授予其他权限,则样会更加安全。请不要一开始就授予过于宽松的权限而后再尝试收紧权限。
您应该移除"Effect": "Allow"
带有"Action": "*"
带有 over 声明的IAM策略"Resource": "*"
。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要修改您的IAM策略,使其不允许完全的 “*” 管理权限,请参阅IAM用户指南中的编辑IAM策略。
[IAM.2] IAM 用户不应附加IAM政策
相关要求:PCIDSSv3.2.1/7.2.1、Foundations Benchmark v3.0.0/1.15、CIS AWS Foundations Benchmark v1.2.0/1.16、、 NIST.800-53.r5 AC-2 (1)、、(15)、(7) NIST.800-53.r5 AC-2、(3) CIS AWS NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6
类别:保护 > 安全访问管理
严重性:低
资源类型:AWS::IAM::User
AWS Config 规则:iam-user-no-policies-check
计划类型:已触发变更
参数:无
此控件可检查您的IAM用户是否附加了策略。如果您的IAM用户附加了策略,则控制失败。相反,IAM用户必须继承IAM群组的权限或扮演角色。
默认情况下,IAM用户、组和角色无权访问 AWS 资源。IAM策略向用户、组或角色授予权限。我们建议您将IAM策略直接应用于群组和角色,但不要应用于用户。随着用户数量的增长,在组或角色级别分配权限可降低访问管理的复杂性。降低访问管理的复杂性有助于减少委托人意外收到或保留过多权限的机会。
注意
IAMAmazon 简单电子邮件服务创建的用户是使用内联策略自动创建的。Security Hub 会自动将这些用户排除在此控制范围之外。
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要解决此问题,请创建一个IAM群组,并将策略附加到该群组。然后,将用户添加到组中。策略将应用于组中的每一位用户。要删除直接附加到用户的策略,请参阅《IAM用户指南》中的添加和删除IAM身份权限。
[IAM.3] IAM 用户的访问密钥应每 90 天或更短时间轮换一次
相关要求:CIS AWS 基金会基准 v3.0.0/1.14、基金会基准 v1.4.0/1.14、CIS AWS 基金会基准 v1.2.0/1.4、CIS AWS (1)、(3)、(15) NIST.800-53.r5 AC-2 NIST.800-53.r5 AC-2 NIST.800-53.r5 AC-3
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::IAM::User
AWS Config 规则:access-keys-rotated
计划类型:定期
参数:
-
maxAccessKeyAge
:90
(不可自定义)
该控制检查是否在 90 天内轮换了活动访问密钥。
我们强烈建议您不要在账户中生成和删除所有访问密钥。相反,推荐的最佳做法是创建一个或多个IAM角色或通过使用联
每种方法都有其使用案例。对于拥有现有中央目录或计划需要超过当前IAM用户限制的企业来说,联合通常更好。在 AWS 环境之外运行的应用程序需要访问密钥才能以编程方式访问 AWS 资源。
但是,如果需要编程访问权限的资源在内部运行 AWS,则最佳做法是使用IAM角色。通过角色,您可以授予资源访问权限,而无需在配置中硬编码访问密钥 ID 和私有访问密钥。
要了解有关保护访问密钥和帐户的更多信息,请参阅中的管理 AWS 访问密钥的最佳实践AWS 一般参考。另请参阅博客文章《使用编程访问权限 AWS 账户 时保护您的指南》
如果您已有访问密钥,Security Hub 建议您每 90 天轮换一次访问密钥。轮换访问密钥可减少他人使用遭盗用账户或已终止账户关联的访问密钥的风险。这还可以确保无法使用可能已丢失、遭破解或被盗用的旧密钥访问数据。轮换访问密钥后,始终更新您的应用程序。
访问密钥包含一个访问密钥 ID 和一个私有访问密钥。它们用于签署您向 AWS发出的编程请求。用户需要自己的访问密钥才能 AWS 从 AWS CLI、Windows PowerShell 工具进行编程调用 AWS SDKs,或者使用个人API操作进行直接HTTP呼叫 AWS 服务。
如果您的组织使用 AWS IAM Identity Center (IAM身份中心),则您的用户可以登录 Active Directory、内置的IAM身份中心目录或其他连接到IAM身份中心的身份提供商 (IdP)。然后可以将它们映射到一个IAM角色,使他们无需访问密钥即可运行 AWS CLI 命令或调用 AWS API操作。要了解更多信息,请参阅AWS Command Line Interface 用户指南 AWS IAM Identity Center中的配置 AWS CLI 以使用。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要轮换使用期超过 90 天的访问密钥,请参阅《IAM用户指南》中的轮换访问密钥。对于任何访问密钥有效期超过 90 天的用户,请按照说明进行操作。
[IAM.4] IAM root 用户访问密钥不应存在
相关要求:CIS AWS 基金会基准 v3.0.0/1.4、基金会基准 v1.4.0/1.4、CIS AWS 基金会基准 v1.2.0/1.12、CIS AWS v3.2.1/2. PCI DSS 1、v3.2.1/2.2、v3.2.1/2.1、v3.2.1/7.2.1、(1)、(15)、(7)、(10)、PCI DSS (PCIDSS2) NIST.800-53.r5 AC-2 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6 NIST.800-53.r5 AC-6
类别:保护 > 安全访问管理
严重性:严重
资源类型:AWS::::Account
AWS Config 规则:iam-root-access-key-check
计划类型:定期
参数:无
此控件检查根用户访问密钥是否存在。
root 用户是中权限最高的用户 AWS 账户。 AWS 访问密钥提供对给定账户的编程访问权限。
Security Hub 建议您删除与根用户关联的所有访问密钥。这限制了可用于危害您的账户的向量。它还鼓励创建和使用最小权限的基于角色的账户。
修复
要删除 root 用户访问密钥,请参阅用户指南中的删除 root 用户的访问密钥。IAM要从中删除 root 用户访问密钥 AWS GovCloud (US),请参阅用户指南 AWS 账户 中的删除我的 AWS GovCloud (US) 账户 root AWS GovCloud (US) 用户访问密钥。
MFA应为所有拥有控制台密码的IAM用户启用 [IAM.5]
相关要求:CIS AWS 基金会基准 v3.0.0/1.10、CIS AWS 基金会基准 v1.4.0/1.10、CIS AWS 基金会基准 v1.2.0/1.2、(1)、(15)、 NIST.800-53.r5 AC-2 (1)、(2)、 NIST.800-53.r5 AC-3 (6)、 NIST.800-53.r5 IA-2 (8) NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::IAM::User
AWS Config 规则:mfa-enabled-for-iam-console-access
计划类型:定期
参数:无
此控件检查是否为所有使用控制台密码的IAM用户启用了 AWS 多重身份验证 (MFA)。
多因素身份验证 (MFA) 在用户名和密码之上增加了一层额外的保护。MFA启用后,当用户登录 AWS 网站时,系统会提示他们输入用户名和密码。此外,系统还会提示他们从其 AWS MFA设备中输入身份验证码。
我们建议您MFA为所有拥有控制台密码的账户启用控制台密码。MFA旨在提高控制台访问的安全性。身份验证委托人必须拥有发放具有时效性的密钥的设备,并且必须知道凭证。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要MFA为IAM用户添加,请参阅《IAM用户指南》 AWS中的使用多重身份验证 (MFA)。
我们为符合条件的客户提供免费MFA安全密钥。查看您是否符合资格,然后订购免费密钥
[IAM.6] MFA 应为 root 用户启用硬件
相关要求:CIS AWS 基金会基准 v3.0.0/1.6、CIS AWS Foundations Benchmark v1.4.0/1.6、CIS AWS Foundations Benchmark v1.2.0/1.14、PCI DSS v3.2.1/8.3.1、(1)、(15)、 NIST.800-53.r5 AC-2 (1)、(2)、(6)、 NIST.800-53.r5 AC-3 (8) NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2
类别:保护 > 安全访问管理
严重性:严重
资源类型:AWS::::Account
AWS Config 规则:root-account-hardware-mfa-enabled
计划类型:定期
参数:无
此控件可检查您 AWS 账户 是否允许使用硬件多因素身份验证 (MFA) 设备使用根用户凭据登录。如果MFA未启用或允许任何虚拟MFA设备使用根用户凭据登录,则控件将失败。
虚拟设备MFA可能无法提供与硬件MFA设备相同的安全级别。我们建议您在等待硬件购买批准或硬件送达时仅使用虚拟MFA设备。要了解更多信息,请参阅《IAM用户指南》中的启用虚拟多因素身份验证 (MFA) 设备(控制台)。
基于时间的一次性密码 (TOTP) 和通用第二因子 (U2F) 令牌都可以作为硬件选项。MFA
修复
要为 root 用户添加硬件MFA设备,请参阅《用户指南》中的 “为 AWS 账户 root 用户启用硬件MFA设备(控制台)” IAM。
我们为符合条件的客户提供免费MFA安全密钥。查看您是否符合资格,然后订购免费密钥
[IAM.7] IAM 用户的密码策略应具有很强的配置
相关要求: NIST.800-53.r5 AC-2(1)、 NIST.800-53.r5 AC-2 (3)、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 IA-5 (1)
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
|
密码中要求至少包含一个大写字符 |
布尔值 |
|
|
|
密码中要求至少包含一个小写字符 |
布尔值 |
|
|
|
密码中要求至少包含一个符号 |
布尔值 |
|
|
|
密码中要求至少包含一个数字 |
布尔值 |
|
|
|
密码中的最少字符数 |
整数 |
|
|
|
在可以重复使用旧密码之前的密码轮换次数 |
整数 |
|
无默认值 |
|
密码到期前的天数 |
整数 |
|
无默认值 |
此控件检查IAM用户的账户密码策略是否使用强配置。如果密码策略未使用可靠配置,则控制失败。除非您提供自定义参数值,否则 Security Hub 将使用上表中提到的默认值。PasswordReusePrevention
和 MaxPasswordAge
参数没有默认值,因此,如果排除这些参数,Security Hub 在评估此控件时会忽略密码轮换次数和密码使用期限。
要访问 AWS Management Console,IAM用户需要密码。作为最佳实践,Security Hub 强烈建议您不要创建IAM用户,而是使用联合。联合身份验证允许用户使用其现有的公司凭证登录 AWS Management Console。使用 AWS IAM Identity Center (IAMIdentity Center)创建用户或联合用户,然后将IAM角色代入账户。
要了解有关身份提供商和联合身份的更多信息,请参阅IAM用户指南中的身份提供商和联合。要了解有关 IAM Identity Center 的更多信息,请参阅AWS IAM Identity Center 用户指南。
如果您需要使用IAM用户,Security Hub 建议您强制创建强用户密码。您可以对您的设置密码策略, AWS 账户 以指定密码的复杂性要求和强制轮换周期。创建或更改密码策略时,大多数密码策略设置会在用户下次更改其密码时实施。某些设置会立即强制执行。
修复
要更新密码策略,请参阅《用户指南》中的为IAM用户设置账户密码策略。IAM
[IAM.8] 应删除未使用的IAM用户凭证
相关要求:PCIDSSv3.2.1/8.1.4、CIS AWS Foundations Benchmark v1.2.0/1.3、 NIST.800-53.r5 AC-2、 NIST.800-53.r5 AC-2 (1)、(3)、 NIST.800-53.r5 AC-2 (15)、(7)、 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-3 NIST.800-53.r5 AC-6
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::IAM::User
AWS Config 规则:iam-user-unused-credentials-check
计划类型:定期
参数:
-
maxCredentialUsageAge
:90
(不可自定义)
此控件可检查您的IAM用户是否有 90 天未使用的密码或活动访问密钥。
IAM用户可以使用不同类型的凭证(例如密码或访问密钥)访问 AWS 资源。
Security Hub 建议您删除或停用 90 天或更长时间未使用的所有凭证。禁用或删除不必要的凭证可减少他人使用遭盗用账户或已弃用账户的关联凭证的风险。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
在IAM控制台中查看用户信息时,会显示访问密钥年龄、密码期限和上次活动等列。如果上述列中的任何一个中的值大于 90 天,请停用这些用户的凭证。
您还可以使用凭证报告来监控用户并识别那些连续 90 天或以上没有活动的用户。您可以从IAM控制台下载.csv
格式的凭证报告。
确定非活动账户或未使用的凭证后,将其停用。有关说明,请参阅《用户指南》中的创建、更改或删除IAMIAM用户密码(控制台)。
MFA应为 root 用户启用 [IAM.9]
相关要求:PCIDSSv3.2.1/8.3.1、CIS AWS Foundations Benchmark v3.0.0/1.5、CIS AWS Foundations Benchmark v1.4.0/1.5、CIS AWS (1)、(15)、 NIST.800-53.r5 AC-2 (1)、(2)、(6)、 NIST.800-53.r5 AC-3 (8) NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2 NIST.800-53.r5 IA-2
类别:保护 > 安全访问管理
严重性:严重
资源类型:AWS::::Account
AWS Config 规则:root-account-mfa-enabled
计划类型:定期
参数:无
根用户拥有对 AWS 账户中所有服务和资源的完全访问权限。MFA在用户名和密码之上添加了一层额外的保护。MFA启用后,当用户登录时 AWS Management Console,系统会提示他们输入用户名和密码以及 AWS MFA设备上的身份验证码。
当您MFA为 root 用户使用虚拟设备时,CIS建议使用的设备不是个人设备。请改用与任何个人设备分开付费和保护的专用移动设备(平板电脑或手机)。这降低了MFA由于设备丢失、设备以旧换新或拥有该设备的个人不再受雇于公司而失去访问权限的风险。
修复
要MFA为 root 用户启用,请参阅《AWS 账户管理参考指南》中的 “在 AWS 账户 根用户MFA上激活”。
[IAM.10] IAM 用户的密码策略应该有很 AWS Config长的持续时间
相关要求:PCIDSSv3.2.1/8.1.4、v3.2.1/8.2.3、v3.2.1/8.2.4、PCI DSS v3.2.1/8.2.5 PCI DSS PCI DSS
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
此控件检查IAM用户的账户密码策略是否使用以下最低PCIDSS配置。
-
RequireUppercaseCharacters
——密码中要求至少包含一个大写字符。(默认值 =true
) -
RequireLowercaseCharacters
——密码中要求至少包含一个小写字符。(默认值 =true
) -
RequireNumbers
——密码中要求至少包含一个数字。(默认值 =true
) -
MinimumPasswordLength
——密码最小长度。(默认值 = 7 或更长) -
PasswordReusePrevention
——允许重用前的密码数。(默认值 = 4) -
MaxPasswordAge — 密码到期前的天数。(默认值 = 90)
修复
要更新密码策略以使用推荐的配置,请参阅《用户指南》中的为IAM用户设置账户密码策略。IAM
[IAM.11] 确保IAM密码策略至少需要一个大写字母
相关要求:CIS AWS 基础基准 v1.2.0/1.5
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
密码策略在某种程度上强制实施密码复杂性要求。使用IAM密码策略来确保密码使用不同的字符集。
CIS建议密码策略要求至少包含一个大写字母。设置密码复杂性策略可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于密码强度,选择需要至少一个拉丁字母表中的大写字母 (A–Z)。
[IAM.12] 确保IAM密码策略至少需要一个小写字母
相关要求:CIS AWS 基础基准 v1.2.0/1.6
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
密码策略在某种程度上强制实施密码复杂性要求。使用IAM密码策略来确保密码使用不同的字符集。CIS建议密码策略要求至少包含一个小写字母。设置密码复杂性策略可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于密码强度,选择需要至少一个拉丁字母表中的小写字母 (A–Z)。
[IAM.13] 确保IAM密码策略至少需要一个符号
相关要求:CIS AWS 基础基准 v1.2.0/1.7
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
密码策略在某种程度上强制实施密码复杂性要求。使用IAM密码策略来确保密码使用不同的字符集。
CIS建议密码策略至少需要一个符号。设置密码复杂性策略可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于密码强度,选择需要至少一个非字母数字字符。
[IAM.14] 确保IAM密码策略至少需要一个数字
相关要求:CIS AWS 基础基准 v1.2.0/1.8
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
密码策略在某种程度上强制实施密码复杂性要求。使用IAM密码策略来确保密码使用不同的字符集。
CIS建议密码策略要求至少有一个数字。设置密码复杂性策略可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于密码强度,选择需要至少一个数字。
[IAM.15] 确保IAM密码策略要求的最小密码长度为 14 或更大
相关要求:CIS AWS 基金会基准 v3.0.0/1.8、基金会基准 v1.4.0/1.8、CIS AWS 基金会基准 v1.2.0/1.9 CIS AWS
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
密码策略在某种程度上强制实施密码复杂性要求。使用IAM密码策略确保密码的长度至少为给定长度。
CIS建议密码策略要求密码长度至少为 14 个字符。设置密码复杂性策略可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于密码最小长度,请输入 14
或更大的数字。
[IAM.16] 确保IAM密码策略防止密码重复使用
相关要求:CIS AWS 基金会基准 v3.0.0/1.9、基金会基准 v1.4.0/1.9、CIS AWS 基金会基准 v1.2.0/1.10 CIS AWS
类别:保护 > 安全访问管理
严重性:低
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
此控件检查要记住的密码数量是否设置为 24。如果该值不是 24,则控制失败。
IAM密码策略可以防止同一个用户重复使用给定密码。
CIS建议密码策略防止密码的重复使用。阻止重复使用密码可提高账户抵抗暴力登录尝试的弹性。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM在防止密码重复使用中,输入 24
。
[IAM.17] 确保IAM密码策略在 90 天或更短时间内使密码过期
相关要求:CIS AWS 基础基准 v1.2.0/1.11
类别:保护 > 安全访问管理
严重性:低
资源类型:AWS::::Account
AWS Config 规则:iam-password-policy
计划类型:定期
参数:无
IAM密码策略可以要求密码在给定的天数后轮换或过期。
CIS建议密码策略在 90 天或更短时间后使密码过期。缩短密码生存期可提高账户抵抗暴力登录尝试的弹性。在以下情况下,要求定期更改密码也是非常有用的:
-
密码可能会在您不知情的情况下被窃取或泄露。系统遭受攻击、软件漏洞或内部威胁都可能导致发生这种情况。
-
某些公司和政府的 Web 筛选条件或代理服务器能够拦截和记录流量(即使流量已加密)。
-
很多用户对于许多系统(例如工作系统、电子邮件和个人系统)都使用相同的密码。
-
遭受攻击的最终用户工作站可能存在击键记录器。
修复
要更改密码策略,请参阅用户指南中的为IAM用户设置账户密码策略。IAM对于开启密码到期,请输入 90
或一个较小的数字。
[IAM.18] 确保已创建支持角色来管理事件 AWS Support
相关要求:CIS AWS 基金会基准 v3.0.0/1.17、基金会基准 v1.4.0/1.17、CIS AWS 基金会基准 v1.2.0/1.20 CIS AWS
类别:保护 > 安全访问管理
严重性:低
资源类型:AWS::::Account
AWS Config 规则:iam-policy-in-use
计划类型:定期
参数:
policyARN
:arn:
(不可自定义)partition
:iam::aws:policy/AWSSupportAccesspolicyUsageType
:ANY
(不可自定义)
AWS 提供了一个支持中心,可用于事件通知和响应,以及技术支持和客户服务。
创建一个IAM角色以允许授权用户通过 Support AWS 管理事件。通过实施访问控制的最低权限,IAM角色将需要适当的IAM策略来允许支持中心访问才能管理事件 AWS Support。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要纠正此问题,请创建一个角色以允许授权用户管理 AWS Support 事件。
创建用于 AWS Support 访问的角色
打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在IAM导航窗格中,选择角色,然后选择创建角色。
-
对于角色类型,选择其他 AWS 账户。
-
在账户 AWS 账户 ID 中,输入您要 AWS 账户 向其授予资源访问权限的 ID。
如果将代入此角色的用户或组位于同一账户中,则输入本地账户号码。
注意
指定账户的管理员可向该账户中的任何用户授予代入该角色的权限。为此,管理员需要将策略附加到用户或组来授予
sts:AssumeRole
操作的权限。在该策略中,资源必须是角色ARN。 -
选择下一步: 权限。
-
搜索托管策略
AWSSupportAccess
。 -
选中
AWSSupportAccess
托管策略的复选框。 -
选择下一步:标签。
-
(可选)要将元数据添加到角色,将标签附加为键值对。
有关在中使用标签的更多信息IAM,请参阅《IAM用户指南》中的为IAM用户和角色添加标签。
-
选择 Next: Review (下一步:审核)。
-
对于 Role name (角色名称),为您的角色输入一个名称。
角色名称在您的角色中必须是唯一的 AWS 账户。它们不区分大小写。
-
(可选)对于角色描述,输入新角色的描述。
-
检查该角色,然后选择Create role (创建角色)。
MFA应为所有IAM用户启用 [IAM.19]
相关要求:PCIDSSv3.2.1/8.3.1、 NIST.800-53.r5 AC-2 (1)、 NIST.800-53.r5 AC-3 (15)、(1)、 NIST.800-53.r5 IA-2 (2)、 NIST.800-53.r5 IA-2 (6)、 NIST.800-53.r5 IA-2 (8) NIST.800-53.r5 IA-2
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::IAM::User
AWS Config 规则:iam-user-mfa-enabled
计划类型:定期
参数:无
此控件检查IAM用户是否启用了多因素身份验证 (MFA)。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要MFA为IAM用户添加,请参阅用户指南 AWS中的为IAM用户启用MFA设备。
[IAM.20] 避免使用 root 用户
重要
Security Hub 于 2024 年 4 月取消了该控制权。有关更多信息,请参阅 Security Hub 控件的更改日志。
相关要求:CIS AWS 基础基准 v1.2.0/1.1
类别:保护 > 安全访问管理
严重性:低
资源类型:AWS::IAM::User
AWS Config 规则:use-of-root-account-test
(自定义 Security Hub 规则)
计划类型:定期
参数:无
此控件检查是否对 root 用户的使用有限制。 AWS 账户 该控件评估以下资源:
亚马逊简单通知服务 (AmazonSNS) 主题
AWS CloudTrail 步道
与 CloudTrail 跟踪关联的指标筛选器
基于筛选条件的 Amazon CloudWatch 警报
如果以下一条或多条陈述为真,此检查将导致 FAILED
调查发现结果:
该账户中不存在任何 CloudTrail 跟踪。
CloudTrail 跟踪已启用,但未配置至少一个包含读写管理事件的多区域跟踪。
CloudTrail 跟踪已启用,但未与 CloudWatch 日志日志组关联。
没有使用互联网安全中心 (CIS) 规定的确切指标筛选器。规定的指标筛选条件是
'{$.userIdentity.type="Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !="AwsServiceEvent"}'
。账户中不存在基于指标筛选条件的 CloudWatch 警报。
CloudWatch 配置为向关联SNS主题发送通知的警报不会根据警报条件触发。
该SNS主题不符合向SNS主题发送消息的限制。
该SNS主题没有至少一个订阅者。
如果以下一条或多条陈述为真,则此检查的控件状态为 NO_DATA
:
多区域跟踪基于不同区域。Security Hub 只能在跟踪所在的区域生成调查发现。
多区域跟踪属于不同的账户。Security Hub 只能为拥有跟踪的账户生成调查发现。
如果以下一条或多条陈述为真,则此检查的控件状态为 WARNING
:
当前账号不拥有 CloudWatch 警报中提及SNS的主题。
调用时,当前账户无权访问该SNS
ListSubscriptionsByTopic
SNSAPI主题。
注意
我们建议使用组织跟踪来记录来自组织中多个账户的事件。默认情况下,组织跟踪是多区域跟踪,只能由 AWS Organizations 管理账户或 CloudTrail 委派的管理员账户进行管理。使用组织跟踪会导致在组织成员账户中评估的控件DATA的控制状态为 NO_。在成员账户中,Security Hub 仅针对成员拥有的资源生成调查发现。与组织跟踪相关的调查发现在资源所有者的账户中生成。您可以使用跨区域聚合在 Security Hub 委托管理员账户中查看这些结果。
作为最佳实践,仅在需要执行账户和服务管理任务时才使用根用户凭证。将IAM策略直接应用于群组和角色,但不应用于用户。有关设置日常使用的管理员的说明,请参阅《用户指南》中的创建您的第一个IAM管理员IAM用户和群组。
修复
修复此问题的步骤包括设置 Amazon SNS 主题、 CloudTrail跟踪、指标筛选条件和指标筛选器警报。
创建 Amazon SNS 主题
在 https://console.aws.amazon.com/sns/v3/
hom SNS e 上打开亚马逊主机。 -
创建一个接收所有CIS警报的 Amazon SNS 主题。
为该主题创建至少一个订阅者。有关更多信息,请参阅《亚马逊简单通知服务开发者指南》SNS中的亚马逊入门。
接下来,设置 CloudTrail 一个适用于所有地区的活动。为此,请按照[CloudTrail.1] CloudTrail 应启用并配置至少一条包含读写管理事件的多区域跟踪中的修复步骤进行操作。
记下与 CloudTrail 跟踪关联的 CloudWatch 日志日志组的名称。您为该日志组创建指标筛选条件。
最后,创建指标筛选条件和警报。
创建指标筛选条件和警报
打开 CloudWatch 控制台,网址为https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择 日志组。
-
选中与您创建的 CloudTrail 跟踪关联的 Logs CloudWatch 日志组对应的复选框。
-
从操作中,选择创建指标筛选条件。
-
在定义模式下,请执行以下操作:
-
复制以下模式,然后将其粘贴到 Filter Pattern (筛选条件模式) 字段中。
{$.userIdentity.type="Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !="AwsServiceEvent"}
-
选择下一步。
-
-
在分配指标下,执行以下操作:
-
在筛选条件名称中,输入指标筛选条件的名称。
-
对于指标命名空间,输入
LogMetrics
。如果您对所有CIS日志指标筛选器使用相同的命名空间,则所有 CIS Benchmark 指标都会组合在一起。
-
对于指标名称,为指标输入名称。记住指标的名称。在创建警报时,您将需要选择指标。
-
对于 Metric value(指标值),输入
1
。 -
选择下一步。
-
-
在查看并创建下,验证您为新指标筛选器提供的信息。选择创建指标筛选条件。
-
在导航窗格中,选择日志组,然后选择您在指标筛选器下创建的筛选条件。
-
选中筛选条件的复选框。选择创建警报。
-
在指定指标和条件下,执行以下操作:
-
在条件下,对于阈值,选择静态。
-
对于定义警报条件,选择大于/等于。
-
在定义阈值中输入
1
。 -
选择下一步。
-
-
在配置操作下,执行以下操作:
-
在警报状态触发下,选择在警报中。
-
在 “选择SNS主题” 下,选择 “选择现有SNS主题”。
-
在 “向发送通知” 中,输入您在上一个过程中创建的SNS主题的名称。
-
选择下一步。
-
-
在添加名称和描述下,输入警报的名称和描述,例如
CIS-1.1-RootAccountUsage
。然后选择下一步。 -
在预览并创建下,查看警报配置。然后选择 Create alarm (创建警报)。
[IAM.21] 您创建的IAM客户托管策略不应允许对服务执行通配符操作
相关要求: NIST.800-53.r5 AC-2、 NIST.800-53.r5 AC-2 (1)、 NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 AC-3 (7)、 NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6、 NIST.800-53.r5 AC-6 (10)、 NIST.800-53.r5 AC-6 (2)、 NIST.800-53.r5 AC-6 (3)
类别:检测 > 安全访问管理
严重性:低
资源类型:AWS::IAM::Policy
AWS Config 规则:iam-policy-no-statements-with-full-access
计划类型:已触发变更
参数:
-
excludePermissionBoundaryPolicy
:True
(不可自定义)
此控件会检查您创建的IAM基于身份的策略是否有 Allow 语句,这些语句使用* 通配符来授予对任何服务执行所有操作的权限。如果任何策略声明包含 "Action": "Service:*"
的 "Effect": "Allow"
,则控制失败。
例如,策略中的以下语句会导致失败的调查发现。
"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }
如果 "Effect": "Allow"
与 "NotAction":
"
配合使用,控制也会失败。在这种情况下,service
:*"NotAction
元素提供对中所有操作的访问权限 AWS 服务,中指定的操作除外NotAction
。
此控制仅适用于客户托管IAM策略。它不适用于由管理的IAM策略 AWS。
向分配权限时 AWS 服务,重要的是要确定IAM策略中允许的IAM操作的范围。您应将IAM操作限制为仅需要执行的操作。这可以帮助您预置最低权限权限。如果策略附加到可能不需要权限的主体,则过于宽松的策略可能会导致权限升IAM级。
在某些情况下,您可能希望允许具有相似前缀的IAM操作,例如DescribeFlowLogs
和DescribeAvailabilityZones
。在这些授权的情况下,您可以在通用前缀中添加带后缀的通配符。例如,ec2:Describe*
。
如果您使用带有后缀通配符的前缀IAM动作,则此控件通过。例如,策略中的以下语句会形成通过的调查发现。
"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }
以这种方式对相关IAM操作进行分组时,还可以避免超过IAM策略大小限制。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,可以在单个区域启用全局资源记录。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
要修复此问题,请更新您的IAM策略,使其不允许完全的 “*” 管理权限。有关如何编辑IAM策略的详细信息,请参阅《IAM用户指南》中的编辑IAM策略。
[IAM.22] 应移除在 45 天内未使用的IAM用户凭证
相关要求:CIS AWS 基金会基准 v3.0.0/1.12、基金会基准 v1.4.0/1.12 CIS AWS
类别:保护 > 安全访问管理
严重性:中
资源类型:AWS::IAM::User
AWS Config 规则:iam-user-unused-credentials-check
计划类型:定期
参数:无
此控件可检查您的IAM用户是否有 45 天或更长时间未使用的密码或活动访问密钥。为此,它会检查 AWS Config 规则的maxCredentialUsageAge
参数是否等于 45 或更大。
用户可以使用不同类型的凭证(例如密码或访问密钥)访问 AWS 资源。
CIS建议您删除或停用所有在 45 天或更长时间内未使用的凭证。禁用或删除不必要的凭证可减少他人使用遭盗用账户或已弃用账户的关联凭证的风险。
此控件的 AWS Config 规则使用GetCredentialReport
和GenerateCredentialReport
API操作,这些操作仅每四小时更新一次。此控件最多可能需要四个小时才能看到对IAM用户的更改。
注意
AWS Config 应在您使用 Security Hub 的所有区域中启用。但是,您可以启用在单个区域中记录全局资源。如果您仅在一个区域中记录全局资源,则可以在所有区域(记录全局资源的区域除外)中禁用此控件。
修复
在IAM控制台中查看用户信息时,会显示访问密钥年龄、密码期限和上次活动等列。如果上述列中的任何一个中的值大于 45 天,请停用这些用户的凭证。
您还可以使用凭证报告来监控用户并识别那些连续 45 天或以上没有活动的用户。您可以从IAM控制台下载.csv
格式的凭证报告。
确定非活动账户或未使用的凭证后,将其停用。有关说明,请参阅《用户指南》中的创建、更改或删除IAMIAM用户密码(控制台)。
[IAM.23] 应标记 Acc IAM ess Analyzer 分析器
类别:识别 > 清单 > 标记
严重性:低
资源类型:AWS::AccessAnalyzer::Analyzer
AWS Config 规则:tagged-accessanalyzer-analyzer
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 | StringList | 符合AWS 要求的标签列表 |
No default value
|
此控件检查由 AWS Identity and Access Management Access Analyzer (A IAM ccess Analyzer)管理的分析器是否具有参数中定义的特定密钥的标签requiredTagKeys
。如果分析器没有任何标签键或者没有在参数中指定的所有密钥,则控件将失败requiredTagKeys
。如果requiredTagKeys
未提供该参数,则控件仅检查标签密钥是否存在,如果分析器未使用任何密钥进行标记,则该控件将失败。系统标签会自动应用并以其开头aws:
,但会被忽略。
标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。
注意
不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签。AWS 一般参考
修复
要向分析器添加标签,请参阅《AWS IAM访问分析器API参考》TagResource中的。
[IAM.24] IAM 角色应该被标记
类别:识别 > 清单 > 标记
严重性:低
资源类型:AWS::IAM::Role
AWS Config 规则:tagged-iam-role
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 | StringList | 符合AWS 要求的标签列表 |
No default value
|
此控件检查 AWS Identity and Access Management (IAM) 角色是否具有参数中定义的特定键的标签requiredTagKeys
。如果角色没有任何标签密钥或者没有参数中指定的所有密钥,则控件将失败requiredTagKeys
。如果requiredTagKeys
未提供该参数,则该控件仅检查标签密钥是否存在,如果该角色未使用任何密钥进行标记,则该控件将失败。系统标签会自动应用并以其开头aws:
,但会被忽略。
标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。
注意
不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签。AWS 一般参考
修复
要为IAM角色添加标签,请参阅IAM用户指南中的为IAM资源添加标签。
[IAM.25] 应IAM给用户加标签
类别:识别 > 清单 > 标记
严重性:低
资源类型:AWS::IAM::User
AWS Config 规则:tagged-iam-user
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 | StringList | 符合AWS 要求的标签列表 |
No default value
|
此控件检查 AWS Identity and Access Management (IAM) 用户是否具有参数中定义的特定密钥的标签requiredTagKeys
。如果用户没有任何标签密钥或者没有参数中指定的所有密钥,则控件将失败requiredTagKeys
。如果requiredTagKeys
未提供该参数,则该控件仅检查标签密钥是否存在,如果用户未使用任何密钥进行标记,则该控件将失败。系统标签会自动应用并以其开头aws:
,但会被忽略。
标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。
注意
不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签。AWS 一般参考
修复
要为用户添加标签,请参阅IAMIAM用户指南中的为IAM资源添加标签。
[IAM.26] IAM 应移除已过期 SSL /中管理的TLS证书
相关要求:CIS AWS 基础基准 v3.0.0/1.19
类别:识别 > 合规
严重性:中
资源类型:AWS::IAM::ServerCertificate
AWS Config 规则:iam-server-certificate-expiration-check
计划类型:定期
参数:无
它控制检查中管理的活动SSL/TLS服务器证书是否IAM已过期。如果未删除过期的SSL/TLS服务器证书,则控件将失败。
要在中启用HTTPS与您的网站或应用程序的连接 AWS,您需要一个 SSL /s TLS erver 证书。您可以使用IAM或 AWS Certificate Manager (ACM) 来存储和部署服务器证书。仅当你必须支持不支持的HTTPS连接时 AWS 区域 ,才可用作证书管理器ACM。IAMIAM安全地加密您的私钥并将加密版本存储在IAMSSL证书存储中。IAM支持在所有区域部署服务器证书,但必须从外部提供商处获取证书才能与一起使用 AWS。您无法将ACM证书上传到IAM。此外,您无法通过IAM控制台管理证书。移除过期SSL/TLS证书可以消除意外将无效证书部署到资源的风险,这可能会损害底层应用程序或网站的可信度。
修复
要从中删除服务器证书IAM,请参阅《IAM用户指南》IAM中的 “管理服务器证书”。
[IAM.27] IAM 身份不应附加 AWSCloudShellFullAccess 政策
相关要求:CIS AWS 基础基准 v3.0.0/1.22
类别:保护 > 安全访问管理 > 安全IAM策略
严重性:中
资源类型:AWS::IAM::Role
、AWS::IAM::User
、AWS::IAM::Group
AWS Config 规则:iam-policy-blacklisted-check
计划类型:已触发变更
参数:
“: policyArns “arn: aws: iam:: aws: policy/, arn: aws-cn: iam:: aws: policy/, arn:: iam:: aws:: aws: AWSCloudShellFullAccess policy/” AWSCloudShellFullAccess aws-us-gov AWSCloudShellFullAccess
此控件检查IAM身份(用户、角色或群组)是否AWSCloudShellFullAccess
附加了 AWS 托管策略。如果IAM身份附加了AWSCloudShellFullAccess
策略,则控制失败。
AWS CloudShell 提供了一种针对其运行CLI命令的便捷方法 AWS 服务。 AWS 托管策略AWSCloudShellFullAccess
提供对的完全访问权限 CloudShell,允许用户在本地系统和 CloudShell 环境之间上传和下载文件。在 CloudShell 环境中,用户具有 sudo 权限,并且可以访问互联网。因此,将此托管策略附加到IAM身份后,他们就可以安装文件传输软件并将数据从外部互联网服务器移动 CloudShell 到外部 Internet 服务器。我们建议遵循最小权限原则,为你的IAM身份附加更窄的权限。
修复
要将AWSCloudShellFullAccess
策略与IAM身份分离,请参阅IAM用户指南中的添加和删除IAM身份权限。
[IAM.28] 应启用 IAM Access Analyzer 外部访问分析器
相关要求:CIS AWS 基础基准 v3.0.0/1.20
类别:检测 > 检测服务 > 特权使用情况监控
严重性:高
资源类型:AWS::AccessAnalyzer::Analyzer
AWS Config 规则:iam-external-access-analyzer-enabled
计划类型:定期
参数:无
此控件检查是否启用 AWS 账户 了IAM访问分析器外部访问分析器。如果您当前选择的账户中未启用外部访问分析器,则控制失败 AWS 区域。
IAMAccess Analyzer 外部访问分析器可帮助识别您的组织和账户中与外部实体共享的资源,例如亚马逊简单存储服务 (Amazon S3) Simple Service 存储桶IAM或角色。这可以帮助您避免意外访问您的资源和数据。IAMAccess Analyzer 是区域性的,必须在每个区域中启用。为了识别与外部主体共享的资源,访问分析器使用基于逻辑的推理来分析环境中基于资源的策略。 AWS 启用外部访问分析器后,即为整个组织或账户创建一个分析器。
修复
要在特定区域启用外部访问分析器,请参阅《IAM用户指南》中的 “启用IAM访问分析器”。您必须在要监控资源访问的每个区域启用分析器。