保护我的 AWS 账户及其资源的最佳实践有哪些?
上次更新日期:2022 年 8 月 22 日
保护我的 AWS 账户及其资源的最佳实践有哪些?
-或者-
我想保护我的 AWS 资源或账户免受未经授权活动的侵害。
简短描述
AWS 提供许多有助于保护账户安全的工具。但是,由于在默认情况下,许多这些措施处于未激活状态,因此您必须采取直接行动来实施它们。以下是在保护账户及其资源的安全时要考虑的一些最佳实践:
- 保护您的密码和访问密钥
- 在 AWS 账户根用户和具有 AWS Identity and Access Management(IAM)交互访问权限的任何用户上激活多重身份验证(MFA)
- 限制 AWS 账户根用户对您的资源的访问
- 经常审核 IAM 用户及其策略
- 创建 Amazon Elastic Block Store(Amazon EBS)快照、Amazon Relational Database Service(Amazon RDS)快照和 Amazon Simple Storage Service(Amazon S3)对象版本
- 使用 AWS Git 项目扫描未经授权使用的证据
- 监控账户及其资源
注意:如果您使用的是 AWS Identity Center 或 IAM 联合用户,则 IAM 用户的最佳实践也适用于联合用户。
解决方法
保护您的密码和访问密钥
用于访问账户的两个主要类型的凭证是密码和访问密钥。密码和访问密钥可以应用于 AWS 根用户账户和单个 IAM 用户。最佳实践是像保护任何其他个人机密数据一样安全地保护密码和访问密钥。切勿将它们嵌入可公开访问的代码(例如,公有 Git 存储库)。为增加安全性,请经常轮换和更新所有安全凭证。
如果您怀疑密码或访问密钥对已公开,请按照以下步骤操作:
- 轮换所有访问密钥对。
- 更改 AWS 账户根用户密码。
- 按照发现我的 AWS 账户中存在未经授权的活动时该怎么办?中的说明进行操作
激活 MFA
激活 MFA 可以帮助保护账户安全,防止未经授权的用户在没有安全令牌的情况下登录账户。
为了提高安全性,最佳实践是配置 MFA 以帮助保护您的 AWS 资源。您可以为 IAM 用户和 AWS 账户根用户激活虚拟 MFA。为根用户激活 MFA 只会影响根用户凭证。账户中的 IAM 用户是具有自己凭证的不同身份,每个身份都有自己的 MFA 配置。
有关更多信息,请参阅为 AWS 中的用户激活 MFA 设备。
限制根用户对您的资源的访问
根用户凭证(根密码或根访问密钥)授予无限制访问您的账户及其资源的权限。最佳实践是在确保安全的同时最大限度地减少根用户对账户的访问。
考虑以下策略来限制根用户对账户的访问:
- 使用 IAM 用户对您的账户进行日常访问。如果您是唯一访问该账户的人员,请参阅创建第一个 IAM 管理员用户和用户组。
- 避免使用根访问密钥。相反地,应将其轮换为 IAM 访问密钥,然后删除未使用的访问密钥。
- 对账户的根用户使用 MFA 设备。
有关更多信息,请参阅保护根用户凭证,不要将其用于日常任务。
经常审核 IAM 用户及其策略
使用 IAM 用户时,请考虑以下最佳实践:
- 确保为 IAM 用户提供最严格的策略,只包含用户完成预期任务所必需的权限(最低权限)。
- 使用 AWS IAM Access Analyzer 分析现有权限。有关更多信息,请参阅通过基于访问活动生成的 IAM 策略,IAM Access Analyzer 让您可以轻松实施最低权限。
- 为每组任务创建不同的 IAM 用户。
- 当多个策略与同一个 IAM 用户关联时,请注意,严格程度最低的策略优先。
- 频繁审计您的 IAM 用户及其权限,找出未使用的凭证。
- 如果您的 IAM 用户需要访问控制台,您可以设置允许访问控制台的密码,同时限制该用户的权限。
- 为每个有权访问控制台的 IAM 用户设置各自的 MFA 设备。
您可以使用 IAM 控制台中的可视化编辑器来帮助您定义安全策略。有关常见业务使用案例以及您可用于解决这些问题的策略的示例,请参阅 IAM 商用案例。
创建 Amazon EBS 快照、Amazon RDS 快照和 Amazon S3 对象版本
要创建 EBS 卷的时间点快照,请参阅创建 Amazon EBS 快照。
要激活 Amazon RDS 自动快照并设置备份保留期,请参阅激活自动备份。
要创建用于备份和存档的标准 S3 桶,请参阅创建用于备份和存档的标准 S3 桶。要创建 S3 桶版本控制,请参阅在 S3 桶中使用版本控制。
要使用控制台创建 AWS Backup 计划,请参阅创建计划备份。要使用 AWS 命令行界面(AWS CLI)创建 AWS Backup 计划,请参阅可以如何使用 AWS CLI 创建 AWS Backup 计划或运行按需作业?
使用 AWS Git 项目防止未经授权的使用
AWS 提供了可供您安装的 Git 项目,以帮助保护账户:
- Git Secrets 可以扫描合并项、提交项和提交消息以获取机密信息(访问密钥)。如果 Git Secrets 检测到被禁止使用的正则表达式,会拒绝将这些提交发布到公有存储库。
- 使用 AWS Step Functions 和 AWS Lambda 通过 AWS Health 或 AWS Trusted Advisor 生成 Amazon CloudWatch Events。如果有证据表明您的访问密钥已暴露,则这些项目可以帮助您自动检测、录入事件及缓解事件风险。
监控账户及其资源
最好主动监控您的账户及其资源,以检测任何异常活动或对账户的访问。考虑以下一个或多个解决方案:
- 创建账单警报以监控您的估计 AWS 费用,以在账单超出规定的阈值时自动收到通知。有关更多信息,请参阅 Amazon CloudWatch 常见问题。
- 为您的 AWS 账户创建一个跟踪,以跟踪哪些凭证用于启动特定 API 调用以及何时使用这些凭证。这样做可帮助您确定该使用是意外还是未授权。您可以采取适当的步骤缓解这种情况。有关更多信息,请参阅 AWS CloudTrail 中的安全性最佳实践。
- 将 CloudTrail 与 CloudWatch 结合使用,以监控访问密钥使用情况,并接收异常 API 调用的提醒。
- 激活资源级日志记录(例如,在实例或操作系统级别)和 Amazon S3 默认桶加密。
- 在所有支持的区域中为您的 AWS 账户激活 Amazon GuardDuty。开启后,GuardDuty 开始分析来自 AWS CloudTrail 管理和 Amazon S3 数据事件、Amazon VPC 流日志和 DNS 日志的独立数据流,以生成安全调查结果。主要检查类别包括账户受损、实例受损和恶意入侵。有关更多信息,请参阅 Amazon GuardDuty 常见问题。
注意:最佳实践是对所有区域开启日志记录,而不仅仅是您经常使用的区域。