SEC03-BP09 与第三方安全地共享资源 - 安全性支柱

SEC03-BP09 与第三方安全地共享资源

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

期望结果:只要凭证有效且处于激活状态,任何人都可以使用与用户关联的长期 AWS Identity and Access Management(IAM)凭证、IAM 访问密钥和私有密钥。使用 IAM 角色和临时凭证可以减少维护长期凭证的工作量,包括这些敏感细节的管理和运维开销,从而帮助您改善总体安全状况。通过在 IAM 信任策略中对外部 ID 使用全局唯一标识符(UUID),并将附加到 IAM 角色的 IAM 策略置于您的控制之下,您可以审计授予第三方的访问权限,并验证该权限不会过于宽松。有关分析外部共享资源的规范性指南,请参阅SEC03-BP07 分析公共和跨账户访问

常见反模式:

  • 采用默认的 IAM 信任策略,不附加任何条件。

  • 使用长期 IAM 凭证和访问密钥。

  • 重用外部 ID。

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

实施指导

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

您也可以使用 IAM Roles Anywhere 来管理 AWS 之外使用 AWS API 的应用程序的 IAM 角色。

如果第三方不再需要访问您的环境,则删除该角色。应避免向第三方提供长期凭证。保持对其他支持共享的 AWS 服务的关注。例如,AWS Well-Architected Tool 允许与其他 AWS 账户共享工作负载AWS Resource Access Manager 可帮助您与其他账户安全共享您拥有的 AWS 资源。

实施步骤

  1. 使用跨账户角色提供对外部账户的访问。

    跨账户角色可减少外部账户和第三方为服务客户而存储的敏感信息量。跨账户角色允许您将账户中 AWS 资源的访问权限安全地授予第三方(如 AWS Partner 或组织内的其他账户),同时保持管理和审计该访问权限的能力。

    第三方可能从混合基础设施向您提供服务,或者将数据提取到一个异地位置。IAM Roles Anywhere 可帮助您使第三方工作负载能够安全地与 AWS 工作负载交互,并进一步减少对长期凭证的需求。

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

  2. 对第三方使用外部 ID。

    使用外部 ID,您就可以指定谁可以在 IAM 信任策略中代入角色。信任策略可能要求代入角色的用户声明他们所处的条件和追求的目标。它还为账户拥有者提供了一种方法,允许仅在特定情况下代入角色。外部 ID 的主要功能是解决和防止混淆代理问题。

    如果您是 AWS 账户 拥有者,并且您为第三方配置了一个角色(该角色可以访问您的和其他 AWS 账户),或者当您可以代表不同的客户代入角色时,请使用外部 ID。与第三方或 AWS Partner 合作,建立一个包括在 IAM 信任策略中的外部 ID 条件。

  3. 使用全局唯一外部 ID。

    实施一个为外部 ID(例如全局唯一标识符(UUID))生成随机唯一值的流程。第三方在不同客户之间重用外部 ID 并不能解决混淆代理问题,因为客户 A 可以通过使用客户 B 的角色 ARN 以及重复的外部 ID 来查看客户 B 的数据。在多租户环境中,第三方支持多个具有不同 AWS 账户 的客户,此时第三方必须使用不同的唯一 ID 作为每个 AWS 账户 的外部 ID。第三方负责检测重复的外部 ID,并将每个客户安全地映射到各自的外部 ID。第三方应进行测试,以验证他们只能在指定外部 ID 时代入该角色。在需要外部 ID 之前,第三方应避免存储客户角色 ARN 和外部 ID。

    外部 ID 不视为密钥,但外部 ID 不能是容易猜测的值,例如电话号码、姓名或账户 ID。将外部 ID 设置为只读字段,这样就无法为了冒充设置而更改外部 ID。

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

  4. 弃用客户提供的长期凭证。

    弃用长期凭证,使用跨账户角色或 IAM Roles Anywhere。如果必须使用长期凭证,请制定相应计划,逐渐转变成基于角色进行访问。有关管理密钥的详细信息,请参阅身份管理。同时与 AWS 账户 团队和第三方合作,建立风险缓解运行手册。有关应对和减轻安全事件潜在影响的规范性指南,请参阅事件响应

  5. 验证设置是否具有规范性指导,或是否实现了自动化。

    为您账户中的跨账户访问创建的策略必须遵循最低权限原则。第三方必须为您提供使用 AWS CloudFormation 模板或等效模板的角色策略文档或自动化设置机制。这减少了手动创建策略时出错的机会,并提供了可审计的跟踪。有关使用 AWS CloudFormation 模板创建跨账户角色的更多信息,请参阅跨账户角色

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

  6. 对变更做出解释。

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

    有关检测方法的规范性指南,请参阅检测最佳实践

资源

相关最佳实践:

相关文档:

相关视频:

相关示例: