

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

随着工作负载数量的增长，您可能需要共享对这些工作负载中资源的访问权限，或者跨多个账户多次预置资源。您可能需要进行构造来划分环境，例如划分成开发、测试和生产环境。但是，采取相互分离的构造并不会限制您安全共享权限。通过共享重叠的组件，您可以降低运维开销，并提供一致的体验，而不必猜测在多次创建同一资源时可能遗漏了什么。

 **期望结果：**通过使用安全的方法在组织内共享资源，最大限度地减少意外访问，并帮助实施数据丢失防护计划。与管理单个组件相比，降低了运维开销，减少了多次手动创建同一组件时引起的错误，并提高了工作负载的可扩展性。您可以在多点故障场景中缩短问题解决时间，并在确定何时不再需要某个组件时更有信心。有关分析外部共享资源的规范性指南，请参阅《[SEC03-BP07 分析公共和跨账户访问](sec_permissions_analyze_cross_account.md)》。

 **常见反模式：**
+  缺少对意外的外部共享进行持续监控和自动发出警报的流程。
+  缺乏关于应分享什么和不应分享什么的基准。
+  默认采用广泛的开放政策，而不是在需要时明确地分享。
+  手动创建在需要时重叠的基础资源。

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

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

 设计您的访问控制和模式，以安全地管理共享资源的使用，并且仅与可信实体共享。监控共享资源，持续检查共享资源访问权限，并在不适当或意外共享时发出警报。查看[分析公共和跨账户访问](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_analyze_cross_account.html)，以帮助您建立治理，减少仅对需要访问的资源的外部访问权限，并建立持续监控和自动警报的流程。

 AWS Organizations 内的跨账户共享受[多个 AWS 服务](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html)支持，比如 [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)。这些服务允许将数据共享到中心账户，可从中心账户访问，或从中心账户管理资源和数据。例如，AWS Security Hub CSPM 可将调查发现从个人账户转移到中心账户，在那里您可以查看所有调查发现。AWS Backup 可以对资源进行备份并在多个账户之间共享。可以使用 [AWS Resource Access Manager](https://aws.amazon.com/ram/)（AWS RAM）共享其它公用资源，如 [VPC subnets and Transit Gateway attachments](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 AI pipelines](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-sagemaker)。

 要限制您的账户只能在组织内共享资源，请使用[服务控制策略（SCP）](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 存储桶的身份属于您的组织。请务必注意，[SCP 不适用于服务相关角色或 AWS 服务主体](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#scp-effects-on-permissions)。

 使用 Amazon S3 时，请[关闭您的 Amazon S3 存储桶的 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)，并使用 IAM 策略来定义访问控制。为了从 [Amazon CloudFront](https://aws.amazon.com/cloudfront/) [限制对 Amazon S3 来源的访问](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)，请从来源访问身份（OAI）迁移到来源访问控制（OAC），后者支持使用其他功能，包括使用 [AWS Key Management Service](https://aws.amazon.com/kms/) 进行服务器端加密。

 在某些情况下，您可能希望允许在组织外部共享资源，或授予第三方访问您资源的权限。有关管理外部共享资源的权限的规范性指南，请参阅《[权限管理](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/permissions-management.html)》。

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

1.  **使用 AWS Organizations：**AWS Organizations 是一项账户管理服务，使您可以将多个 AWS 账户整合到您所创建的组织中并集中进行管理。您可以将账户分组为组织单位（OU），并将不同的策略附加到每个 OU，以帮助您满足预算、安全性和合规性需求。您还可以控制 AWS 人工智能（AI）和机器学习（ML）服务收集和存储数据的方式，并使用与 Organizations 集成的 AWS 服务的多账户管理。

1.  **将 AWS Organizations 与 AWS 服务集成：**当您使用 AWS 服务在组织的成员账户中代表您执行任务时，AWS Organizations 会在每个成员账户中为该服务创建一个 IAM 服务相关角色（SLR）。您应使用 AWS 管理控制台、AWS API 或 AWS CLI 管理可信访问。有关开启可信访问权限的规范性指南，请参阅《[将 AWS Organizations 与其它 AWS 服务结合使用](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.html)》和《[可与 Organizations 一起使用的 AWS 服务](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html)》。

1.  **建立数据边界：**数据边界提供了明确的信任和所有权边界。在 AWS 上，它通常表示为由 AWS Organizations 管理的 AWS 组织，以及访问您的 AWS 资源的任何本地网络或系统。建立数据边界的目标，是验证如果身份可信、资源可信并且网络符合预期，则支持进行访问。然而，建立数据边界并不是一个放之四海皆准的方法。根据您的特定安全风险模型和要求，评估并采纳 [Building a Perimeter on AWS whitepaper](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/welcome.html) 中概述的控制目标。您应仔细考虑自己独特的风险状况，并实施符合您安全需求的边界控制措施。

1.  **在 AWS 服务中使用资源共享并相应进行限制：**许多 AWS 服务支持您与另一账户共享资源，或以另一账户中的资源为目标，比如[亚马逊机器映像（AMI）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)和 [AWS Resource Access Manager（AWS RAM）](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)。限制 `ModifyImageAttribute` API 以指定可信账户，从而与之共享 AMI。当需要使用 AWS RAM 来将共享限制于您的组织内部时，请指定 `ram:RequestedAllowsExternalPrincipals` 条件，以帮助防止来自不可信身份的访问。有关规范性指南和注意事项，请参阅《[资源共享和外部目标](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/perimeter-implementation.html)》。

1.  **使用 AWS RAM 在一个账户中或与其它 AWS 账户安全共享：**[AWS RAM](https://aws.amazon.com/ram/) 有助于您与账户中的角色和用户以及与其它 AWS 账户安全地共享已创建的资源。在多账户环境中，AWS RAM 使您能够一次性创建资源并与其他账户共享。这种方法有助于降低运维开销，同时通过与 Amazon CloudWatch 和 AWS CloudTrail 的集成提供一致性、可见性和可审计性，使用跨账户访问时无法获得这些好处。

    如果您拥有以前使用基于资源的策略共享的资源，则可以使用 [`PromoteResourceShareCreatedFromPolicy` API](https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html) 或等效 API 将资源共享升级为完全 AWS RAM 资源共享。

    在某些情况下，您可能需要采取其他步骤来共享资源。例如，要共享加密快照，您需要[共享 AWS KMS 密钥](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html#share-kms-key)。

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

 **相关最佳实践：**
+  [SEC03-BP07 分析公共和跨账户访问](sec_permissions_analyze_cross_account.md) 
+  [SEC03-BP09 与第三方安全地共享资源](sec_permissions_share_securely_third_party.md) 
+  [SEC05-BP01 创建网络层](sec_network_protection_create_layers.md) 

 **相关文档：**
+ [存储桶拥有者向并非其拥有的对象授予跨账户权限](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 Organizations 一起使用的 AWS 服务](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html)
+ [ 在 AWS 上建立数据边界：仅允许可信身份获取公司数据 ](https://aws.amazon.com/blogs/security/establishing-a-data-perimeter-on-aws-allow-only-trusted-identities-to-access-company-data/)

 **相关视频：**
+ [使用 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)

 **相关工具：**
+ [ 数据边界策略示例 ](https://github.com/aws-samples/data-perimeter-policy-examples)