Amazon 安全审核指南
您应该定期审查安全配置,以确保它满足您当前的业务需求。审计可以为您提供删除不需要的 IAM 用户、角色、组和策略的机会,以确保用户和软件仅拥有必需的权限。
以下是有关系统地查看和监控 Amazon 资源的准则,以便获得安全最佳实践。
目录
何时应执行安全审核
在以下情况下,您应该审核您的安全配置:
-
定期。作为一项安全最佳实践,您应该定期执行本文档中介绍的步骤。
-
如果组织中发生变动,比如有人离职。
-
如果您停止使用一个或多个独立的 Amazon 服务。这对于删除账户中用户不再需要的权限非常重要。
-
如果您在账户中添加或删除了软件,比如 Amazon EC2 实例、Amazon OpsWorks 堆栈、Amazon CloudFormation 模板等内容上的应用程序。
-
如果您怀疑某个未授权人员可能访问了您的账户。
审核准则
查看您账户的安全配置时,请遵循这些准则:
-
全面周祥。查看安全配置的各个方面,包括您可能不经常使用的那些方面。
-
请勿假设。如果您对安全配置的某些方面(例如,特定策略背后的理由或角色存在情况)不太熟悉,请调查业务需求,直到您感到满意。
-
让事情变得简单。为了使审计(和管理)变得更简单,请使用 IAM 组、一致的命名方案和简单的策略。
审核 Amazon 账户凭证
当审核您的 Amazon 账户证书时,执行以下步骤:
审核 IAM 用户
当您审计您的现有 IAM 用户时,请执行以下步骤:
-
查看附加到用户所在的组的策略。请参阅有关审核 IAM 策略的提示。
-
删除用户不需要或者可能已经公开的安全证书。例如,用于应用程序的 IAM 用户无需密码(只有登录Amazon网站才需要密码)。同样,如果用户不使用访问密钥,则不必拥有访问密钥。有关更多信息,请参阅《IAM 用户指南》中的管理 IAM 用户的密码和管理 IAM 用户的访问密钥。
您可以生成和下载列出您账户中所有 IAM 用户及其各个凭证状态(包括密码、访问密钥和 MFA 设备)的凭证报告。对于密码和访问密钥,凭证报告将显示多久前使用了密码或访问密钥。最近未使用的凭证可能适合做删除处理。有关更多信息,请参阅《IAM 用户指南》中的获取您的Amazon账户的凭证报告。
-
定期轮换(更改)用户安全凭证,如果您已与未授权人员共享它们,请立即执行此操作。有关更多信息,请参阅《IAM 用户指南》中的管理 IAM 用户的密码和管理 IAM 用户的访问密钥。
审核 IAM 组
当您审计您的 IAM 组时,请执行以下步骤:
-
查看附加到组的策略。请参阅有关审核 IAM 策略的提示。
审核 IAM 角色
当您审计您的 IAM 角色时,请执行以下步骤:
-
查看角色的信任策略。确保您知道委托人是谁,并且了解为什么账户或用户需要能够担任该角色。
-
查看角色的访问策略,以确保其向担任该角色的人授予了合适的权限,请参阅有关审核 IAM 策略的提示。
查看您的 SAML 和 OpenID Connect(OIDC)的 IAM 提供商
如果您已经创建了 IAM 实体来与 SAML 或 OIDC 身份提供商建立信任关系,请执行以下步骤:
-
删除未使用的提供商。
-
下载并查看每个 SAML 提供商的 Amazon 元数据文档,并确保这些文档反映了您当前的业务需求。或者,从您想与之建立信任关系的 SAML IdP 那里获取最新元数据文档,并在 IAM 中更新提供商。
审核移动应用程序
如果您已经创建了向 Amazon 提出请求的移动应用程序,请执行以下步骤:
-
确保移动应用程序不包含嵌入式访问密钥(即使它们位于加密存储中)。
-
通过使用为该目的设计的 API 来获取应用程序的临时证书。我们建议您使用 Amazon Cognito
来管理应用程序中的用户身份。此服务让您可以使用 Login with Amazon、Facebook、Google 或任何与 OpenID Connect(OIDC)兼容的身份提供商进行用户身份验证。然后,您可以使用 Amazon Cognito 凭证提供程序 来管理应用程序用于向Amazon发出请求的凭证。 如果您的移动应用程序不支持使用 Login with Amazon、Facebook、Google 或任何其他兼容 OIDC 的身份提供商进行身份验证,则可以创建代理服务器来将临时凭证分配给您的应用程序。
审核 Amazon EC2 安全配置
对每个 Amazon 区域执行以下步骤:
-
删除未使用的或可能已经为组织之外的人员所知的 Amazon EC2 密钥对。
-
查看 Amazon EC2 安全组:
-
删除不再满足需求的安全组。
-
删除不再满足需求的安全组规则。确保您知道为什么支持它们允许的端口、协议和 IP 地址范围。
-
-
终止不满足业务需求,或者可能已经由组织外的人员出于未批准的目的而启动的实例。请记住,如果已通过某一角色启动实例,则在该实例上运行的应用程序可以使用该角色授予的权限来访问 Amazon 资源。
-
取消不满足业务需求或者可能由组织外的人员提出的 Spot 实例请求。
-
查看 Auto Scaling 组和配置。关闭任何不再满足您的需求或者可能由组织外的某个人配置的设置。
审核其他服务中的 Amazon 策略
查看使用基于资源的策略或支持其他安全机制的服务的权限。在每种情况下,确保只有具有当前业务需求的用户和角色可以访问服务资源,并且针对资源授予的权限是满足业务需求的最低要求。
-
查看 Amazon SQS 队列策略。
-
查看 Amazon SNS 主题策略。
-
查看 Amazon KMS 密钥策略。
监控 Amazon 账户中的活动
请遵循以下监控 Amazon 活动的指导原则:
-
打开每个账户中的 Amazon CloudTrail
,并在每个支持的区域中使用它。 -
定期检查 CloudTrail 日志文件。(CloudTrail 有许多合作伙伴
,他们会提供用于读取和分析日志文件的工具。) -
启用 Amazon S3 存储桶日志记录,以监控向每个存储桶提出的请求。
-
如果您认为账户遭到未授权使用,请特别注意已颁发的临时证书。如果颁发了您无法识别的临时凭证,请禁用其权限。
-
启用每个账户中的账单警报,并设置成本阈值,以便您了解费用是否超出正常使用额度。
有关审核 IAM 策略的提示
策略功能强大且非常细微,因此,学习并了解每个策略授予的权限很重要。查看策略时请使用以下准则:
-
作为最佳实践,请将策略附加到组,而不是单个用户。如果单个用户拥有策略,请确保您了解为什么该用户需要策略。
-
确保 IAM 用户、组及角色仅拥有所需的权限。
-
使用 IAM 策略模拟器对附加到用户或组的策略进行测试。
-
请记住,用户的权限是所有适用策略的结果,适用策略包括用户策略、组策略和基于资源的策略(在 Amazon S3 存储桶、Amazon SQS 队列、Amazon SNS 主题和 Amazon KMS 密钥上)。检查应用于用户的所有策略以及了解授予单个用户的一整套权限很重要。
-
请注意,通过允许用户创建 IAM 用户、组、角色或策略,并将策略附加到主要实体,可以有效地向用户授予针对账户中所有资源的权限。也就是说,可创建策略并将其附加到用户、组或角色的用户可以为自己授予任何权限。通常,不会向您不信任的用户或角色授予可以完全访问账户中资源的 IAM 权限。以下列表中包含您应仔细检查的 IAM 权限:
-
iam:PutGroupPolicy
-
iam:PutRolePolicy
-
iam:PutUserPolicy
-
iam:CreatePolicy
-
iam:CreatePolicyVersion
-
iam:AttachGroupPolicy
-
iam:AttachRolePolicy
-
iam:AttachUserPolicy
-
-
确保策略没有向您未使用的服务授予权限。例如,如果使用 Amazon 托管策略,请确保您账户中正在使用的 Amazon 托管策略是针对您实际使用的服务的。要找出您账户中正在使用哪些Amazon托管式策略,请使用 IAM
GetAccountAuthorizationDetails
API(Amazon CLI 命令:aws iam get-account-authorization-details
)。 -
如果策略授予用户启动 Amazon EC2 实例的权限,它也可能允许
iam:PassRole
操作,但如果是这样,它应该明确列出允许用户传递给 Amazon EC2 实例的角色。 -
请谨慎地检查包括
Action
的Resource
或*
元素的任何值。这是仅授予用户需要的个人操作和资源的Allow
访问权限的最佳实践。但是,以下是可能适合在策略中使用*
的原因:-
策略旨在授予管理级权限。
-
为方便起见,通配符用于一组相似的操作(例如,
Describe*
),您会因为以这种方式引用的操作的完整列表而感到轻松。 -
通配符用于表示一类资源或一个资源路径(例如,
arn:aws:iam::
),您可以很方便地授予针对该类别或路径中所有资源的访问权限。account-id
:users/division_abc/* -
服务操作不支持资源级权限,资源的唯一选择是
*
。
-
-
检查策略名称以确保其反映了策略的功能。例如,尽管策略名称可能包括“只读”,但策略可能实际还授予了写入或更改权限。
了解更多信息
有关管理 IAM 资源的信息,请参阅以下内容:
-
《IAM 用户指南》中的 IAM 用户和组。
-
《IAM 用户指南》中的权限和策略。
-
《IAM 用户指南》中的 IAM 角色(委托和联合)。
-
《使用 IAM 策略模拟器》指南中的 IAM 策略模拟器。
有关 Amazon EC2 安全的更多信息,请参阅以下内容:
-
《适用于 Linux 实例的 Amazon EC2 用户指南》中的网络和安全性。
-
Amazon安全博客上的 Demystifying EC2 Resource-Level Permissions
。
有关监控 Amazon 账户的更多信息,请参阅 re:Invent 2013 视频演示云中的入侵检测。