在 亚马逊云科技 中为传统应用程序迁移架构安全模型

应用程序迁移,尤其是从旧版/大型机到云的迁移,是分阶段完成的,有时会持续多年。每个阶段都会将一组应用程序、数据和其他资源迁移到云端。在过渡阶段,应用程序可能需要访问本地和基于云的资源才能执行其功能。在与客户合作时,我们发现应用程序需要访问的最常见资源是数据库、文件存储和共享服务。

这篇博文包括架构指南,用于通过在亚马逊网络服务 (亚马逊云科技) 中构建安全模型来设置对常用资源的访问权限。将传统应用程序迁移到云端时,您可以 根据自己的 安全需求应用 零信任 概念和安全最佳实践 。借助 亚马逊云科技,您可以通过集中控制来建立强大的身份和访问管理,并为您的员工和应用程序设置和管理护栏和精细的访问控制。

在大型组织中,本地应用程序依赖于基于大型机的安全服务、身份提供商 (IdP) 平台或两者的组合。

  • 基于大型机的控制设施使本地应用程序能够:
    • 识别和验证用户。
    • 通过控制工具中定义的权限建立权限(授权用户和后端程序访问受保护的资源)。
    • 后端程序使用唯一标识符(或代理密钥),并在分配给唯一标识符的权限下运行。随着应用程序迁移到云端,这种安全机制需要在 亚马逊云科技 中转换为基于角色的安全模型。您可以向角色分配权限,该角色由应用程序承担以访问 亚马逊云科技 中的资源,类似于在传统环境中定义的权限。
  • IdP 平台(例如 Octa 或 Ping Identify)使用 SAML 2.0 或 OpenID Connect (OIDC) 提供集中访问管理和身份联合等功能,用于在本地 IdP 和 亚马逊云科技 之间建立信任系统。建立联合后,本地应用程序可以使用 亚马逊云科技 身份和访问管理 (IAM) Access Management 角色访问 亚马逊云科技 资源,如下一节所述。

在 亚马逊云科技 中设置可扩展的安全模型

图 1 显示了一个本地环境,在该环境中,企业身份管理与大型机集成在一起,并为在大型机上运行的应用程序提供身份验证和授权。通常,基于大型机的安全控制(用户、资源和配置文件)会复制到企业身份平台,并通过变更数据捕获流程保持同步。

Access to AWS resources from on-premises

图 1。从本地访问 亚马逊云科技 资源

为了使您的本地应用程序能够访问 亚马逊云科技 资源,应用程序需要有效的 亚马逊云科技 证书才能发出 亚马逊云科技 API 请求。避免使用长期访问密钥(例如与 IAM 用户关联的密钥),因为在您将其删除之前,它们仍然有效。以下两种方法可用于代入 IAM 角色并获取临时安全证书以获取 亚马逊云科技 资源的访问权限:

  • 基于 SAML 的身份联合 — 亚马逊云科技 支持使用 SAM L 进行身份联合。通过代入为 SAML 联合创建的 IAM 角色来获取临时证书,它允许对组织中的用户和应用程序 进行联合 访问。此方法很有用:
    • 如果您的应用程序需要根据登录的用户限制对 亚马逊云科技 资源的访问权限。您可以根据需要定义 属性映射和其他属性
    • 如果您的应用程序使用服务账户来管理 亚马逊云科技 资源访问权限,则无论谁登录。
  • IAM 角色随处 可见 — 您的本地应用程序将交换 X.509 证书,以便它们可以代入角色并获得临时证书。如果您的应用程序需要基于服务账户访问 亚马逊云科技 资源,则此方法很有用。

在这两种情况下,经过身份验证的请求都扮演 IAM 角色,获取 临时安全证书 ,并使用 亚马逊云科技 命令行接口 (CLI) 和 A WS 开发工具包 执行某些操作。IAM 角色已附加访问亚马逊 Simple Storage Service(亚马逊 S3)、亚马逊 DynamoDB 和亚马逊关系数据库服务(亚马逊 RDS)等 亚马逊云科技 资源的权限。

临时证书在会话到期时过期。默认情况下,会话持续时间为一小时;您可以请求 更长的会话时长和会话刷新

为了更好地理解,让我们考虑图 2 中的用例,其中本地应用程序需要访问 亚马逊云科技 资源。

Access to resources that are created or already migrated to AWS from on-premises

图 2。访问已创建或已从本地迁移到 亚马逊云科技 的资源

如前所述,应用程序可以通过 SAML 或 IAM 角色随时随地获得临时安全证书。下一节介绍使用临时证书设置对图 2 中资源的访问权限。

1。亚马逊 S3

本地应用程序可以使用 REST API 或 AWS 开发工具包访问 Amazon S3 以执行某些操作(例如 getObjects 或 ListObjects):

  • 访问权限是根据与假设角色相关的权限提供的。您可以使用基于资源的策略(包括 存储桶策略、存储桶访问控制列表 (ACL) 和对象 ACL) 进一步限制访问权限。 在 Amazon S3 用户指南中了解有关访问策略指南 的更多信息 。
  • 您还可以通过 为应用程序创建 Amazon S3 接入点 来简化操作,以便在 S3 存储桶中执行对象级操作。每个接入点都有不同的权限和网络控制,S3 将这些权限和网络控制应用于通过它发出的任何请求。

2。亚马逊 RDS 和亚马逊 Aurora

亚马逊云科技 Secret s Manager 可帮助您存储 亚马逊 RDS 和亚马逊 Aurora 的证书 。您还可以设置数据库密钥的自动轮换,以满足您的安全性和合规性需求。应用程序可以使用 亚马逊云科技 开发工具包和 亚马逊云科技 CLI 检索密钥。

其他配置值可以存储在 亚马逊云科技 Systems Manager Parameter St ore 中,它为配置数据管理提供安全的分层存储,例如密码、数据库字符串和许可代码作为参数值,而不是在代码中对其进行硬编码。

要访问亚马逊 RDS 和亚马逊 Aurora,请执行以下操作:

    • 您可以在 虚拟私有云 (VPC) 中启动 Amazon RDS 数据库实例。客户端应用程序只能使用从本地到 亚马逊云科技 环境的已建立连接,才能通过互联网或私有网络访问数据库实例。
    • 本地应用程序可以 使用 Jav a 数据库 连接 (JDBC) 等数据库驱动程序连接到关系数据库。应用程序可以通过 API 调用从 亚马逊云科技 Secrets Manager 和 亚马逊云科技 Systems Manager 参数存储中 检索数据库连接详情 (例如数据库 URL、端口或证书),并将其用于数据库连接。
    • 数据库管理员可以通过代入的角色访问 亚马逊云科技 管理控制台 ,也可以从 亚马逊云科技 Secrets Manager 访问数据库证书以直接连接到数据库。对于某些管理任务(例如集群设置、备份、恢复、维护和管理),他们需要访问 Amazon RDS 管理控制台。
    • 亚马逊 RDS 还为 MariaDB、MySQL 和 PostgreSQL 提供 IAM 数据库身份验证选项。当您连接到数据库实例时,无需密码即可进行身份验证。相反,您使用身份验证令牌。有关更多信息,请访问 IAM 数据库身份验证

3。Amazon DynamoDB

应用程序可以使用临时证书使用适用于 D ynamo DB 的 亚马逊云科技 开发工具包 调用某些操作 您可以创建 VPC 终端节点,让 DynamoDB 在不暴露于公共互联网的情况下访问 DynamoDB,然后使用 VPC 终端节点 和 IAM 策略进一步限制访问权限。

结论

此博客可帮助您在 亚马逊云科技 中架构应用程序安全模型,以提供对 亚马逊云科技 中常用资源的本地访问。

在将传统应用程序迁移到云端时,您可以应用安全最佳实践和零信任概念。借助 亚马逊云科技,您可以对员工 和应用程序 进行集中和精细的访问控制,从而 建立身份和访问管理

开始在 亚马逊云科技 上构建您的安全模型:

  • 亚马逊云科技 身份和访问管理 (IAM) 入门
  • IAM 入门(用户指南)