工作负载 OU — 应用程序帐户 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

工作负载 OU — 应用程序帐户

通过进行简短的调查来影响 AWS 安全参考架构 (AWS SRA) 的未来。

下图说明了在应用程序帐户中配置 AWS 的安全服务(以及应用程序本身)。

应用程序账户的安全服务。

应用程序帐户托管用于运行和维护企业应用程序的主要基础设施和服务。应用程序帐户和工作负载 OU 有几个主要的安全目标。首先,您可以为每个应用程序创建一个单独的帐户,以便在工作负载之间提供界限和控制,从而避免角色、权限、数据和加密密钥混合的问题。你想提供一个单独的账户容器,应用团队可以在不影响其他人的情况下获得管理自己的基础架构的广泛权限。接下来,您可以通过为安全运营团队提供监控和收集安全数据的机制来增加一层保护。采用组织跟踪和本地部署账户安全服务(Amazon、、、Amazon GuardDuty AWS Config AWS Security Hub CSPM EventBridge、IAM Access Analyzer),这些服务由安全团队配置和监控。最后,您可以让您的企业集中设置控制。您可以使应用程序帐户与更广泛的安全结构保持一致,方法是使其成为 Workdloads OU 的成员,通过该组织单元继承相应的服务权限、约束和护栏。

设计注意事项

在您的组织中,您可能有多个业务应用程序。工作负载 OU 旨在容纳大多数特定于业务的工作负载,包括生产和非生产环境。这些工作负载可以是商用 off-the-shelf (COTS) 应用程序和您自己内部开发的自定义应用程序和数据服务的混合体。组织不同的业务应用程序及其开发环境的模式很少。一种模式是 OUs 根据您的开发环境(例如生产、暂存、测试和开发)创建多个子级,并在与不同应用程序相关的子 AWS 账户 项下使用单独 OUs 的子级。另一种常见的模式是为 OUs 每个应用程序设置单独的子级,然后 AWS 账户 为单独的开发环境使用单独的子级。确切的 OU 和账户结构取决于您的应用程序设计以及管理这些应用程序的团队。考虑一下您要实施的安全控制措施,无论它们是特定于环境还是特定于应用程序,因为像以前一样实施这些控制措施会更容易。 SCPs OUs有关组织面向工作负载的更多注意事项 OUs,请参阅 AWS 白皮书《使用 OUs多个帐户组织 AWS 环境》的 “应用程序” 部分。

应用程序 VPC

应用程序账户中的虚拟私有云 (VPC) 既需要入站访问权限(用于您正在建模的简单 Web 服务),也需要出站访问权限(用于应用程序需求或 AWS 服务 需求)。默认情况下,VPC 内的资源可以相互路由。有两个私有子网:一个用于托管 EC2 实例(应用程序层),另一个用于 Amazon Aurora(数据库层)。不同层(例如应用层和数据库层)之间的网络分段是通过 VPC 安全组完成的,VPC 安全组限制了实例级别的流量。为了提高弹性,工作负载跨越两个或多个可用区,每个区域使用两个子网。

设计注意事项

您可以使用流量镜像从 EC2 实例的 elastic network interface 复制网络流量。然后,您可以将流量发送到 out-of-band安全和监控设备进行内容检查、威胁监控或故障排除。例如,您可能想要监控离开您的 VPC 的流量或来源在您的 VPC 之外的流量。在这种情况下,您将镜像除在您的 VPC 内经过的流量之外的所有流量,并将其发送到单个监控设备。Amazon VPC 流日志不捕获镜像流量;它们通常仅从数据包标头中捕获信息。流量镜像允许您分析包括有效载荷在内的实际流量内容,从而更深入地了解网络流量。仅为可能作为敏感工作负载一部分运行或在出现问题时需要详细诊断的 EC2实例的 elastic network interface 启用流量镜像。

VPC 端点

VPC 端点提供了另一层安全控制以及可扩展性和可靠性。使用它们将您的应用程序 VPC 连接到其他 VPC AWS 服务。(在应用程序账户中, AWS SRA 使用、和 Amazon S3 的 AWS KMS VPC 终端节点。) AWS Systems Manager终端节点是虚拟设备。它们是水平扩展、冗余和高度可用的 VPC 组件。通过它们,可以在 VPC 中的实例与服务之间进行通信,而不会对网络通信带来可用性风险或带宽约束。 AWS PrivateLink 无需互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接,即可使用 VPC 终端节点将您的 VPC 私密连接到支持的 AWS 服务 和由其提供支持的 VPC 终端节点服务。您的 VPC 中的实例不需要公有 IP 地址即可与其他实例通信 AWS 服务。您的 VPC 与另一个 VPC 之间的流量 AWS 服务 不会离开 Amazon 网络。

使用 VPC 终端节点的另一个好处是可以配置终端节点策略。VPC 端点策略是一种 IAM 资源策略,您在创建或修改端点时可将它附加到端点。如果您在创建终端节点时未附加 IAM 策略,则会为您 AWS 附加允许完全访问服务的默认 IAM 策略。端点策略不会覆盖或取代 IAM 用户策略或特定于服务的策略(如 S3 存储桶策略)。它是一个单独的 IAM 策略,用于控制从终端节点到指定服务的访问权限。通过这种方式,它增加了另一层控制层,控制哪些 AWS 委托人可以与资源或服务进行通信。

Amazon EC2

构成我们应用程序的 Amazon EC2 实例使用实例元数据服务 (IMDSv2) 的版本 2。 IMDSv2 增加了对可用于尝试访问 IMDS 的四种漏洞的保护:网站应用程序防火墙、开放反向代理、服务器端请求伪造 (SSRF) 漏洞、开放第 3 层防火墙和。 NATs有关更多信息,请参阅博客文章 “通过增强实例元数据服务,为开放的防火墙、反向代理和 SSRF 漏洞添加深度防御。 EC2

使用单独的 VPCs (作为账户边界的子集)按工作负载分段隔离基础架构。可以使用子网隔离单个 VPC 中的应用程序层(例如,Web、应用程序和数据库)。如果不应直接从 Internet 访问实例,请使用私有子网访问。要在不使用互联网网关的情况下从您的私有子网调用 Amazon EC2 API,请使用 AWS PrivateLink。使用安全组限制对您的实例的访问。 使用 VPC 流日志监控到达您的实例的流量。使用会话管理器(一项功能)远程访问您的实例 AWS Systems Manager,而不必打开入站 SSH 端口和管理 SSH 密钥。使用单独的亚马逊 Elastic Block Store (Amazon EBS) 卷来存放操作系统和您的数据。 您可以 AWS 账户将您的配置为强制对您创建的新 EBS 卷和快照副本进行加密。 

实现示例

AWS SRA 代码库提供了在亚马逊中实现默认 Amazon EBS 加密的示例。 EC2它演示了如何在每个账户 AWS 账户和 AWS 区域组织中启用账户级别的默认 Amazon EBS 加密。 AWS

AWS Nitro 飞地

AWS Nitro Enclaves 是 Amazon EC2 的一项功能,允许您从实例创建隔离的执行环境(称为安全)。 EC2 Enclave 是独立的、强化的和高度受限的虚拟机。单个父 EC2 实例的 CPU 和内存被分成隔离的飞地。每个安全区都运行一个独立的内核。Enclaves 仅提供与其父实例的安全本地套接字连接。它们没有持久性存储、交互式访问或外部联网。用户不能 SSH 进入安全区,父实例的进程、应用程序或用户(root 或管理员)也无法访问安全区内的数据和应用程序。您可以在 EC2 实例中保护最敏感的数据,例如个人身份信息 (PII)、医疗保健、财务和知识产权数据。Nitro Enclaves 使您能够专注于应用程序,而不必担心与外部服务的集成。Nitro Enclaves 包括对您的软件的加密认证,这样您就可以确保只有经过授权的代码在运行,并与其集成, AWS KMS 以便只有您的飞地才能访问敏感材料。这有助于减少最敏感的数据处理应用程序的攻击面积。使用 Nitro Enclaves 不会产生额外费用。

加密认证是用于证明飞地身份的过程。认证过程是通过 Nitro Hypervisor 完成的,它为飞地生成一份签名的认证文件,用于向其他第三方或服务证明其身份。认证文档包含飞地的关键细节,例如飞地的公钥、飞地图像和应用程序的哈希值等。

使用 Nitro Enclaves 的 AWS Certificate Manager (ACM),您可以使用公有和私有证书。SSL/TLS certificates with your web applications and web servers running on EC2 instances with Nitro Enclaves. SSL/TLS certificates are used to secure network communications and to establish the identity of websites over the internet and resources on private networks. ACM for Nitro Enclaves removes the time-consuming and error-prone manual process of purchasing, uploading, and renewing SSL/TLSACM for Nitro Enclaves 可创建安全的私钥,将证书及其私钥分发到您的安全区,并管理证书续订。使用 ACM for Nitro Enclaves,证书的私钥在安全区中保持隔离,这会阻止实例及其用户对其进行访问。有关更多信息,请参阅AWS Certificate Manager Nitro Enclaves 文档中的 Nitro Enclaves

应用程序负载均衡器

应用程序负载均衡器将传入的应用程序流量分发到多个可用区域中的多个目标(例如 EC2 实例)。在 AWS SRA 中,负载均衡器的目标组是应用程序 EC2 实例。 AWS SRA 使用 HTTPS 侦听器来确保通信信道已加密。Application Load Balancer 使用服务器证书终止前端连接,然后解密来自客户端的请求,然后再将其发送到目标。

AWS Certificate Manager (ACM) 以原生方式与应用程序负载均衡器集成, AWS SRA 使用 ACM 生成和管理必要的 X.509(TLS 服务器)公共证书。您可以通过 Application Load Balancer 安全策略为前端连接强制执行 TLS 1.2 和强密码。有关更多信息,请参阅弹性负载均衡文档

设计注意事项
  • 对于常见场景,例如需要在 Application Load Balancer 上使用私有 TLS 证书的严格内部应用程序,您可以使用此账户中的 ACM 从 AWS 私有 CA生成私有证书。在 AWS SRA 中,ACM 根私有 CA 托管在 Security Tools 帐户中,可以与整个 AWS 组织共享,也可以与特定组织共享, AWS 账户 以颁发最终实体证书,如前面的 “安全工具帐户” 部分所述。

  • 对于公共证书,您可以使用 ACM 生成并管理这些证书,包括自动轮换。或者,您可以使用 SSL/TLS 工具生成自己的证书,方法是创建证书签名请求 (CSR),获取由证书颁发机构 (CA) 签署的 CSR 以生成证书,然后将证书导入 ACM 或将证书上传到 IAM 以用于 Application Load Balancer。如果将证书导入 ACM,则必须监控证书的到期日期,并在证书到期之前对其进行续订。

  • 要获得更多防御层,您可以部署 AWS WAF 策略来保护 Application Load Balancer。拥有边缘策略、应用程序策略,甚至是私有或内部策略实施层,可以提高通信请求的可见性,并提供统一的策略实施。有关更多信息,请参阅博客文章使用 f AWS 托管式规则 or 深入部署防御 AWS WAF

AWS 私有 CA

AWS 私有证书颁发机构(AWS 私有 CA) 在应用程序账户中用于生成要与 Application Load Balancer 配合使用的私有证书。应用程序负载均衡器通常会通过 TLS 提供安全内容。这需要在 Application Load Balancer 上安装 TLS 证书。对于严格属于内部的应用程序,私有 TLS 证书可以提供安全通道。

在 AWS SRA 中,托管 AWS 私有 CA 在 Security Tools 帐户中,并通过使用 AWS RAM共享到应用程序帐户。这允许应用程序账户中的开发者向共享的私有 CA 申请证书。 CAs 跨组织共享或跨组织共享 AWS 账户 有助于降低在所有组织 CAs 中创建和管理重复项的成本和复杂性 AWS 账户。当您使用 ACM 从共享 CA 颁发私有证书时,证书将在请求的账户中本地生成,并且 ACM 提供完整的生命周期管理和续订。

Amazon Inspector

AWS SRA 使用 Amazon Inspector 自动发现和扫描驻留在亚马逊弹性容器注册表 (Amazon ECR) Container Registry 中的 EC2 实例和容器映像,以查找软件漏洞和意外网络泄露。

Amazon Inspector 被置于应用程序账户中,因为它为该账户中的 EC2 实例提供漏洞管理服务。此外,Amazon Inspector 还会报告进出 EC2 实例的不想要的网络路径

成员账户中的 Amazon Inspector 由委派的管理员账户集中管理。在 AWS SRA 中,安全工具帐户是委派的管理员帐户。委派的管理员帐户可以管理组织成员的调查结果数据和某些设置。这包括查看所有成员账户的汇总结果详细信息、启用或禁用对成员账户的扫描,以及查看 AWS 组织内扫描的资源。

设计注意事项

您可以使用 Patch Manager(一项功能)触发按需修补 AWS Systems Manager,以修复 Amazon Inspector 未修补漏洞或其他关键安全漏洞。Patch Manager 可以帮助您修补这些漏洞,而无需等待正常的修补计划。补救措施是使用 Systems Manager 自动化运行手册进行的。有关更多信息,请参阅由两部分组成的博客系列《AWS 使用 Amazon Inspector 实现漏洞管理和补救》和 AWS Systems Manager

AWS Systems Manager

AWS Systems Manager可以 AWS 服务 用来查看来自多个资源的操作数据, AWS 服务 并自动执行跨 AWS 资源的操作任务。借助自动审批工作流程和运行手册,您可以努力减少人为错误,简化 AWS 资源的维护和部署任务。

除了这些常规的自动化功能外,Systems Manager 还支持许多预防、检测和响应式安全功能。AWS Systems Manager 代理(SSM 代理)是 Amazon 软件,可以在 EC2 实例、本地服务器或虚拟机 (VM) 上安装和配置。SSM Agent 让 Systems Manager 可以更新、管理和配置这些资源。Systems Manager 通过扫描这些托管实例并报告(或采取纠正措施)它在补丁、配置和自定义策略中检测到的任何违规行为,帮助您维护安全与合规性。

AWS SRA 使用会话管理器(Systems Manager 的一项功能)来提供基于浏览器的交互式外壳和 CLI 体验。这提供了安全且可审计的实例管理,无需打开入站端口、维护堡垒主机或管理 SSH 密钥。 AWS SRA 使用补丁管理器(Systems Manager 的一项功能)将补丁应用于操作系统和应用程序的 EC2 实例。

AWS SRA 还使用自动化(Systems Manager 的一项功能)来简化亚马逊 EC2 实例和其他 AWS 资源的常见维护和部署任务。自动化可以根据计划简化常见的 IT 任务,如更改一个或多个节点的状态(使用批准自动化流程)和管理节点状态。Systems Manager 包含可通过使用标签帮助您确定大型目标实例组的功能,以及可根据您定义的限制帮助实施更改的速度控制功能。Automation 提供一键式自动化,用于简化复杂任务,例如创建金色 Amazon 系统映像 (AMIs) 和恢复无法 EC2 访问的实例。此外,您可以通过授予 IAM 角色访问特定 runbook 的权限来执行某些功能,而无需直接向这些角色授予权限,从而增强运营安全性。例如,如果您希望 IAM 角色有权在补丁更新后重启特定 EC2 实例,但又不想直接向该角色授予权限,则可以创建自动化运行手册并授予该角色仅运行运行手册的权限。

设计注意事项
  • Systems Manager 依靠 EC2 实例元数据来正常运行。Systems Manager 可以使用实例元数据服务(IMDSv1 和 IMDSv2)的版本 1 或版本 2 访问实例元数据。

  • SSM 代理必须与不同的 AWS 服务 资源进行通信,例如亚马逊 EC2 消息、Systems Manager 和 Amazon S3。要进行这种通信,子网需要出站 Internet 连接或配置相应的 VPC 终端节点。 AWS SRA 使用 VPC 端点作为 SSM 代理建立通往各种服务器的专用网络路径。 AWS 服务

  • 通过使用自动化,您可以与组织中的其余人员分享最佳实践。您可以在 Runbook 中创建资源管理的最佳实践, AWS 区域 并跨组共享运行手册。您还可以限制 runbook 参数的允许值。对于这些用例,您可能需要在中央帐户(例如安全工具或共享服务)中创建自动化运行手册,并与 AWS 组织的其他成员共享。常见用例包括集中实施修补和安全更新、修复 VPC 配置或 S3 存储桶策略的偏差以及大规模管理 EC2 实例的能力。有关实现的详细信息,请参阅 S ystems Manager 文档

Amazon Aurora

在 AWS SRA 中,Amazon AuroraAmazon S3 构成了逻辑数据层。Aurora 是一个与 MySQL 和 PostgreSQL 兼容的完全托管式的关系数据库引擎。在 EC2 实例上运行的应用程序会根据需要与 Aurora 和 Amazon S3 通信。Aurora 在数据库子网组中配置了一个数据库集群。

设计注意事项

与许多数据库服务一样,Aurora 的安全管理分为三个级别。要控制谁可以对 Aurora 数据库集群和数据库实例执行亚马逊关系数据库服务 (Amazon RDS) 管理操作,您可以使用 IAM。要控制哪些设备和 EC2 实例可以为 VPC 中的 Aurora 数据库集群打开与集群终端节点和数据库实例端口的连接,您可以使用 VPC 安全组。要对 Aurora 数据库集群的登录名和权限进行身份验证,您可以采用与 MySQL 或 PostgreSQL 独立数据库实例相同的方法,也可以对兼容 Aurora MySQL 的版本使用 IAM 数据库身份验证。使用后一种方法,您可以使用 IAM 角色和身份验证令牌对与 Aurora MySQL 兼容的数据库集群进行身份验证。

Amazon S3

Amazon S3 是一项对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。它是许多基于其构建的应用程序的数据支柱 AWS,适当的权限和安全控制对于保护敏感数据至关重要。有关推荐的 Amazon S3 安全最佳实践,请参阅文档在线技术讲座博客文章中的深入探讨。最重要的最佳做法是阻止对 S3 存储桶的过于宽松的访问(尤其是公共访问)。

AWS KMS

AWS SRA 说明了推荐的密钥管理分发模式,其中密钥与要加密的资源 AWS KMS key 位于同一个 AWS 账户 分发模式中。因此,除了包含在 AWS KMS Security Tools 帐户中外,还用于应用程序帐户。在应用程序帐户中, AWS KMS 用于管理特定于应用程序资源的密钥。您可以使用密钥策略向本地应用程序角色授予密钥使用权限,并将管理和监控权限限制给密钥保管人,从而实现职责分离。 

设计注意事项

在分布式模型中, AWS KMS 密钥管理责任由应用团队承担。但是,您的中央安全团队可以负责管理和监控重要的加密事件,例如:

  • KMS 密钥中导入的密钥材料临近到期日期。

  • KMS 密钥中的密钥材料已自动轮换。

  • AKMS 密钥已删除。

  • 解密失败率很高。

AWS CloudHSM

AWS CloudHSM在中提供了托管硬件安全模块 (HSMs) AWS Cloud。它允许您使用经过验证的 FIPS 140-2 3 级加密密钥来生成和使用自己的加密密钥 HSMs ,该密钥 AWS 由您控制访问权限。您可以使用 AWS CloudHSM 卸载 Web 服务器的 SSL/TLS 处理负载。这减轻了 Web 服务器的负担,并通过将 Web 服务器的私钥存储在中来提供额外的安全性 AWS CloudHSM。同样,如果您需要充当证书颁发机构,则可以在网络账户的入站 VPC 中部署 HSM 来存储您的私钥并签署证书请求。 AWS CloudHSM

设计注意事项

如果您对 FIPS 140-2 第 3 级有硬性要求,也可以选择将 AWS CloudHSM 集群配置 AWS KMS 为使用自定义密钥存储,而不是使用原生 KMS 密钥存储。通过这样做,您可以受益于加密数据的 AWS KMS 和 AWS 服务 之间的集成,同时负责保护您的 HSMs KMS 密钥。它将单租户 HSMs 控制与易用性和集成性相结合。 AWS KMS要管理您的 AWS CloudHSM 基础架构,您必须使用公钥基础架构 (PKI),并拥有一支具有管理 HSMs经验的团队。

AWS Secrets Manager

AWS Secrets Manager帮助您保护访问应用程序、服务和 IT 资源所需的凭证(机密)。该服务使您能够在数据库凭证、API 密钥和其他密钥的整个生命周期中高效地轮换、管理和检索它们。您可以将代码中的硬编码凭据替换为对 Secrets Manager 的 API 调用,以编程方式检索密钥。这有助于确保密码不会被正在检查您的代码的人泄露,因为密码中已不存在该机密。此外,Secrets Manager 可以帮助您在不同环境(开发、预生产、生产)之间移动应用程序。您可以确保环境中存在适当命名和引用的密钥,而不必更改代码。这提高了应用程序代码在不同环境中的一致性和可重用性,同时在测试代码后需要更少的更改和人为交互。

借助 Secrets Manager,您可以使用精细的 IAM 策略和基于资源的策略来管理对机密的访问权限。您可以使用自己管理的加密密钥对机密进行加密,从而帮助保护机密。 AWS KMS Secrets Manager 还集成了 AWS 日志和监控服务,用于集中审计。

Secrets Manager 使用信封加密 AWS KMS keys 和数据密钥来保护每个密钥值。创建密钥时,您可以选择 AWS 账户 和区域中的任何对称客户托管密钥,也可以将托管密钥用于 Secret AWS s Manager。

作为最佳实践,您可以监控您的密钥以记录对它们的任何更改。这可以帮助您确保可以调查任何意外的使用或更改。可以回退不需要的更改。Secrets Manager 目前支持两种 AWS 服务 允许你监控自己的组织和活动的功能: AWS CloudTrail 和 AWS Config。 CloudTrail 将 Secrets Manager 的所有 API 调用捕获为事件,包括来自 Secrets Manager 控制台的调用和对 Secrets Manager 的代码调用 APIs。此外,还会 CloudTrail 捕获其他可能对您的安全或合规性产生影响 AWS 账户 或可能帮助您解决操作问题的相关(非 API)事件。其中包括某些密钥轮换事件和秘密版本的删除。 AWS Config 可以通过跟踪和监视 Secrets Manager 中密钥的更改来提供侦探控制。这些更改包括密钥的描述、轮换配置、标签以及与其他 AWS 来源(例如 KMS 加密密钥或用于轮换密钥的 AWS Lambda 函数)的关系。您还可以将接收配置和合规性更改通知的 Amazon EventBridge 配置为路由特定的机密事件以进行通知或补救操作。 AWS Config

在 AWS SRA 中,Secrets Manager 位于应用程序帐户中,用于支持本地应用程序用例并管理接近其使用情况的密钥。在这里,将实例配置文件附加到应用程序账户中的 EC2 实例。然后可以在 Secrets Manager 中配置单独的密钥,以允许该实例配置文件检索密钥,例如,加入相应的 Active Directory 或 LDAP 域并访问 Aurora 数据库。Secret s Manager 与 Amazon RDS 集成,可在您创建、修改或还原 Amazon RDS 数据库实例或多可用区数据库集群时管理用户证书。这可以帮助您管理密钥的创建和轮换,并将代码中的硬编码凭据替换为对 Secrets Manager 的编程 API 调用。 

设计注意事项

通常,请在最接近密钥使用位置的账户中配置和管理 Secrets Manager。这种方法利用了当地对用例的了解,为应用程序开发团队提供了速度和灵活性。对于可能需要额外控制层的严格控制信息,可以由安全工具帐户中的 Secrets Manager 集中管理机密。

Amazon Cognito

Amazon Cognito 允许您快速高效地将用户注册、登录和访问控制添加到您的网络和移动应用程序中。Amazon Cognito 可扩展到数百万用户,并支持通过社交身份提供商(例如苹果、Facebook、谷歌和亚马逊)以及通过 SAML 2.0 和 OpenID Connect 登录企业身份提供商。Amazon Cognito 的两个主要组成部分是用户池身份池。用户池是为应用程序用户提供注册和登录选项的用户目录。身份池使您能够向您的用户授予对其他人的访问权限 AWS 服务。您可以单独或配合使用身份池和用户池。有关常见使用场景,请参阅 Amazon Cognito 文档

Amazon Cognito 为用户注册和登录提供了一个可自定义的内置用户界面。你可以使用安卓、iOS 和适用 JavaScript SDKs 于 Amazon Cognito 的 Amazon Cognito 向你的应用程序添加用户注册和登录页面。Amazon Cognito Sync 是一个 AWS 服务 和客户端库,它支持跨设备同步与应用程序相关的用户数据。

Amazon Cognito 支持对静态数据和传输中的数据进行多因素身份验证和加密。 Amazon Cognito 用户池提供高级安全功能,有助于保护对应用程序中用户账户的访问。这些高级安全功能提供基于风险的自适应身份验证,并保护其免受泄露凭据的使用。 

设计注意事项
  • 您可以创建一个 AWS Lambda 函数,然后使用 Lambda 触发器在用户池操作期间触发该函数,例如用户注册、确认和登录(身份验证)。您可以添加身份验证质询、迁移用户和自定义验证消息。有关常见操作和用户流程,请参阅 Amazon Cognito 文档。Amazon Cognito 同步调用 Lambda 函数。

  • 您可以使用 Amazon Cognito 用户池来保护小型的多租户应用程序。多租户设计的一个常见用例是运行工作负载以支持测试应用程序的多个版本。多租户设计对于使用不同数据集测试单个应用程序也很有用,这样可以充分利用您的集群资源。但是,请确保租户数量和预期容量与相关的 Amazon Cognito 服务配额保持一致。这些配额在应用程序中的所有租户之间共享。

Amazon Verified Permissions

Amazon V erified Permissions 是一项可扩展的权限管理和精细授权服务,适用于您构建的应用程序。开发人员和管理员可以使用 Cedar(一种专门构建且以安全为先的开源策略语言),通过角色和属性来定义更精细、更具情境感知能力、基于策略的访问控制。通过外部化授权和集中策略管理和管理,开发人员可以更快地构建更安全的应用程序。Verified Permissions 包括架构定义、策略声明语法和可扩展到数百万个权限的自动推理,因此您可以强制执行默认拒绝和最小权限原则。该服务还包括评估模拟器工具,可帮助您测试授权决策和作者政策。这些功能有助于部署深入、细粒度的授权模型,以支持您的信任目标。Verified Permissions 将权限集中在策略存储中,并帮助开发人员使用这些权限来授权用户在其应用程序中执行的操作。

您可以通过 API 将您的应用程序连接到服务,以授权用户访问请求。对于每个授权请求,该服务都会检索相关策略并评估这些策略,以根据用户、角色、群组成员资格和属性等上下文输入来确定是否允许用户对资源采取操作。您可以配置并连接已验证的权限,以便将策略管理和授权日志发送到 AWS CloudTrail。如果您使用 Amazon Cognito 作为身份存储,则可以与已验证权限集成,并使用 Amazon Cognito 在应用程序的授权决策中返回的 ID 和访问令牌。您向已验证权限提供 Amazon Cognito 令牌,该权限使用令牌包含的属性来代表委托人并标识委托人的权利。有关此集成的更多信息,请参阅 AWS 博客文章 “使用亚马逊验证权限和 Amazon Cognito 简化细粒度授权”。 

已验证权限可帮助您定义基于策略的访问控制 (PBAC)。PBAC 是一种访问控制模型,它使用以策略形式表示的权限来确定谁可以访问应用程序中的哪些资源。PBAC 将基于角色的访问控制 (RBAC) 和基于属性的访问控制 (ABAC) 结合在一起,从而形成了更强大、更灵活的访问控制模型。要详细了解 PBAC 以及如何使用已验证权限设计授权模型,请参阅 AWS 博客文章使用 Amazon Verified Permissions 开发应用程序时基于策略的访问控制

在 AWS SRA 中,已验证权限位于应用程序账户中,通过与 Amazon Cognito 集成,支持应用程序的权限管理。

分层防御

应用程序帐户提供了一个机会来说明 AWS 启用的分层防御主体。考虑构成 AWS SRA 中表示的简单示例应用程序核心的 EC2 实例的安全性,您可以看到在分层防御中协同 AWS 服务 工作的方式。这种方法符合 AWS 安全服务的结构视图,如本指南前面的 “在AWS 组织中应用安全服务” 一节中所述。

  • 最里面的层是实例。 EC2 如前所述, EC2 实例包括许多原生安全功能,无论是默认还是作为选项。示例包括 IMDSv2Nitro 系统Amazon EBS 存储加密。

  • 第二层保护侧重于 EC2 实例上运行的操作系统和软件。诸如 Amazon Inspec tor 之类的服务AWS Systems Manager使您能够监控、报告这些配置并采取纠正措施。Amazon Inspector 会监控您的软件是否存在漏洞,Systems Manager 会扫描托管实例的补丁配置状态,然后报告并采取您指定的任何纠正措施,从而帮助您努力维护安全与合规性。

  • 这些实例和在这些实例上运行的软件与您的 AWS 网络基础设施同在。除了使用 Amazon VPC 的安全功能外, AWS SRA 还利用 VPC 终端节点在 VPC 和受支持的 VPC 之间提供私有连接 AWS 服务,并提供一种将访问策略置于网络边界的机制。

  • EC2 实例、软件、网络以及 IAM 角色和资源的活动和配置由 AWS 账户专注于服务的进一步监控,例如、、、Amazon AWS Security Hub CSPM、、 AWS Security Hub GuardDuty AWS CloudTrail AWS Config、IAM Access Analyzer 和 Amazon Macie。

  • 最后,除了应用程序账户之外, AWS RAM 还有助于控制与其他账户共享哪些资源,而 IAM 服务控制策略可帮助您在整个 AWS 组织中强制执行一致的权限。