本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
工作负载 OU — 应用程序帐户
通过进行简短的调查 |
下图说明了在应用程序帐户中配置AWS的安全服务(以及应用程序本身)。
应用程序帐户托管用于运行和维护企业应用程序的主要基础设施和服务。应用程序帐户和工作负载 OU 有几个主要的安全目标。首先,您可以为每个应用程序创建一个单独的帐户,以便在工作负载之间提供界限和控制,从而避免角色、权限、数据和加密密钥混合的问题。你想提供一个单独的账户容器,应用团队可以在不影响其他人的情况下获得管理自己的基础架构的广泛权限。接下来,您可以通过为安全运营团队提供监控和收集安全数据的机制来增加一层保护。采用组织跟踪和本地部署账户安全服务(Amazon GuardDuty、AWS Config、Sec AWS urity Hub、Amazon EventBridge、Acc AWS IAM ess 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安全组实现的,安全组限制了实例级别的流量。为了提高弹性,工作负载跨越两个或多个可用区,每个区域使用两个子网。
设计注意事项
-
您可以使用流量镜像从EC2实例的 elastic network interface 复制网络流量。然后,您可以将流量发送到 out-of-band安全和监控设备进行内容检查、威胁监控或故障排除。例如,您可能想要监控离开您的流量VPC或其来源在您之外的流量VPC。在这种情况下,您将镜像除在您的内部经过的流量之外的所有流量,VPC并将其发送到单个监控设备。Amazon VPC 流日志不捕获镜像流量;它们通常仅从数据包标头中捕获信息。流量镜像允许您分析包括有效载荷在内的实际流量内容,从而更深入地了解网络流量。仅为可能作为敏感工作负载一部分运行或在出现问题时需要详细诊断的EC2实例的 elastic network interface 启用流量镜像。
VPC端点
VPC端点提供了另一层安全控制以及可扩展性和可靠性。使用它们将您的应用程序VPC连接到其他AWS服务。(在应用程序账户中,使用了 S AWS ystem AWS SRA s Manager 和 Amazon S3 的VPC终端节点。)AWSKMS 终端节点是虚拟设备。它们是水平扩展、冗余且高度可用的VPC组件。它们允许您VPC和服务中的实例之间进行通信,而不会对您的网络流量施加可用性风险或带宽限制。您无需互联网网关、NAT设备、连接或 Di AWS rect Connect VPN 连接,AWS PrivateLink 即可使用VPC终端节点私下连接到支持的AWS服务和由其提供支持的终端节点服务。VPC VPC您的中的实例VPC不需要公有 IP 地址即可与其他AWS服务通信。您VPC与其他AWS服务之间的流量不会离开 Amazon 网络。
使用VPC终端节点的另一个好处是可以配置终端节点策略。VPC终端节点策略是您在创建或修改终端节点时附加到终端节点的IAM资源策略。如果您在创建终端节点时未附加IAM策略,AWS则会为您附加允许完全访问服务的默认策略。IAM终端节点策略不会覆盖或替换IAM策略或特定于服务的策略(例如 S3 存储桶策略)。它是一个单独的IAM策略,用于控制从端点到指定服务的访问权限。通过这种方式,它增加了另一层控制层,控制哪些AWS委托人可以与资源或服务进行通信。
Amazon EC2
构成我们应用程序的 Amazon EC2
使用单独的VPCs(作为账户边界的子集)按工作负载分段隔离基础架构。使用子网将应用程序层(例如 Web、应用程序和数据库)隔离在单个VPC层中。如果不应直接从 Internet 访问实例,请使用私有子网访问。要在不使用互联网网关的情况下EC2API从您的私有子网呼叫 Amazon,请使用AWS PrivateLink。使用安全组限制对您的实例的访问。使用VPC流日志监控到达您的实例的流量。使用会话管理器(S AWS ystems Manager 的一项功能)远程访问您的实例,而不必打开入站SSH端口和管理SSH密钥。使用单独的 Amazon Elastic Block Store (AmazonEBS) 卷存储操作系统和您的数据。您可以将您的AWS账户配置为强制对您创建的新EBS卷和快照副本进行加密。
实现示例
该AWSSRA代码库
应用程序负载均衡器
应用程序负载均衡器
AWSCertifice Manager (ACM) 原生集成了应用程序负载均衡器,ACM并AWSSRA用于生成和管理必要的 X.509(TLS服务器)公共证书。您可以通过 Application Load Balancer 安全策略为前端连接强制使用 TLS 1.2 和强密码。有关更多信息,请参阅弹性负载均衡文档。
设计注意事项
-
对于常见场景,例如需要在 Application Load Balancer 上使用ACM私有TLS证书的严格内部应用程序,您可以在此账户中使用从生成私有证书 AWS 私有 CA。在中 AWSSRA,ACM根私有 CA 托管在 Security Tooling 账户中,可以与整个AWS组织共享或与特定AWS账户共享,以颁发最终实体证书,如前面的 “安全工具帐户” 部分所述。
-
对于公共证书,您可以使用生成ACM并管理这些证书,包括自动轮换。或者,您可以使用SSL/TLS工具生成自己的证书,方法是创建证书签名请求 (CSR),让证书颁发机构 (CA) CSR 签名生成证书,然后将证书导入ACM或上传证书以用IAM于 Application Load Balancer。如果将证书导入ACM,则必须监控证书的到期日期,并在证书到期之前对其进行续订。
-
要获得更多防御层,您可以部署AWSWAF策略来保护 Application Load Balancer。拥有边缘策略、应用程序策略,甚至是私有或内部策略实施层,可以提高通信请求的可见性,并提供统一的策略实施。有关更多信息,请参阅博客文章 “使用AWS托管规则深入部署防御
” AWS WAF。
AWS 私有 CA
AWS Private Certificate Authority(AWS 私有 CA) 在应用程序账户中用于生成要与 Application Load Balancer 配合使用的私有证书。应用程序负载均衡器通常会提供安全内容。TLS这需要在 Application Load Balancer 上安装TLS证书。对于严格属于内部的应用程序,私有TLS证书可以提供安全通道。
在中 AWSSRA,托管 AWS 私有 CA 在 Security Tools 帐户中,并通过使用共享到应用程序帐户AWSRAM。这允许应用程序账户中的开发者向共享的私有 CA 申请证书。CAs在组织内或跨AWS账户共享有助于降低在所有AWS账户CAs中创建和管理重复项的成本和复杂性。当您使用ACM共享 CA 颁发私有证书时,证书将在请求的账户中本地生成,并ACM提供完整的生命周期管理和续订。
Amazon Inspector
AWSSRA使用 Amazon Inspec
Amazon Inspector 被置于应用程序账户中,因为它为该账户中的EC2实例提供漏洞管理服务。此外,Amazon Inspector 还会报告进出EC2实例的不想要的网络路径。
成员账户中的 Amazon Inspector 由委托管理员账户集中管理。在中 AWSSRA,安全工具帐户是委派的管理员帐户。委派的管理员帐户可以管理组织成员的调查结果数据和某些设置。这包括查看所有成员账户的汇总结果详细信息、启用或禁用对成员账户的扫描,以及查看AWS组织内扫描的资源。
设计注意事项
-
您可以使用补丁管理器(S AWS ystems Manager 的一项功能)来触发按需修补,以修复 Amazon Inspector 未修补漏洞或其他关键安全漏洞。Patch Manager 可以帮助您修补这些漏洞,而无需等待正常的修补计划。补救措施是使用 Systems Manager 自动化运行手册进行的。有关更多信息,请参阅由两部分组成的博客系列《AWS使用 Amazon Inspector 和 S AWS ystems Manager 自动进行漏洞管理和修复
》。
亚马逊 Systems Manager
AWSSystems Manager
除了这些常规自动化功能外,Systems Manager 还支持许多预防、检测和响应式安全功能。AWSS@@ ystems Manager SSM 代理(代理)是可以在EC2实例、本地服务器或虚拟机 (VM) 上安装和配置的亚马逊软件。SSM代理使 Systems Manager 可以更新、管理和配置这些资源。Systems Manager 通过扫描这些托管实例并报告(或采取纠正措施)它在补丁、配置和自定义策略中检测到的任何违规行为,帮助您维护安全与合规性。
AWSSRA使用会话管理器(Systems Manager 的一项功能)来提供基于浏览器的交互式外壳和CLI体验。这提供了安全且可审计的实例管理,而无需打开入站端口、维护堡垒主机或管理SSH密钥。AWSSRA使用 Patch Manager(Systems Manager 的一项功能)将补丁应用于操作系统和应用程序的EC2实例。
AWSSRA还使用自动化(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端点。AWSSRA使用SSM代理的VPC端点来建立通往各种AWS服务的私有网络路径。
-
通过使用自动化,您可以与组织中的其余人员分享最佳实践。您可以在运行手册中创建资源管理的最佳实践,并跨AWS区域和群组共享这些操作手册。您还可以限制 runbook 参数的允许值。对于这些用例,您可能需要在中央帐户(例如安全工具或共享服务)中创建自动化运行手册,并与AWS组织的其他成员共享。常见用例包括集中实施修补和安全更新、修复VPC配置或 S3 存储桶策略的偏差以及大规模管理EC2实例的能力。有关实现的详细信息,请参阅 S ystems Manager 文档。
Amazon Aurora
在中 AWSSRA,Amazon Aurora
设计注意事项
-
与许多数据库服务一样,Aurora 的安全管理分为三个级别。要控制谁可以对 Aurora 数据库集群和数据库实例执行亚马逊关系数据库服务 (AmazonRDS) 管理操作,您可以使用IAM。要控制哪些设备和EC2实例可以为中的 Aurora 数据库集群打开与集群终端节点和数据库实例端口的连接VPC,您可以使用VPC安全组。要对 Aurora 数据库集群的登录名和权限进行身份验证,您可以采用与 My SQL 或 Postgre 的独立数据库实例相同的方法SQL,也可以对 Aurora 我的SQL兼容版使用IAM数据库身份验证。使用后一种方法,您可以使用IAM角色和身份验证令牌对 Aurora 我的SQL兼容数据库集群进行身份验证。
Amazon S3
Amazon S3
AWS KMS
AWSSRA说明了推荐的密钥管理分发模式,其中KMS密钥与要加密的资源位于同一个AWS账户中。因此,除了包含在 AWS KMS Security Tools 帐户中外,还用于应用程序帐户。在应用程序帐户中,AWSKMS用于管理特定于应用程序资源的密钥。您可以使用密钥策略向本地应用程序角色授予密钥使用权限,并将管理和监控权限限制给密钥保管人,从而实现职责分离。
设计注意事项
-
在分布式模型中,AWSKMS密钥管理责任由应用团队承担。但是,您的中央安全团队可以负责管理和监控重要的加密事件,例如:
-
密钥中导入的KMS密钥材料即将过期。
-
密钥中的密KMS钥材料会自动旋转。
-
密KMS钥已删除。
-
解密失败率很高。
-
AWS云 HSM
AWS云
设计注意事项
-
如果您对 FIPS 140-2 第 3 级有硬性要求,也可以选择配置AWSKMS为使用 Cloud HSM 集群作为自定义密钥存储,而不是使用原生KMS密钥存储。通过这样做,您可以从AWSKMS和AWS服务之间的集成中受益,这些服务可以加密您的数据,同时负责保护您的KMS密钥。HSMs它将单租户HSMs控制与易用性和集成性相结合。AWS KMS要管理您的云HSM基础架构,您必须使用公钥基础架构 (PKI),并拥有一支具有管理经验的团队HSMs。
AWSSecrets Manager
AWSS@@ ecrets Manager
借助 Secrets Manager,您可以使用细粒度的IAM策略和基于资源的策略来管理对机密的访问权限。您可以使用自己管理的加密密钥对机密进行加密,从而帮助保护机密。AWS KMSSecrets Manager 还集成了AWS日志和监控服务,用于集中审计。
Secrets Manager 使用带有AWSKMS密钥和数据密钥的信封加密来保护每个密钥值。创建密钥时,您可以选择AWS账户和区域中的任何对称客户托管密钥,也可以使用 Secrets Manager 的AWS托管密钥。
作为最佳实践,您可以监控您的密钥以记录对它们的任何更改。这可以帮助您确保可以调查任何意外的使用或更改。可以回退不需要的更改。Secrets Manager 目前支持两项允许你监控组织和活动的AWS服务:AWS CloudTrail 和 AWS Config。 CloudTrail 将所有对 Sec API rets Manager 的调用捕获为事件,包括来自 Secrets Manager 控制台的调用和对密钥管理器的代码调用APIs。此外,还会 CloudTrail 捕获可能对您的AWS账户造成安全或合规性影响或可能帮助您解决操作问题的其他相关(非API)事件。其中包括某些密钥轮换事件和秘密版本的删除。AWSConfig 可以通过跟踪和监视 Secrets Manager 中密钥的更改来提供侦探控制。这些更改包括密钥的描述、轮换配置、标签以及与其他AWS来源(例如用于密钥轮换的KMS加密密钥或 AWS Lambda 函数)的关系。您还可以将接收来自 AWS Config 的配置和合规性更改通知的 Amazon EventBridge 配置为路由特定的机密事件以进行通知或补救操作。
在中 AWSSRA,Secrets Manager 位于应用程序帐户中,用于支持本地应用程序用例并管理接近其使用情况的密钥。在这里,将实例配置文件附加到应用程序账户中的EC2实例。然后可以在 Secrets Manager 中配置单独的密钥,以允许该实例配置文件检索密钥,例如,加入相应的 Active Directory 或LDAP域以及访问 Aurora 数据库。Secret s Manager 与亚马逊RDS集成,可在您创建、修改或还原亚马逊RDS数据库实例或多可用区数据库集群时管理用户证书。这可以帮助您管理密钥的创建和轮换,并将代码中的硬编码凭据替换为对 Secrets Manager 的编程API调用。
设计注意事项
-
通常,请在最接近密钥使用位置的账户中配置和管理 Secrets Manager。这种方法利用了当地对用例的了解,为应用程序开发团队提供了速度和灵活性。对于可能需要额外控制层的严格控制信息,可以由安全工具帐户中的 Secrets Manager 集中管理机密。
Amazon Cognito
Amazon Cognito
Amazon Cognito 为用户注册和登录提供了一个可自定义的内置用户界面。你可以使用安卓、iOS 和适用 JavaScript SDKs于 Amazon Cognito 的 Amazon Cognito 向你的应用程序添加用户注册和登录页面。Amazon Cognito Sync 是一项AWS服务和客户端库,支持跨设备同步与应用程序相关的用户数据。
Amazon Cognito 支持对静态数据和传输中的数据进行多因素身份验证和加密。Amazon Cognito 用户池提供高级安全功能,有助于保护对应用程序中账户的访问权限。这些高级安全功能提供基于风险的自适应身份验证,并保护其免受泄露凭据的使用。
设计注意事项
-
您可以创建 AWS Lambda 函数,然后使用 Lambda 触发器在用户池操作(例如用户注册、确认和登录(身份验证)期间触发该函数。AWS您可以添加身份验证质询、迁移用户和自定义验证消息。有关常见操作和用户流程,请参阅 Amazon Cognito 文档。Amazon Cognito 同步调用 Lambda 函数。
-
您可以使用 Amazon Cognito 用户池来保护小型的多租户应用程序。多租户设计的一个常见用例是运行工作负载以支持测试应用程序的多个版本。多租户设计对于使用不同数据集测试单个应用程序也很有用,这样可以充分利用您的集群资源。但是,请确保租户数量和预期容量与相关的 Amazon Cognito 服务配额保持一致。这些配额在应用程序中的所有租户之间共享。
Amazon Verified Permissions
Amazon V
您可以通过将应用程序连接到服务,API以授权用户访问请求。对于每个授权请求,该服务都会检索相关策略并评估这些策略,以根据用户、角色、群组成员资格和属性等上下文输入来确定是否允许用户对资源采取操作。您可以配置并连接已验证的权限,以便将策略管理和授权日志发送到AWS CloudTrail。如果您使用 Amazon Cognito 作为身份存储,则可以与已验证权限集成,并使用 Amazon Cognito 在应用程序的授权决策中返回的 ID 和访问令牌。您向已验证权限提供 Amazon Cognito 令牌,该权限使用令牌包含的属性来代表委托人并标识委托人的权利。有关此集成的更多信息,请参阅AWS博客文章 “使用亚马逊验证权限和 Amazon Cognito 简化细粒度授权
已验证权限可帮助您定义基于策略的访问控制 (PBAC)。PBAC是一种访问控制模型,它使用以策略形式表示的权限来确定谁可以访问应用程序中的哪些资源。PBAC将基于角色的访问控制 (RBAC) 和基于属性的访问控制 (ABAC) 结合在一起,形成了更强大、更灵活的访问控制模型。要详细了解PBAC以及如何使用已验证权限设计授权模型,请参阅AWS博客文章使用 Amazon Verified Permissions 开发应用程序时基于策略的访问控制
在中 AWSSRA,已验证的权限位于应用程序账户中,通过与 Amazon Cognito 集成,支持应用程序的权限管理。
分层防御
应用程序帐户提供了一个机会来说明AWS启用的分层防御主体。考虑一下构成中表示的简单示例应用程序核心的EC2实例的安全性,您可以看到AWS服务在分层防御中协同工作的方式。AWS SRA这种方法符合AWS安全服务的结构视图,如本指南前面的 “在AWS组织中应用安全服务” 一节中所述。
-
最里面的层是实例。EC2如前所述,EC2实例包括许多原生安全功能,无论是默认还是作为选项。示例包括 IMDSv2Nitro 系统
和 Amazon EBS 存储加密。 -
第二层保护侧重于EC2实例上运行的操作系统和软件。诸如 Amazon Inspector
和 AWSSystems Manager 之类的服务使您能够监控、报告这些配置并采取纠正措施。Inspector 会监控您的软件是否存在漏洞 ,Systems Manager 会扫描托管实例的补丁和配置状态,然后报告并采取您指定的任何纠正措施,从而帮助您努力维护安全与合规性。 -
这些实例和在这些实例上运行的软件与您的AWS网络基础设施同在。除了使用 Amazon 的安全功能外VPC,AWSSRA还利用VPC终端节点在与支持的AWS服务之间提供私有连接,并提供一种将访问策略置于网络边界的机制。VPC
-
Sec AWS urity Hub、Amazon、Config、Acc AWS IAM ess Analyzer 和 Amazon Macie 等以AWS账户为中心的服务进一步监控EC2实例 GuardDuty、软件、网络以及IAM角色和资源的活动和AWS CloudTrailAWS配置。
-
最后,除了应用程序帐户之外,AWSRAM还可以帮助控制与其他账户共享哪些资源,而IAM服务控制策略可帮助您在整个AWS组织中强制执行一致的权限。