2018 年,我决定利用业余时间帮助家人实现业务现代化。在此过程中,我想积累一些 AWS 经验和了解。 最终,我发现我几乎所有的空闲时间都花在学习 AWS 云基础设施概念上。我只剩下一小部分时间可以专注于构建我最初设想的基于云的现代解决方案。当我为该应用计划更多功能请求时,我意识到我需要一种更好的方法。 2020 年初,我发现了 由于我不需要担心底层云配置,所以我可以集中时间添加新功能。 Heroku。 Heroku 生态系统非常适合我的简单用例,但我开始怀疑更复杂的用例。如果一 以提供支付处理解决方案,那该怎么办? 组安全和私有服务 需要相互交互 这种用例会迫使我生活在三大云服务提供商之一的生态系统中吗?我会找出答案。 安全微服务的现状 多年来,我很幸运能够在一个重视 生命周期的环境中工作。DevOps 团队为我处理所有与云相关的事务,因此我可以专注于设计和构建微服务以满足客户的需求。 DevOps 在我那段时间里,这种环境只是例外,而不是常态。我刚刚在浏览器中搜索了“缺乏云基础设施知识的公司”,结果得出了一些相当令人惊讶的结论: 云计算专业知识严重短缺。 缺乏云技能会导致云原生服务的性能受到严重影响。 云安全是四分之一的公司面临的挑战。 搜索结果中排名靠前的原因是 ,以及团队需要进行 才能有效工作。大多数团队所需的培训通常会被搁置,因为客户需求和交付成果被放在了更重要的位置。 缺乏对核心云概念的理解 关键培训 采用当前的方法,大多数云实施被迫以较慢的速度发展,并且经常面临未知的漏洞。 目前在云中保护微服务的状况并不令人满意。 安全微服务的理想状态 云原生解决方案的理想状态应该遵循我几年前制定的个人使命宣言: “将时间集中在提供能够扩展知识产权价值的功能上。其他一切都要利用框架、产品和服务。” – J. Vester 在此背景下,那些有志于推动云原生解决方案的人应该能够以与企业目标一致的步伐前进。他们不应该因与底层云基础设施相关的学习曲线而放慢脚步。 那么,当我们面对包含 的云解决方案时,情况会是什么样子呢?所有这些微服务都需要 ,并 (如 SOC、ISO、PCI 或 HIPAA)? 多个微服务 与公众隔离 遵守合规性法规 关于私人空间 我的 2020 年 Heroku 体验很积极。所以我想看看它如何应对这种复杂的用例。就在那时,我发现了 。 Private Spaces 私有空间是 Heroku Enterprise 的一部分。它们是用于在隔离网络内运行微服务的专用环境。这种方法允许团队将他们的服务部署到未暴露给公共互联网的网络中。从本质上讲,这些服务的功能与我的基本用例完全相同。我可以通过 Heroku CLI 设置它们,简单的基于 Git 的命令可以触发部署。 对于监管 需求,我可以依靠 来帮助我遵守 PCI DSS、HIPAA、ISO(27001、27017 和 27018)以及 SOC(1、2 和 3)。 合规 Heroku Shield 从高层次来看,Heroku 让我实现了一个安全的云原生设计,可以像这样说明: 在这里,我们有一个在私有空间内利用 Heroku Shield 的实现。这允许一组微服务(利用几种不同的编程语言)与所有主要和次要卡网络进行交互,同时遵守各种监管合规要求。此外,我还可以与 Salesforce 平台和 GitLab 进行安全通信。 Heroku 实际应用 使用 Heroku CLI,我可以启动并运行我的 Private Space 和 Heroku Shield。在 Heroku 中,这称为 。以下是一些高级示例,可帮助您完成此过程。 Shield Private Space 要创建新的 Shield Private Space,我们使用 并添加 选项。 spaces:create --shield $ heroku spaces:create payment-network --shield --team payments-team --region oregon Creating space payment-network in team payments-team... done === payment-network Team: payments-team Region: oregon State: allocating 如果用例需要无类域间路由 (CIDR) 范围,我可以使用 和 标志。 --cidr --data-cidr 您会注意到,我在俄勒冈州地区创建了我的私人空间。您可以在 10 个可用 (美国、欧洲、亚洲和澳大利亚)之一中创建私人空间。要查看可用区域列表,请执行以下操作: 区域 $ heroku regions ID Location Runtime ───────── ─────────────────────── ────────────── eu Europe Common Runtime us United States Common Runtime dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces montreal Montreal, Canada Private Spaces mumbai Mumbai, India Private Spaces oregon Oregon, United States Private Spaces singapore Singapore Private Spaces sydney Sydney, Australia Private Spaces tokyo Tokyo, Japan Private Spaces virginia Virginia, United States Private Spaces 对于需要在 私有空间中运行的每个微服务,我只需在运行 命令时添加 选项: payment-network apps:create --space $ heroku apps:create clearing-service --space payment-network Creating app... done, clearing-service 为了授予消费者访问 空间的权限,我可以维护受信任 IP 的允许列表: payment-network $ heroku trusted-ips:add 192.0.2.128/26 --space payment-network Added 192.0.2.128/26 to trusted IP ranges on payment-network ▸ WARNING: It may take a few moments for the changes to take effect. 结论 团队通常会收到上级的指示,要求采用云原生方法。但许多团队在部署安全云架构方面存在严重的理解差距。如果您使用的是三大云提供商之一,那么弥合这一差距将付出代价——很可能错过产品所有者预期的时间表。 有没有更好的安全云部署选项?我认为 Private Spaces 与 Heroku Shield 相结合代表了更好的选择。对我个人而言,Heroku 是 Salesforce 解决方案平台的一部分,这一点也很重要,Salesforce 一直致力于提供以客户成功为重点的云采用替代方案。所以我觉得这是一个值得考虑的长期战略。 祝您度过愉快的一天!