

# SEC03-BP09 与第三方安全地共享资源
<a name="sec_permissions_share_securely_third_party"></a>

 云环境的安全性不仅仅限于您的组织。您的组织有一部分数据可能要依赖第三方来管理。管理第三方托管系统的权限，应遵循及时访问的做法，使用最低权限原则和临时凭证。通过与第三方密切合作，您既可以缩小影响范围，又可以降低意外访问的风险。

 **期望结果：**您避免使用长期 AWS Identity and Access Management（IAM）凭证，例如访问密钥和私密密钥，因为如果滥用，它们会构成安全风险。相反，可以使用 IAM 角色和临时凭证来改善您的安全状况，并最大限度地减少管理长期凭证的运营开销。在向第三方授予访问权限时，请在 IAM 信任策略中将通用唯一标识符（UUID）用作外部 ID，并将附加到角色的 IAM 策略置于您的控制之下，来确保最低权限访问。有关分析外部共享资源的规范性指南，请参阅 [SEC03-BP07 分析公共和跨账户访问](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_analyze_cross_account.html)。

 **常见反模式：**
+  采用默认的 IAM 信任策略，不附加任何条件。
+  使用长期 IAM 凭证和访问密钥。
+  重用外部 ID。

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

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

 您可能会希望允许在 AWS Organizations 外部共享资源，或授予第三方访问您账户的权限。例如，第三方提供的监控解决方案可能会需要访问您账户内部的资源。在这些情况下，请创建 IAM 跨账户角色，并仅向该角色提供第三方所需的权限。此外，使用[外部 ID 条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)定义信任策略。使用外部 ID 时，您或第三方可以为每个客户、第三方或租赁生成唯一 ID。创建唯一 ID 后，不应由除您之外的任何人控制它。第三方必须实施具体流程，以一种安全、可审计且可复制的方式将外部 ID 与客户关联起来。

 您也可以使用 [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 来管理 AWS 之外使用 AWS API 的应用程序的 IAM 角色。

 如果第三方不再需要访问您的环境，则删除该角色。应避免向第三方提供长期凭证。了解其它支持共享的 AWS 服务，例如 AWS Well-Architected Tool 支持与其它 AWS 账户[共享工作负载](https://docs.aws.amazon.com/wellarchitected/latest/userguide/workloads-sharing.html)，而 [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) 有助于您安全地与其它账户共享您拥有的 AWS 资源。

### 实施步骤
<a name="implementation-steps"></a>

1.  **使用跨账户角色提供对外部账户的访问。**[跨账户角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)可减少外部账户和第三方为服务客户而存储的敏感信息量。跨账户角色可让您将账户中 AWS 资源的访问权限安全地授予第三方（如 AWS 合作伙伴或组织内的其它账户），同时保持管理和审计该访问权限的能力。第三方可能从混合基础设施向您提供服务，或者将数据提取到一个异地位置。[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 有助于您使第三方工作负载能够安全地与 AWS 工作负载交互，并进一步减少对长期凭证的需求。

    不应使用长期凭证或与用户关联的访问密钥来提供外部账户访问权限。而应使用跨账户角色来提供跨账户访问。

1.  **进行尽职调查并确保第三方 SaaS 提供商的安全访问。**当与第三方 SaaS 提供商共享资源时，请进行彻底的尽职调查，来确保他们采用安全和负责任的方法访问您的 AWS 资源。评估他们的责任共担模式，来了解他们提供了哪些安全措施以及哪些方面属于您的责任。确保 SaaS 提供商采用安全且可审计的流程来访问您的资源，包括使用[外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) 和最低权限访问原则。使用外部 ID 有助于解决 [confused deputy problem](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/)。

    实施安全控制以确保安全访问，并在向第三方 SaaS 提供商授予访问权限时遵守最低权限原则。这可能包括使用外部 ID、通用唯一标识符（UUID）和 IAM 信任策略，从而将访问权限限制在严格必要的范围内。与 SaaS 提供商密切合作，以便建立安全访问机制，定期审查他们对您的 AWS 资源的访问权限，并进行审计以确保符合安全要求。

1.  **弃用客户提供的长期凭证。**弃用长期凭证，使用跨账户角色或 IAM Roles Anywhere。如果必须使用长期凭证，请制定相应计划，逐渐转变成基于角色进行访问。有关管理密钥的详细信息，请参阅[身份管理](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/identity-management.html)。此外，与 AWS 账户团队和第三方合作来建立风险缓解运行手册。有关应对和缓解安全事件潜在影响的规范性指南，请参阅[事件响应](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/incident-response.html)。

1.  **验证设置是否具有规范性指南，或是否实现了自动化。**外部 ID 不视为密钥，但外部 ID 不能是容易猜测的值，例如电话号码、姓名或账户 ID。将外部 ID 设置为只读字段，这样就无法为了冒充设置而更改外部 ID。

    您或第三方可以生成外部 ID。定义一个流程，确定谁负责生成 ID。无论创建外部 ID 的实体是什么，第三方都必须确保客户之间的唯一性和格式一致。

    为您账户中的跨账户访问创建的策略必须遵循[最低权限原则](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。第三方必须为您提供使用 AWS CloudFormation 模板或等效模板的角色策略文档或自动化设置机制。这减少了手动创建策略时出错的机会，并提供了可审计的跟踪。有关使用 AWS CloudFormation 模板来创建跨账户角色的更多信息，请参阅 [Cross-Account Roles](https://aws.amazon.com/blogs/apn/tag/cross-account-roles/)。

    第三方应提供一个自动化的、可审计的设置机制。但是，通过使用角色策略文档（此文档大致列出了所需的访问权限），角色设置的自动化应该由您来完成。使用 AWS CloudFormation 模板或等效模板，您应将偏差检测纳入审计实践来监控变更。

1.  **对变更做出解释。**您的账户结构、您对第三方的需求或他们提供的服务可能会发生变更。您应预料到可能会发生变动和失败，并进行相应的规划：请安排合适的人员，建立适当的流程并采用正确的技术进行应对。应定期审计您提供的访问级别，并实施检测方法，以便在发生意外变更时向您发出警报。监控并审计角色的使用情况，以及外部 ID 的数据存储状态。若发生意外变更或存在不当访问模式，您应准备暂时或永久撤销第三方访问权限。此外，还要衡量撤销操作造成的影响，包括执行该操作所需的时间、涉及的人员、成本以及对其他资源的影响。

    有关检测方法的规范性指南，请参阅《[检测最佳实践](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/detection.html)》。

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

 **相关最佳实践：**
+  [SEC02-BP02 使用临时凭证](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_unique.html) 
+  [SEC03-BP05 为您的组织定义权限护栏](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_define_guardrails.html) 
+  [SEC03-BP06 基于生命周期管理访问权限](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_lifecycle.html) 
+  [SEC03-BP07 分析公共和跨账户访问](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_analyze_cross_account.html) 
+  [SEC04 检测](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/detection.html) 

 **相关文档：**
+  [存储桶拥有者向并非其拥有的对象授予跨账户权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example4.html) 
+  [How to use trust policies with IAM roles](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) 
+  [使用 IAM 角色委托跨 AWS 账户的访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) 
+  [如何使用 IAM 访问其它 AWS 账户中的资源？](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-iam/) 
+  [IAM 安全最佳实操](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 
+  [跨账户策略评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) 
+  [如何在向第三方授予对 AWS 资源的访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) 
+  [Collecting Information from AWS CloudFormation Resources Created in External Accounts with Custom Resources](https://aws.amazon.com/blogs/apn/collecting-information-from-aws-cloudformation-resources-created-in-external-accounts-with-custom-resources/) 
+  [Securely Using External ID for Accessing AWS Accounts Owned by Others](https://aws.amazon.com/blogs/apn/securely-using-external-id-for-accessing-aws-accounts-owned-by-others/) 
+  [Extend IAM roles to workloads outside of IAM with IAM Roles Anywhere](https://aws.amazon.com/blogs/security/extend-aws-iam-roles-to-workloads-outside-of-aws-with-iam-roles-anywhere/) 

 **相关视频：**
+  [How do I allow users or roles in a separate AWS 账户 access to my AWS 账户?](https://www.youtube.com/watch?v=20tr9gUY4i0)
+  [AWS re:Invent 2018: Become an IAM Policy Master in 60 Minutes or Less](https://www.youtube.com/watch?v=YQsK4MtsELU) 
+  [AWS Knowledge Center Live: IAM Best Practices and Design Decisions](https://www.youtube.com/watch?v=xzDFPIQy4Ks) 

 **相关示例：**
+  [配置对 Amazon DynamoDB 的跨账户访问](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) 
+  [AWS STS Network Query Tool](https://github.com/aws-samples/aws-sts-network-query-tool) 