Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
除了本文之外,还请查看 Service Fabric 安全清单以了解详细信息。
在Azure上部署应用程序是快速、简单且经济高效的。 将云应用程序部署到生产环境前,请先查看有必要遵照和建议的最佳做法列表,了解最好应如何在应用程序中实现群集安全性。
Azure Service Fabric 是一个分布式系统平台,可用于轻松打包、部署和管理可缩放且可靠的微服务。 Service Fabric 还解决了开发和管理云应用程序中的重大难题。 开发人员和管理员不仅可以避免复杂的基础结构问题,而且可以专注于实现可缩放、可靠且可管理的要求苛刻的任务关键型工作负荷。
对于每项最佳做法,本文将说明:
- 最佳做法是什么。
- 应遵照最佳做法的具体原因。
- 如果未遵照最佳做法,会有什么样的后果。
- 如何学会遵照最佳做法。
建议使用以下Azure Service Fabric 安全最佳做法:
- 使用Azure Resource Manager模板和 Service Fabric PowerShell 模块创建安全群集。
- 使用 X.509 证书。
- 配置安全策略。
- 实现 Reliable Actors 安全配置。
- 为 Azure Service Fabric 配置 TLS。
- 将网络隔离和安全性与 Azure Service Fabric 配合使用。
- 为安全性配置Azure Key Vault。
- 将用户分配到角色。
- 在 Service Fabric 群集中托管不受信任的应用程序时要考虑的事项。
保护群集的最佳做法
始终使用安全群集:
- 使用证书实现群集安全性。
- 使用 Microsoft Entra ID 提供客户端访问权限(管理员和只读)。
使用自动部署:
- 使用脚本生成、部署和滚动更新机密。
- 将机密存储在 Azure 密钥保管库中,并使用 Microsoft Entra ID 进行所有其他客户端访问。
- 要求人类访问机密时进行身份验证。
此外,还请考虑使用以下配置选项:
- 使用Azure网络安全组(NSG)创建外围网络(也称为非军事区域、外围网络和筛选子网)。
- 通过中转服务器上的远程桌面连接来访问集群的虚拟机(VM)或管理您的集群。
必须保护群集,以防未经授权的用户连接到群集,特别是当群集在生产环境中运行时。 尽管可以创建不安全群集,但当群集向公共 Internet 公开管理终结点时,匿名用户就可以与它建立连接。
使用各种技术实现群集安全性的方案有三种:
- 节点到节点安全性:此方案可保护群集中 VM 与计算机之间的通信。 这种安全性可确保只有已获授权加入群集的计算机,才能在群集中托管应用程序和服务。 在此方案中,在 Azure 上运行的群集或 Windows 上运行的独立群集可以使用 Windows Server 计算机的证书安全或Windows 安全。
- 客户端到节点安全性:此方案可保护 Service Fabric 客户端与群集中各个节点之间的通信。
- 基于 Service Fabric 角色访问控制(Service Fabric RBAC):此方案为每个访问集群的管理员和用户客户端角色使用单独的身份(证书、Microsoft Entra ID等)。 这些角色标识是在创建群集时指定。
注意事项
Azure 集群的安全建议:使用 Microsoft Entra 安全性对客户端和证书进行身份验证,确保节点之间的安全性。
若要配置 Windows 独立群集,请参阅 Windows 独立群集的配置设置。
使用Azure Resource Manager模板和 Service Fabric PowerShell 模块创建安全群集。 有关使用 Azure Resource Manager 模板创建安全 Service Fabric 群集的分步说明,请参阅 创建 Service Fabric 群集。
使用Azure Resource Manager模板:
- 使用模板来自定义群集,并配置托管存储以用于 VM 虚拟硬盘(VHD)。
- 使用此模板简化配置管理和审核,推动对资源组的更改。
将群集配置视为代码:
- 仔细检查部署配置。
- 避免使用隐式命令直接修改资源。
可以对 Service Fabric 应用程序生命周期的许多层面进行自动化。 Service Fabric PowerShell 模块自动执行用于部署、升级、删除和测试 Azure Service Fabric 应用程序的常见任务。 此外,还提供了托管 API 和 HTTP API,可用于管理应用程序。
使用 X.509 证书
最佳实践:始终使用 X.509 证书或 Windows 安全性保护群集。 详细信息:仅在创建群集时配置安全性。 无法在群集创建后启用安全性。
若要指定群集证书,请将 ClusterCredentialType 属性的值设置为 X509。 若要为外部连接指定服务器证书,请将 ServerCredentialType 属性的值设置为 X509。
此外,还请遵照以下做法:
- 使用正确配置的 Windows Server 证书服务为生产群集创建证书。 也可以从核准证书颁发机构 (CA) 获取证书。
- 切勿对生产群集使用通过 MakeCert.exe 或类似工具创建的临时或测试证书。
- 对测试群集使用自签名证书,但不要对生产群集使用此类证书。
如果是不安全群集,任何人都可以匿名连接到此群集,并执行管理操作。 因此,始终使用 X.509 证书或Windows security来保护生产群集。
若要详细了解如何使用 X.509 证书,请参阅 为 Service Fabric 群集添加或删除证书。
配置安全性策略
Service Fabric 还可保护应用程序使用的资源。 在应用程序部署后,文件、目录和证书等资源都会存储在用户帐户下。 借助此功能,即使在共用托管环境中,也可使运行的应用程序彼此之间更安全。
使用Active Directory 域组或用户:在Active Directory 用户或组帐户的凭据下运行服务。 请确保在域中使用本地Active Directory,而不是Microsoft Entra ID。 使用域用户或组访问域中授予权限的其他资源。 例如,文件共享等资源。
为 HTTP 和 HTTPS 终结点分配安全access策略:当服务清单使用 HTTP 声明终结点资源时,指定 SecurityAccessPolicy 属性以将 RunAs 策略应用于服务。 分配给 HTTP 终结点的端口是根据服务运行所用的 RunAs 用户帐户正确设定访问控制列表的。 如果策略未设置,http.sys 无法访问服务,并且客户端的调用可能失败。
若要了解如何在 Service Fabric 群集中使用安全策略,请参阅配置应用程序的安全策略。
实现 Reliable Actors 安全配置
Service Fabric Reliable Actors 是一种基于演员设计模式的实现。 与所有软件设计模式一样,决定是否使用特定模式时需要考虑,此模式是否适合解决软件问题。
一般来说,使用 actor 设计模式可以帮助建模解决方案,以解决以下软件问题或安全情境:
- 问题空间包含大量(几千或更多)小型、独立的状态和逻辑单元。
- 您正在处理不需要与外部组件进行大量交互的单线程对象,包括在一组参与者当中查询状态。
- 执行组件实例不会发出 I/O 操作指令阻止遇到不可预测延迟的调用方。
在 Service Fabric 中,执行组件是在 Reliable Actors 应用程序框架中实现。 此框架以执行组件模式为依据,在 Service Fabric Reliable Services 的基础之上构建而成。 编写的每个可靠执行组件服务都是一个已分区的有状态可靠服务。
每个执行组件都定义为执行组件类型的实例,这与.NET对象是.NET类型的实例的方式相同。 例如,用于实现计算器功能的执行组件类型可能包含此类型的多个执行组件,这些执行组件跨群集中的各个节点进行分布。 分布的每个执行组件都通过执行组件标识符进行唯一标识。
复制器安全配置用于保护在复制过程中使用的信道的安全。 此配置可阻止服务相互窥探复制流量,并确保可用性很高的数据安全。 默认情况下,空的安全配置节会影响复制安全。 复制器配置用于配置负责使参与者状态提供程序状态高度可靠的复制器。
为 Azure Service Fabric 配置 TLS
服务器身份验证流程向管理客户端验证群集管理终结点。 然后,管理客户端确定它在与真正的群集通信。 此证书还提供用于 HTTPS 管理 API 和 Service Fabric Explorer 的 TLS。 您需要为您的群集获取一个自定义域名。 从证书颁发机构请求证书时,证书的使用者名称必须与用于群集的自定义域名匹配。
若要为应用程序配置 TLS,首先需要获取已由 CA 签名的 SSL/TLS 证书。 CA 是受信任的第三方,负责颁发证书,以提高 TLS 安全性。 如果尚无 SSL/TLS 证书,需要从销售 SSL/TLS 证书的公司购买一个。
证书必须满足Azure中 SSL/TLS 证书的以下要求:
证书必须包含私钥。
必须为密钥交换创建证书,并且可导出到个人信息交换(.pfx)文件。
证书的主体名称必须与用于访问您的云服务的域名相匹配。
- 获取自定义域名以访问您的云服务。
- 向 CA 请求证书,其使用者名称与服务的自定义域名匹配。 例如,如果您的自定义域名为 contoso.com,则您CA的证书应具有主题名 .contoso.com 或 www.contoso.com。
注意事项
无法从 CA 获取 cloudapp.net 域的 SSL/TLS 证书。
证书至少必须使用 2,048 位加密。
HTTP 协议不安全,容易受到窥探攻击威胁。 通过 HTTP 传输的数据在 Web 浏览器到 Web 服务器之间或其他终结点之间作为纯文本发送。 攻击者可以拦截和查看通过 HTTP 发送的敏感数据,如信用卡详细信息和帐户登录凭据。 如果数据使用 HTTPS 通过浏览器进行发送或发布,SSL 可确保加密和保护敏感信息,防止其被拦截。
若要了解有关使用 SSL/TLS 证书的详细信息,请参阅
将网络隔离和安全性与 Azure Service Fabric 配合使用
最佳做法:使用网络隔离设置安全群集。 Detail:使用 Azure Resource Manager 模板设置 3 节点类型安全群集。 使用此模板和网络安全组控制入站和出站网络流量。
该模板为每个虚拟机规模集配置了一个 NSG,用于控制入站和出站流量。 默认情况下,将会把规则配置为允许模板中指定的系统服务和应用程序端口所需的全部流量进出。 请查看这些规则,并根据需要进行任意更改,包括为应用程序添加新规则。
有关详细信息,请参阅 Azure Service Fabric 的常见网络场景。
为安全性设置Azure Key Vault
最佳实践:使用 Azure Key Vault 来管理 Service Fabric 群集中的证书。 详细信息:Service Fabric 使用 X.509 证书来保护群集并提供应用程序安全功能。 使用 Azure Key Vault 为 Azure 中的 Service Fabric 群集管理证书。 创建群集的Azure资源提供程序从key vault拉取证书。 然后,当群集部署在Azure时,提供程序会在 VM 上安装证书。
证书关系存在于 Azure Key Vault、Service Fabric 群集和使用证书的资源提供程序之间。 创建群集时,证书关系的相关信息存储在key vault中。
要设置密钥保管库,有两个基本步骤:
专门为你的密钥保管库创建资源组。
我们建议将密钥库放在其自己的资源组中。 删除其他资源组(如存储、计算或包含群集的组)时,此操作有助于防止密钥和机密丢失。 包含密钥保管库的资源组必须与使用该密钥保管库的集群位于同一地区。
在新资源组中创建密钥保管库。
必须启用密钥保管库以进行部署。 然后,计算资源提供程序可以从保管库获取证书,并将证书安装在 VM 实例上。
若要详细了解如何设置key vault,请参阅 什么是 Azure Key Vault?
将用户分配到角色
最佳做法:将用户分配到 Service Fabric 支持的角色。 详细信息:创建用于表示群集的应用程序后,请将用户分配到只读和管理员角色。 可以使用Azure portal分配这些角色。
注意事项
有关在 Service Fabric 中使用角色的详细信息,请参阅 Service Fabric 客户端的基于角色的访问控制。
Azure Service Fabric 支持两种客户端连接到 Service Fabric 群集 的访问控制类型:管理员和用户。 群集管理员可以使用访问控制来限制不同用户组对特定群集操作的访问权限。 访问控制使得群集更安全。
在 Service Fabric 群集中托管不受信任的应用程序时要考虑的事项
请参阅在 Service Fabric 群集中托管不受信任的应用程序。
后续步骤
- Service Fabric 安全性清单
- 设置 Service Fabric 开发环境。
- 了解 Service Fabric 支持选项。