

# 身份与权限管控
<a name="a-identity-and-access-management"></a>

**Topics**
+ [SEC 2  如何管理人员和机器的身份验证？](w2aac19b7b7b5.md)
+ [SEC 3  如何管理人员和机器的权限？](w2aac19b7b7b7.md)

# SEC 2  如何管理人员和机器的身份验证？
<a name="w2aac19b7b7b5"></a>

 在访问和运行安全的 AWS 工作负载时，您需要管理两种类型的身份。了解管理和授予访问权限所需的身份类型，这有助于确保正确的身份能够在正确的条件下访问正确的资源。

人员身份：您的管理员、开发人员、操作员和最终用户需要确定身份才能访问您的 AWS 环境和应用程序。这些是您的组织成员或您与之协作的外部用户，以及通过 Web 浏览器、客户端应用程序或交互式命令行工具与您的 AWS 资源交互的用户。

机器身份：您的服务应用程序、操作工具和工作负载需要一个身份来向 AWS 服务发出请求，例如，读取数据。这些身份包括在 AWS 环境中运行的机器，例如 Amazon EC2 实例或 AWS Lambda 函数。您还可以管理需要访问权限的外部各方的机器身份。此外，您可能还有需要访问您 AWS 环境的 AWS 之外的机器。

**Topics**
+ [SEC02-BP01 使用强大的登录机制](sec_identities_enforce_mechanisms.md)
+ [SEC02-BP02 使用临时凭证](sec_identities_unique.md)
+ [SEC02-BP03 安全存储和使用密钥](sec_identities_secrets.md)
+ [SEC02-BP04 依赖集中式身份提供者](sec_identities_identity_provider.md)
+ [SEC02-BP05 定期审计和轮换凭证](sec_identities_audit.md)
+ [SEC02-BP06 利用用户组和属性](sec_identities_groups_attributes.md)

# SEC02-BP01 使用强大的登录机制
<a name="sec_identities_enforce_mechanisms"></a>

 强制执行最小密码长度策略，并指导您的用户避免使用常见或重复使用过的密码。使用软件或硬件机制实施 Multi-Factor Authentication (MFA)，以提供一层额外的保护。例如，当使用 IAM Identity Center 作为身份源时，请为 MFA 配置“背景认知”或“始终开启”设置，并允许用户注册自己的 MFA 设备以加快采用速度。当使用外部身份提供程序 (IdP) 时，请为 MFA 配置您的 IdP。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>
+  创建 Identity and Access Management（IAM）策略来实施 MFA 登录：创建客户管理的一项 IAM 策略，禁止其他所有 IAM 操作（除了允许用户在 [“我的安全凭证”页面](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html#tutorial_mfa_step1)上代入角色、更改自己的凭证、以及管理其 MFA 设备）。 
+  在身份提供者中启用 MFA：在您使用的身份提供者中启用 [MFA](https:/aws.amazon.com/iam/details/mfa) 或者启用单点登录服务，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/step1.html)。
+  配置强密码策略：配置强 [密码策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html?ref=wellarchitected) （在 IAM 和联合身份系统中）来防护暴力攻击。 
+  [定期轮换凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#rotate-credentials)：确保工作负载管理员定期更改其密码和访问密钥（如果使用）。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html) 
+  [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 
+  [AWS 账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html?ref=wellarchitected) 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html?ref=wellarchitected) 
+   [临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html?ref=wellarchitected) 
+  [安全合作伙伴解决方案：访问和访问控制](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [AWS 账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 
+  [使用 IAM Identity Center 大规模管理用户权限](https://youtu.be/aEIqeFCcK7E) 
+  [在每个层面掌握身份](https://www.youtube.com/watch?v=vbjFjMNVEpc) 

# SEC02-BP02 使用临时凭证
<a name="sec_identities_unique"></a>

 需要身份以动态获取 [临时凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)。对于员工身份，使用 AWS IAM Identity Center 或与 AWS Identity and Access Management（IAM）角色联合访问 AWS 账户。对于机器身份，例如 Amazon Elastic Compute Cloud（Amazon EC2）实例或 AWS Lambda 函数，要求使用 IAM 角色，而不是拥有长期访问密钥的 IAM 用户。

对于使用 AWS 管理控制台 的人员身份，要求用户获取临时凭证并联合到 AWS 中。您可以使用 AWS IAM Identity Center 用户门户来完成此操作。对于需要访问 CLI 的用户，请确保他们使用 [AWS CLI v2](http://aws.amazon.com/blogs/developer/aws-cli-v2-is-now-generally-available/)，它支持与 IAM Identity Center 直接集成。用户可以创建链接到 IAM Identity Center 账户和角色的 CLI 配置文件。CLI 会自动从 IAM Identity Center 检索 AWS 凭证，并代表您刷新这些凭证。这样就无需从 IAM Identity Center 控制台复制并粘贴临时 AWS 凭证。对于开发工具包，用户应依靠 AWS Security Token Service（AWS STS）来代入角色，以接收临时凭证。在某些情况下，使用临时凭证可能并不现实。您应了解存储访问密钥的风险、经常轮换这些密钥，并尽可能要求使用多重身份验证（MFA）作为一项条件。使用最后访问的信息来确定何时轮换或删除访问密钥。

当您需要授权使用方访问您的 AWS 资源时，请使用 [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html) 身份池，并为他们分配一组临时的有限权限凭证，以使他们能够访问您的 AWS 资源。通过您创建的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 控制每个用户的权限。您可以定义规则，以根据用户的 ID 令牌中的声明，为每个用户选择角色。您可以为通过身份验证的用户定义一个默认角色。对于未通过身份验证的访客用户，您还可以定义一个拥有有限权限的单独 IAM 角色。

对于机器身份，您应依靠 IAM 角色授予对 AWS 的访问权限。对于 Amazon Elastic Compute Cloud（Amazon EC2）实例，您可以使用 [适用于 Amazon EC2 的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。您可以将 IAM 角色附加到您的 Amazon EC2 实例，以使您在 Amazon EC2 上运行的应用程序能够使用 AWS 创建的临时安全凭证，并通过实例元数据服务（IMDS，Instance Metadata Service）自动进行轮换。此 [最新版本](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) 的 IMDS 可防御暴露临时凭证的漏洞，应该予以实施。要使用密钥或密码访问 Amazon EC2 实例，[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 是一种更安全的方法，它允许您使用预安装的代理来访问和管理实例，而无需使用存储的密钥。此外，您也可以使用其他 AWS 服务（例如 AWS Lambda）来配置 IAM 服务角色，以授权此服务利用临时凭证执行 AWS 操作。在无法使用临时凭证的情况下，请使用编程工具，例如 [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)，来自动完成凭证轮换和管理。

**定期审计和轮换凭证： **（最好通过自动化工具）定期验证，以确保实施正确的控制措施。对于人员身份，您应要求用户定期更改他们的密码并弃用访问密钥，以支持临时凭证。在从 IAM 用户转向集中身份时，您可以 [生成凭证报告 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html)以审计 IAM 用户。我们还建议您在身份提供者中实施 MFA 设置。您可以设置 [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) 来监控这些设置。对于机器身份，您应依靠使用 IAM 角色的临时凭证。当无法执行此操作时，需要经常审计和轮换访问密钥。

**安全存储和使用密钥：** 对于并非与 IAM 相关且无法利用临时凭证的凭证，如数据库登录，请使用一种专门用于处理密钥管理的服务，比如 [Secrets Manager](https://aws.amazon.com/secrets-manager/)。借助 Secrets Manager，您可以使用 [支持的服务](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating.html)轻松管理、轮换和安全地存储加密密钥。为访问密钥而执行的调用将记录到 AWS CloudTrail 中以用于审计，IAM 权限可以为它们授予最低访问权限。

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>
+  实施最低权限策略：向 IAM 组和角色分配具有最低权限的访问策略，以反映所定义的用户角色或职能。 
  +  [授予最小特权](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 
+  删除不必要的权限：通过删除不必要的权限来实施最低权限。 
  +  [通过查看用户活动缩小策略范围](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) 
  +  [查看角色访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#roles-delete_prerequisites) 
+  考虑使用权限边界：权限边界是一项高级功能，它使用托管策略设置基于身份的策略可向 IAM 实体授予的最高权限。实体的权限边界仅允许实体执行其基于身份的策略及其权限边界都允许的操作。 
  +  [实验室：IAM 权限边界委派角色创建](https://wellarchitectedlabs.com/Security/300_IAM_Permission_Boundaries_Delegating_Role_Creation/README.html) 
+  考虑为权限分配资源标签：您可以使用标签来控制对支持标记的 AWS 资源的访问。您还可以对 IAM 用户和角色进行标记，以控制他们可以访问的内容。 
  +  [实验室：基于 IAM 标签的 EC2 访问控制](https://wellarchitectedlabs.com/Security/300_IAM_Tag_Based_Access_Control_for_EC2/README.html) 
  +  [基于属性的访问控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html) 
+  [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 
+  [安全合作伙伴解决方案：访问和访问控制](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [AWS 账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 
+  [使用 AWS IAM Identity Center 大规模管理用户权限](https://youtu.be/aEIqeFCcK7E) 
+  [在每个层面掌握身份](https://www.youtube.com/watch?v=vbjFjMNVEpc) 

# SEC02-BP03 安全存储和使用密钥
<a name="sec_identities_secrets"></a>

 对于需要密钥（例如用于第三方应用程序的密码）的员工和机器身份，请根据最新的行业标准，在专业服务中存储并自动轮换它们。对于并非与 IAM 相关且无法利用临时凭证的凭证，如数据库登录，请使用一种专门用于处理密钥管理的服务，比如 AWS Secrets Manager。借助 Secrets Manager，您可以使用支持的服务轻松管理、轮换和安全存储加密密钥。为访问密钥而执行的调用将记录到 AWS CloudTrail 中以用于审计，IAM 权限可以为它们授予最低访问权限。 

 **未建立此最佳实践暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>
+  使用 AWS Secrets Manager： [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 是一项 AWS 服务，让您能够轻松地管理密钥。密钥可以是数据库凭证、密码、第三方 API 密钥甚至任意文本。

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html)
+  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 

# SEC02-BP04 依赖集中式身份提供者
<a name="sec_identities_identity_provider"></a>

 对于员工身份，依赖身份提供商，使您能够在集中位置管理身份。这样，您就可以更轻松地管理跨多个应用程序和服务的访问权限，因为您在从单一位置创建、管理和撤销访问权限。例如，如果有人离开了您的组织，您可以从一个位置撤销此人对所有应用程序和服务（包括 AWS）的访问权限。这样就降低了对多个凭证的需求，并提供了与现有的人力资源 (HR) 流程集成的机会。 

要与单独的 AWS 账户联合，您可以将用于 AWS 的集中身份与基于 SAML 2.0 并支持 AWS Identity and Access Management 的提供程序结合使用。无论是由您在 AWS 中托管的提供程序、AWS 外部的提供程序还是由 AWS Partner 提供的提供程序，您都可以使用，只要这些提供程序与 [SAML 2.0](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) 协议兼容。您可以使用您的 AWS 账户与您选择的提供程序之间的联合，为用户或应用程序授予访问权限，以使他们能通过使用 SAML 断言获得临时安全凭证，以调用 AWS API 操作。基于 Web 的单点登录同样受支持，因此允许用户从您的登录网站登录到 AWS 管理控制台。

要与您的 AWS Organizations 中的多个账户联合，您可以在 [AWS IAM Identity Center (IAM Identity Center)](http://aws.amazon.com/single-sign-on/)中配置您的身份源，并指定您的用户和组的存储位置。配置之后，您的身份提供程序将是您的事实来源，并可以使用跨域身份管理系统 (SCIM) v2.0 协议来 [同步](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html) 信息。随后，您可以查找用户或组，并授予他们 IAM Identity Center 访问权限，以使他们能够访问 AWS 账户和/或云应用程序。

IAM Identity Center 与 AWS Organizations 集成，这样，您就可以配置您的身份提供程序，然后为您的组织中管理的 [现有账户和新账户授予访问权限](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html) 。IAM Identity Center 为您提供了一个默认存储库，您可以使用它来管理您的用户和组。如果您选择使用 IAM Identity Center 存储库，请创建您的用户和组，并为他们分配对您的 AWS 账户和应用程序的访问权限级别，同时铭记最低权限最佳实践。您也可以选择使用 SAML 2.0 [连接到您的外部身份提供程序 ](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)，或 [连接到您的 Microsoft AD 目录](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-ad.html) （使用 AWS Directory Service）。配置之后，您可以通过您的中央身份提供者进行身份验证，以登录到 AWS 管理控制台或 AWS 移动应用程序。

要管理您的工作负载的最终用户或消费者，例如移动应用程序，您可以使用 [Amazon Cognito](http://aws.amazon.com/cognito/)。它为您的 Web 和移动应用程序提供了身份验证、授权和用户管理功能。您的用户可以直接使用用户名和密码登录，也可以通过第三方（例如 Amazon、Apple、Facebook 或 Google）登录。

 **未建立此最佳实践暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>
+  集中管理访问：创建 Identity and Access Management（IAM）身份提供者实体，以在您的 AWS 账户与身份提供者（IdP）之间建立信任关系。IAM 支持与 OpenID Connect（OIDC）或 SAML 2.0（Security Assertion Markup Language 2.0，安全断言标记语言 2.0）兼容的 IdP。 
  +  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 
+  集中应用程序访问：考虑使用 Amazon Cognito 实现应用程序集中式访问。借助 Amazon Cognito，您可以快速轻松地将用户注册、登录和访问控制添加到 Web 和移动应用程序中。 [Amazon Cognito](https://aws.amazon.com/cognito/) 可扩展至数百万用户，并支持使用社交身份提供者（如 Facebook、Google 和 Amazon）登录，以及通过企业身份提供者使用 SAML 2.0 登录。 
+  删除旧的 IAM 用户和组：在您开始使用身份提供者（IdP）后，请删除不再需要的 IAM 用户和组。 
  +  [查找未使用的凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) 
  +  [删除 IAM 组](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_manage_delete.html) 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [安全合作伙伴解决方案：访问和访问控制](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [AWS 账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 
+  [使用 AWS IAM Identity Center 大规模管理用户权限](https://youtu.be/aEIqeFCcK7E) 
+  [在每个层面掌握身份](https://www.youtube.com/watch?v=vbjFjMNVEpc) 

# SEC02-BP05 定期审计和轮换凭证
<a name="sec_identities_audit"></a>

 当您无法依赖临时凭证并需要长期凭证时，请审计凭证，以确保实施了定义的控制措施（例如多重身份验证（MFA））、凭证定期轮换且具有适当的访问级别。（最好通过自动化工具）定期验证，以确保实施正确的控制措施。对于人员身份，您应要求用户定期更改他们的密码并弃用访问密钥，以支持临时凭证。在从 AWS Identity and Access Management（IAM）用户转向集中身份时，您可以 [生成凭证报告 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html)以审计 IAM 用户。我们还建议您在身份提供者中实施 MFA 设置。您可以设置 [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) 来监控这些设置。对于机器身份，您应依靠使用 IAM 角色的临时凭证。当无法执行此操作时，需要经常审计和轮换访问密钥。

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>
+  定期审计凭证：使用凭证报告以及 Identity and Access Management（IAM）Access Analyzer 审计 IAM 凭证和权限。 
  +  [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 
  +  [获取凭证报告](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) 
  +  [实验室：自动化 IAM 用户清理](https://wellarchitectedlabs.com/Security/200_Automated_IAM_User_Cleanup/README.html?ref=wellarchitected-tool) 
+  使用访问级别审核 IAM 权限：为了提高您的 AWS 账户的安全性，请定期审核和监控每个 IAM 策略。请确保您的策略授予仅执行必要操作所需的最低权限。 
  +  [使用访问级别审核 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-access-levels-to-review-permissions) 
+  考虑自动创建和更新 IAM 资源：AWS CloudFormation 可用于自动部署 IAM 资源（包括角色和策略），以减少人为错误，因为可以验证模板和控制版本。 
  +  [实验室：自动部署 IAM 组和角色](https://wellarchitectedlabs.com/Security/200_Automated_Deployment_of_IAM_Groups_and_Roles/README.html) 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html) 
+  [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 
+  [安全合作伙伴解决方案：访问和访问控制](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 
+  [使用 AWS IAM Identity Center 大规模管理用户权限](https://youtu.be/aEIqeFCcK7E) 
+  [在每个层面掌握身份](https://www.youtube.com/watch?v=vbjFjMNVEpc) 

# SEC02-BP06 利用用户组和属性
<a name="sec_identities_groups_attributes"></a>

 随着您管理的用户数量不断增加，您需要确定如何组织这些用户，以便能够实现规模管理。将具有常见安全要求的用户置于由您的身份提供程序定义的组中，并建立机制以确保用于访问控制的用户属性（例如部门或位置）正确无误且已更新。使用这些组和属性（而不是单个用户）来控制访问权限。这样，您就可以通过使用 [权限集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html)一次性更改用户的组成员身份或属性来集中管理访问，而不是在需要更改用户的访问权限时更新多个单独策略。您可以使用 AWS IAM Identity Center（IAM Identity Center）来管理用户组和属性。IAM Identity Center 支持最常用的属性，无论是在创建用户时手动输入的属性还是使用同步引擎自动预置的属性，例如跨域身份管理系统（SCIM，Cross-Domain Identity Management）规范中定义的那些属性。 

将具有常见安全要求的用户置于由您的身份提供程序定义的组中，并建立机制以确保用于访问控制的用户属性（例如部门或位置）正确无误且已更新。使用这些组和属性（而不是单个用户）来控制访问。这使您可以通过一次性更改用户的组成员身份或属性来集中管理访问，而不是在用户的访问需要更改时更新多个单独策略。

 **未建立这种最佳实践的情况下暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>
+  如果您在使用 AWS IAM Identity Center（IAM Identity Center）配置组：IAM Identity Center 使您能够配置用户组，并为组分配所需的权限级别。 
  +  [AWS Single Sign-On – 管理身份](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) 
+  了解基于属性的访问控制（ABAC，Attribute-Based Access Control）：ABAC 是一种基于属性定义权限的授权策略。 
  +  [什么是适用于 AWS 的 ABAC？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 
  +  [实验室：基于 IAM 标签的 EC2 访问控制](https://www.wellarchitectedlabs.com/Security/300_IAM_Tag_Based_Access_Control_for_EC2/README.html) 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [开始使用 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html) 
+  [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [身份提供程序和联合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 
+  [AWS 账户根用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 

 **相关视频：** 
+  [有关大规模管理、检索和轮换密钥的最佳实践](https://youtu.be/qoxxRlwJKZ4) 
+  [使用 AWS IAM Identity Center 大规模管理用户权限](https://youtu.be/aEIqeFCcK7E) 
+  [在每个层面掌握身份](https://www.youtube.com/watch?v=vbjFjMNVEpc) 

 **相关示例：** 
+  [实验室：基于 IAM 标签的 EC2 访问控制](https://www.wellarchitectedlabs.com/Security/300_IAM_Tag_Based_Access_Control_for_EC2/README.html) 

# SEC 3  如何管理人员和机器的权限？
<a name="w2aac19b7b7b7"></a>

 管理权限以控制对需要访问 AWS 和您的工作负载的人员和机器身份的访问。权限用于控制哪些人可以在什么条件下访问哪些内容。

**Topics**
+ [SEC03-BP01 定义访问要求](sec_permissions_define.md)
+ [SEC03-BP02 授予最低访问权限](sec_permissions_least_privileges.md)
+ [SEC03-BP03 建立紧急访问流程](sec_permissions_emergency_process.md)
+ [SEC03-BP04 持续减少权限](sec_permissions_continuous_reduction.md)
+ [SEC03-BP05 为您的组织定义权限防护机制](sec_permissions_define_guardrails.md)
+ [SEC03-BP06 基于生命周期管理访问权限](sec_permissions_lifecycle.md)
+ [SEC03-BP07 分析公共和跨账户访问](sec_permissions_analyze_cross_account.md)
+ [SEC03-BP08 安全地共享资源](sec_permissions_share_securely.md)

# SEC03-BP01 定义访问要求
<a name="sec_permissions_define"></a>

管理员、最终用户或其他组件都需要访问您工作负载的每个组件或资源。明确定义哪些人员或事物应当有权访问每个组件，选择用于进行身份验证和授权的适当身份类型和方法。

 **常见反模式：** 
+ 在应用程序中进行硬编码或存储密码。
+ 向每个用户授予自定义权限。
+ 使用长期有效的凭证。

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

 管理员、最终用户或其他组件都需要访问您工作负载的每个组件或资源。明确定义哪些人员或事物应当有权访问每个组件，选择用于进行身份验证和授权的适当身份类型和方法。

应提供对组织内 AWS 账户 的常规访问，方法是使用 [联合身份访问](https://aws.amazon.com/identity/federation/) 或集中式身份提供者。您还应将身份管理集中处理，确保对于 AWS 将访问集成到员工访问生命周期中已建立了既定做法。例如，当员工转岗到具有不同访问级别的职位时，该员工的小组成员资格也应进行更改以反映新的访问要求。

 在定义非人类身份的访问要求时，请确定哪些应用程序和组件需要访问权限以及如何向其授予权限。建议使用通过最低权限访问模型构建的 IAM 角色。[AWS 托管策略](https://docs.aws.amazon.com/singlesignon/latest/userguide/security-iam-awsmanpol.html) 提供了预定义的 IAM 策略，这些策略涵盖了大多数常见使用案例。

AWS 服务（例如 [AWS Secrets Manager](https://aws.amazon.com/blogs/security/identify-arrange-manage-secrets-easily-using-enhanced-search-in-aws-secrets-manager/) 和 [AWS Systems Manager Parameter Store）](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)可以帮助在无法使用 IAM 角色的情况下，安全地将密码与应用程序或工作负载分离。在 Secrets Manager 中，您可以为凭证建立自动轮换。您可以通过 Systems Manager 使用您在创建参数时指定的唯一名称，来引用脚本、命令、SSM 文档、配置和自动化工作流中的参数。

您可以使用 AWS Identity and Access Management Roles Anywhere [获取 IAM 中的临时安全凭证，](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 这种凭证适用于在 AWS 外部运行的工作负载。您的工作负载可以使用 [IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 和 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) ，也就是您为访问 AWS 资源在 AWS 应用程序中所用的策略和角色。

 如果可能，请优先选择短期临时凭证而不是长期静态凭证。在一些场景中，需要具有编程访问权限和长期凭证的 IAM 用户，此时请使用 [访问密钥上次使用的信息](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) 来轮换和删除访问密钥。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [基于属性的访问控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 
+  [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) 
+  [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 
+  [适用于 IAM Identity Center 的 AWS 托管策略](https://docs.aws.amazon.com/singlesignon/latest/userguide/security-iam-awsmanpol.html) 
+  [AWS IAM 策略条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 
+  [IAM 使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UseCases.html) 
+  [删除不必要的凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) 
+  [策略的使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) 
+  [如何根据 AWS 账户、OU 或组织来控制对 AWS 资源的访问](https://aws.amazon.com/blogs/security/how-to-control-access-to-aws-resources-based-on-aws-account-ou-or-organization/) 
+  [使用 AWS Secrets Manager 中的增强搜索来轻松标识、安排和管理密钥](https://aws.amazon.com/blogs/security/identify-arrange-manage-secrets-easily-using-enhanced-search-in-aws-secrets-manager/) 

 **相关视频：** 
+  [在 60 分钟以内成为 IAM 策略高手](https://youtu.be/YQsK4MtsELU) 
+  [职责分离、最低权限、委托和 CI/CD](https://youtu.be/3H0i7VyTu70) 
+  [简化身份和访问管理以实施创新](https://www.youtube.com/watch?v=3qK0b1UkaE8) 

# SEC03-BP02 授予最低访问权限
<a name="sec_permissions_least_privileges"></a>

通过允许在特定条件下访问特定 AWS 资源上的特定操作，仅授予身份所需的访问权限。依靠组和身份属性来大规模动态设置权限，而不是为单个用户定义权限。例如，您可以允许一组开发人员访问，以便仅管理其项目的资源。这样，当开发人员被从组中移除时，开发人员的访问权限将在使用该组进行访问控制的任何位置被撤消，而无需对访问策略进行任何更改。

 **常见反模式：** 
+ 默认为向用户授予管理员权限。
+ 使用根账户进行日常活动。

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

建立 [最小权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 原则可确保身份只能执行完成特定任务所需的最小功能集，同时实现可用性和效率的平衡。按照此原则进行操作可以限制意外访问，并有助于确保您能够审计哪些用户有权访问哪些资源。在 AWS 中，默认情况下，身份不具有任何权限（根用户除外）。根用户的凭证应受到严格控制，并且应该仅用于少数 [特定任务](https://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.html)。

您可以使用策略来明确授予附加到 IAM 或资源实体的权限，例如联合身份或计算机所使用的 IAM 角色或者某些资源（例如 S3 存储桶）。当您创建并附加策略时，您可以指定服务操作、资源以及为使 AWS 允许访问而必须满足的条件。AWS 支持多种条件以帮助您缩小访问权限范围。例如，使用 `PrincipalOrgID` [条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)时，将会验证 AWS Organizations 的标识符，以便能够授权在您的 AWS 组织内访问。

您还可以控制 AWS 服务代表您发出的请求，例如要求 AWS CloudFormation 创建一个 AWS Lambda 函数，方法是使用 `CalledVia` 条件键。您应该对不同的策略类型进行分层，以有效地限制账户内的总体权限。例如，您可以允许应用程序团队创建他们自己的 IAM 策略，但使用 [权限边界](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/) 来限制他们可以授予的最高权限。

有几种 AWS 功能有助于您扩展权限管理并遵守最低权限原则。[基于属性的访问控制](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/) 允许您根据资源 *[标签](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)* 来限制权限，从而根据应用于资源的标签和调用的 IAM 主体做出授权决定。这使您能够将标记和权限策略结合使用，以实现精细的资源访问，而无需许多自定义策略。

另一种加速创建最低权限策略的方法是，在活动运行后基于 CloudTrail 权限生成策略。[IAM Access Analyzer 会自动基于活动生成 IAM 策略](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/)。您也可以在组织或个人账户级别，使用 IAM Access Advisor [来跟踪上次获取的关于某个具体策略的信息](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)。

确立一种节奏，按此节奏查看这些详细信息并删除不需要的权限。您应在 AWS 组织内建立权限防护机制，以控制任何成员账户中的最高权限。诸如 [AWS Control Tower 这样的服务具有规范性的托管式预防控制机制，](https://docs.aws.amazon.com/controltower/latest/userguide/guardrails.html) 并允许您定义自己的控制机制。

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) 
+  [用于编写最低权限 IAM 策略的方法](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/) 
+  [通过基于访问活动生成的 IAM 策略，IAM Access Analyzer 可让您更轻松实施最低权限](https://aws.amazon.com/blogs/security/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/) 
+  [使用上次获取的信息来细化权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) 
+  [IAM 策略类型及其使用时间](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 
+  [使用 IAM 策略模拟器测试 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) 
+  [AWS Control Tower 中的防护机制](https://docs.aws.amazon.com/controltower/latest/userguide/guardrails.html) 
+  [零信任架构：AWS 视角](https://aws.amazon.com/blogs/security/zero-trust-architectures-an-aws-perspective/) 
+  [如何使用 CloudFormation StackSets 实施最低权限原则](https://aws.amazon.com/blogs/security/how-to-implement-the-principle-of-least-privilege-with-cloudformation-stacksets/) 

 **相关视频：** 
+  [新一代权限管理](https://www.youtube.com/watch?v=8vsD_aTtuTo) 
+  [零信任：AWS 视角](https://www.youtube.com/watch?v=1p5G1-4s1r0) 
+  [如何使用权限边界限制 IAM 用户和角色以防止权限升级？](https://www.youtube.com/watch?v=omwq3r7poek) 

 **相关示例：** 
+  [实验室：创建 IAM 权限边界委派角色](https://wellarchitectedlabs.com/Security/300_IAM_Permission_Boundaries_Delegating_Role_Creation/README.html) 

# SEC03-BP03 建立紧急访问流程
<a name="sec_permissions_emergency_process"></a>

 万一发生自动化流程或管道问题，此流程允许紧急访问您的工作负载。这将帮助您依赖最低权限访问，但确保用户可以在需要时获得相应的访问级别。例如，为管理员建立用来验证和批准其请求的流程，如用于提供访问权限的紧急 AWS 跨账户角色，或者管理员在验证和批准紧急请求时所遵循的特定流程。 

 **常见反模式：** 
+ 未建立紧急流程，无法从现有身份配置中断状态中恢复。
+ 授予长期提升权限以进行问题排查或恢复。

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 建立紧急访问会采用多种形式，您应为此做好准备。首先是主要身份提供者失败。在此情况下，您应依赖具有所需权限的另一种访问方法进行恢复。此方法可以是后备身份提供者或 IAM 用户。第二种方法应受到 [严格的控制和监控，](https://aws.amazon.com/blogs/mt/monitor-and-notify-on-aws-account-root-user-activity/) 并在使用时发送通知。紧急访问身份应来自专用于此目的的账户，并且其权限只相当于专为恢复而设计的角色。

 有些紧急访问需要临时提升管理访问权限，您还应为此做好准备。一个常见的场景是，将更改权限限制为用于部署更改的自动化流程。如果此流程出现问题，用户可能需要申请提升的权限，才能还原功能。在此情况下，请建立一个流程，使用户能够申请提升的访问权限，并使管理员能够验证和批准请求。还应在流程中提供实施计划，详细说明有关预置访问权限和设置*break-glass*紧急角色的最佳实践指南 [SEC10-BP05 预置访问权限](sec_incident_response_pre_provision_access.md)。

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [在 AWS 上监控和通知](https://aws.amazon.com/blogs/mt/monitor-and-notify-on-aws-account-root-user-activity) 
+ [管理临时提升的访问权限](https://aws.amazon.com/blogs/security/managing-temporary-elevated-access-to-your-aws-environment/) 

 **相关视频：** 
+  [在 60 分钟以内成为 IAM 策略高手](https://youtu.be/YQsK4MtsELU) 

# SEC03-BP04 持续减少权限
<a name="sec_permissions_continuous_reduction"></a>

 当团队和工作负载确定他们需要哪些访问权限时，删除他们不再使用的权限，并建立审核流程以实现最低权限。持续监控和减少未使用的身份和权限。 

当团队和项目刚刚起步时，您有时会选择授予宽泛的访问权限（在开发或测试环境中），以激励创新和敏捷性。我们建议您持续评估访问权限，特别是在生产环境中，将访问权限限制为仅提供所需的权限，实现最低权限。AWS 提供了访问权限分析功能，以帮助您识别未使用的访问权限。为了帮助您识别未使用的用户、角色、权限和凭证，AWS 会分析访问活动，并提供关于访问密钥和角色的上次使用情况的信息。您可以使用 [上次访问时间戳](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-view-data.html) 来 [识别未使用的用户和角色](http://aws.amazon.com/blogs/security/identify-unused-iam-roles-remove-confidently-last-used-timestamp/)并将它们移除。此外，您还可以查看关于服务和操作的上次访问情况的信息，并 [收紧特定用户和角色的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)。例如，您可以使用关于上次访问情况的信息，确定您的应用程序角色需要执行的特定 Amazon Simple Storage Service（Amazon S3）操作，并只允许访问这些操作。AWS 管理控制台中提供了这些功能，您也可以对这些功能进行编程，以便将它们整合到您的基础设施工作流程和自动化工具中。

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>
+  配置 AWS Identity and Access Management（IAM）Access Analyzer：AWS IAM Access Analyzer 帮助您识别组织和账户中与外部实体共享的资源，例如 Amazon Simple Storage Service（Amazon S3）存储桶或 IAM 角色。 
  + [AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [基于属性的访问控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 
+  [授予最小特权](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 
+  [删除不必要的凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) 
+  [策略的使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) 

 **相关视频：** 
+  [在最多 60 分钟的时间内成为 IAM 策略高手](https://youtu.be/YQsK4MtsELU) 
+  [职责分离、最低权限、委托和 CI/CD](https://youtu.be/3H0i7VyTu70) 

# SEC03-BP05 为您的组织定义权限防护机制
<a name="sec_permissions_define_guardrails"></a>

 建立通用控件以限制对组织中所有身份的访问。例如，您可以限制对特定 AWS 区域 的访问，或防止操作员删除通用资源，例如用于您的核心安全团队的 IAM 角色。 

 **常见反模式：** 
+ 在组织管理员账户中运行工作负载。
+ 在同一账户中运行生产工作负载和非生产工作负载。

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 当您在 AWS 中的工作负载增多并管理这些额外的工作负载时，您应使用账户分离这些工作负载，并使用 AWS Organizations 管理这些账户。我们建议您建立常用权限防护机制，以限制您所在组织中的所有身份的访问权限。例如，您可以限制对特定 AWS 区域 的访问，或防止您的团队删除常见资源，例如您的核心安全团队使用的 IAM 角色。

 您可以首先实施示例服务控制策略，例如禁止用户禁用密钥服务。SCP 使用 IAM 策略语言，并允许您建立所有 IAM 主体（用户和角色）都要遵循的控制机制。您可以限制对特定服务操作和资源的访问，并根据特定的条件限制访问，以满足您所在组织的访问控制需求。如有必要，您可以为您的防护机制定义异常情况。例如，您可以为账户中除特定管理员角色以外的所有 IAM 实体限制服务操作。 

 我们建议您避免在管理账户中运行工作负载。应该使用管理账户来管理和部署将影响成员账户的安全防护机制。一些 AWS 服务支持使用委派管理员账户。在可能的情况下，您应使用此委派账户，而不是使用管理账户。您应严格限制对组织管理员账户的访问。

通过使用多账户策略，您可以更灵活地将防护机制应用于工作负载。AWS Security Reference Architecture 提供了有关如何设计账户结构的规范性指南。AWS Control Tower 等 AWS 服务提供了一些功能，可集中管理整个组织内的预防性和检测性控制机制。为组织中的每个账户或 OU 定义明确的用途，并根据该用途限制控制机制。

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [AWS Organizations](https://aws.amazon.com/organizations/) 
+ [服务控制策略（SCP，Service Control Policy）](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) 
+ [在多账户环境中充分利用服务控制策略](https://aws.amazon.com/blogs/security/get-more-out-of-service-control-policies-in-a-multi-account-environment/) 
+ [AWS Security Reference Architecture（AWS SRA）](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/welcome.html) 

 **相关视频：** 
+ [使用服务控制策略实施预防性防护机制](https://www.youtube.com/watch?v=mEO05mmbSms) 
+  [使用 AWS Control Tower 实施大规模管理](https://www.youtube.com/watch?v=Zxrs6YXMidk) 
+  [AWS Identity and Access Management 深入探讨](https://www.youtube.com/watch?v=YMj33ToS8cI) 

# SEC03-BP06 基于生命周期管理访问权限
<a name="sec_permissions_lifecycle"></a>

 将访问控制措施与操作员和应用程序生命周期以及您的集中联合身份提供者集成。例如，在用户离开组织或角色发生变化时删除用户的访问权限。 

当您使用不同的账户管理工作负载时，您有时需要在这些账户之间共享资源。我们建议您使用 [AWS Resource Access Manager (AWS RAM) 来共享资源](http://aws.amazon.com/ram/)。使用此服务，您可以轻松、安全地在您的 AWS Organizations 和组织部门内共享 AWS 资源。使用 AWS RAM，当账户移进和移出与之共享资源的组织或组织部门时，会自动授予或撤销对共享资源的访问权限。这样有助于您确保只与您的目标账户共享资源。

 **未建立此最佳实践暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>

 用户访问生命周期：针对加入的人员、工作职能变更和离开的人员实施用户访问生命周期策略，以确保只有在职用户具有访问权限。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [基于属性的访问控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 
+  [授予最小特权](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 
+  [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 
+  [删除不必要的凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) 
+  [策略的使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) 

 **相关视频：** 
+  [在最多 60 分钟的时间内成为 IAM 策略高手](https://youtu.be/YQsK4MtsELU) 
+  [职责分离、最低权限、委托和 CI/CD](https://youtu.be/3H0i7VyTu70) 

# SEC03-BP07 分析公共和跨账户访问
<a name="sec_permissions_analyze_cross_account"></a>

持续监控重点关注公共访问和跨账户访问的调查结果。将公共访问和跨账户访问限制为仅限需要此类访问的资源。

 **常见反模式：** 
+  在管理跨账户访问和对资源的公开访问时，没有遵循流程。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>

在 AWS 中，您可以授权访问另一个账户中的资源。您可以使用附加到资源的策略（例如，[Amazon Simple Storage Service（Amazon S3）存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)）授予直接跨账户访问权限，或者通过允许某个身份代入另一个账户中的 IAM 角色来授予此类访问权限。使用资源策略时，请验证将访问权限授予了您组织中的身份，并且您确定是要公开这些资源。建立一个流程来审批所有需要可公开访问的资源。

 [IAM Access Analyzer](https://aws.amazon.com/iam/features/analyze-access/) 使用 [可证明的安全性](https://aws.amazon.com/security/provable-security/) 来标识从账户的外部访问某个资源时的所有访问路径。它持续审核资源策略，并报告公开访问和跨账户访问的结果，以使您能够轻松分析可能非常宽泛的访问权限。请考虑配置 IAM Access Analyzer 与 AWS Organizations 来验证您可以监控所有账户。使用 IAM Access Analyzer，您还可以 [预览 Access Analyzer 调查结果](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html)，然后再部署资源权限。这样，您便可以验证策略更改仅按照意图，授权对您资源的公共和跨账户访问。在设计多账户访问权限时，您可以使用 [信任策略来控制在何种情况下允许代入某个角色](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)。例如，您可以限制特定的源 IP 范围才能代入角色。

 您也可以使用 [AWS Config 报告和修复资源](https://docs.aws.amazon.com/config/latest/developerguide/operational-best-practices-for-Publicly-Accessible-Resources.html) 中任何意外设置为公开访问的配置（通过 AWS Config 策略检查）。诸如 [AWS Control Tower](https://aws.amazon.com/controltower) 和 [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp.html) 等服务简化了跨 AWS Organizations 的检查和防护机制的部署，可以识别并修复公开暴露的资源。例如，AWS Control Tower 具有托管防护机制，可以检测是否有任何 [Amazon EBS 快照可由所有 AWS 账户恢复](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)。

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [使用 AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html?ref=wellarchitected)
+  [AWS Control Tower 中的防护机制](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html) 
+  [AWS 基础安全最佳实践标准](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp.html)
+  [AWS Config 托管规则](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) 
+  [AWS Trusted Advisor 检查参考](https://docs.aws.amazon.com/awssupport/latest/user/trusted-advisor-check-reference.html) 

 **相关视频：** 
+ [保护多账户环境的最佳实践](https://www.youtube.com/watch?v=ip5sn3z5FNg)
+ [深入探究 IAM Access Analyzer](https://www.youtube.com/watch?v=i5apYXya2m0)

# SEC03-BP08 安全地共享资源
<a name="sec_permissions_share_securely"></a>

 管理对跨账户或您的 AWS Organizations 内的共享资源的使用。监控共享资源并查看共享资源访问。 

 **常见反模式：** 
+  在向第三方授予跨账户访问权限时使用默认 IAM 信任策略。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>

 使用多个 AWS 账户管理工作负载时，您可能需要在账户之间共享资源。这种共享通常是某个 AWS Organizations 内的跨账户共享。多种 AWS 服务，例如 [AWS Security Hub CSPM](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-securityhub.html)、[Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_organizations.html)和 [AWS Backup](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-backup.html) 均具备与 Organizations 集成的跨账户功能。您可以使用 [AWS Resource Access Manager](https://aws.amazon.com/ram/) 分享其他共用资源，例如 [VPC 子网或中转网关连接](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-vpc)、[AWS Network Firewall](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-network-firewall)或 [Amazon SageMaker Runtime 管道](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-sagemaker)。如果您希望确保账户仅在自己的 Organizations 内共享资源，我们建议使用 [服务控制策略（SCP，Service Control Policy）](https://docs.aws.amazon.com/ram/latest/userguide/scp.html) 来防止向外部主体授予访问权限。

 在共享资源时，您应采取相关措施来防止意外的访问。我们建议您将基于身份的控制与网络控制结合起来， [为组织创建数据边界](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/building-a-data-perimeter-on-aws.html)。这些控制措施应施加严格的限制，确定哪些资源可以共享，并防止共享或暴露不应被外泄的资源。例如，作为数据边界的一部分，您可以使用 VPC 端点策略和 `aws:PrincipalOrgId` 条件，确保访问您 Amazon S3 存储桶的身份属于您的组织。

 在一些情况下，您可能需要允许 Organizations 之外的资源或者向第三方授予对您账户的访问权限。例如，合作伙伴提供的监控解决方案可能会需要访问您账户内部的资源。在这些情况下，您应该创建 IAM 跨账户角色，并仅向该角色提供第三方所需的权限。您还应该使用 [外部 ID 条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)制定信任策略。使用外部 ID 时，您应该为每个第三方生成唯一的 ID。该唯一 ID 不应由第三方提供，也不应由其控制。如果第三方不再需要访问您的环境，您应删除该角色。在任何情况下，您都应该避免向第三方提供长期 IAM 凭证。保持对其他原生支持分享功能的 AWS 服务的关注。例如，AWS Well-Architected Tool 允许 [将工作负载](https://docs.aws.amazon.com/wellarchitected/latest/userguide/workloads-sharing.html) 与其他 AWS 账户分享。

 在使用 Amazon S3 等服务时，建议 [禁用 Amazon S3 存储桶的 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) 并使用 IAM 策略来定义访问控制。[要限制对 Amazon S3 的](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) 源自 [Amazon CloudFront](https://aws.amazon.com/cloudfront/)的访问，请从来源访问身份（OAI）迁移到来源访问控制（OAC），后者支持使用 [AWS KMS](https://aws.amazon.com/kms/)的服务器端加密等附加功能。

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [存储桶拥有者向并非其拥有的对象授予跨账户权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example4.html)
+ [如何将信任策略与 IAM 结合使用](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)
+ [在 AWS 上构建数据边界](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/building-a-data-perimeter-on-aws.html)
+ [如何在向第三方授予对 AWS 资源的访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)

 **相关视频：** 
+ [使用 AWS Resource Access Manager 实现精细访问](https://www.youtube.com/watch?v=X3HskbPqR2s)
+ [使用 VPC 端点保护您的数据边界](https://www.youtube.com/watch?v=iu0-o6hiPpI)
+ [ 在 AWS 上建立数据边界 ](https://www.youtube.com/watch?v=SMi5OBjp1fI)