部署容器化应用程序时,通常使用 HTTPS 协议进行加密的安全通信。 安全通信由传输层安全性(TLS)实现,后者使用安全套接字层(SSL)替换了先前的方法。 在开发过程中,Visual Studio 使用自签名证书,有时称为 开发测试 证书。 首次在本地计算机上启动应用程序时,系统会提示你信任证书。 这适用于开发和测试,但在部署到 Azure 并在自定义域中公开应用程序时,需要切换到证书颁发机构(CA)颁发的证书(Azure 或第三方 CA)。
Azure 中的部署选项的安全性
许多 Azure 服务通过自动处理证书管理来简化配置和管理负担。 在 Azure 中为容器设置 TLS 的配置和过程取决于要部署到的服务。
通常,Azure 服务可以支持多种获取和存储证书的方法。 可以从 Azure 自己的证书颁发机构(CA)获取受信任的证书,也可以上传第三方 CA 颁发的专用受信任证书。 可以使用服务自己的证书存储,也可以使用 Azure Key Vault 来存储证书和其他机密。
下表显示了这些服务,并包含链接,说明在部署到这些服务时 HTTPS 安全性的工作原理以及管理证书的操作指南。
Azure 服务 | 笔记 |
---|---|
Azure 应用服务 | Azure 应用服务是一种适用于单个容器的合适部署服务,可提供默认体验,这意味着可以使用 Azure 提供的受信任证书获得安全终结点,而不会造成任何额外的开销。 为了更好地控制,可以从多个选项中进行选择来获取和存储证书。 可以使用从第三方 CA 获取的受信任证书,而不是 Azure 提供的默认受信任证书。 (可选)可以在 Azure Key Vault 中存储证书。 请参阅 应用服务 TLS 概述。 |
Azure 容器应用 | Azure 容器应用是一种适合使用一个或多个容器的容器化应用的托管服务。 与 Azure 应用服务一样,它提供默认体验,它自动使用受信任的 Azure 提供的证书,但也提供了一系列网络体系结构选项来支持不同的方案。 请参阅 Azure 容器应用 中的网络。 |
Azure 容器实例 | 若要为 Azure 容器实例中托管的容器配置 HTTPS 公共终结点,请参阅 在 sidecar 容器中启用 TLS 终结点。 此选项将最大程度地减少对容器本身的影响。 |
Service Fabric | 请参阅 Service Fabric 应用程序和服务安全性。 通常设置反向代理来处理传入请求的安全性。 请参阅 Azure Service Fabric 中的反向代理。 |
Azure Kubernetes 服务 (AKS) | 请参阅 AKS 文档中的 指南,了解如何为集群的入口配置 TLS。 AKS 提供最先进的管理功能,可灵活处理证书轮换和续订。 |
多个容器的网络安全选项
如果方案涉及多个容器,可以选择仅保护入口流量(即,在面向外部的负载均衡器或反向代理),也可以应用应用程序中每个容器之间的安全通信。 后一个选项为系统的更深层层提供安全性,即使外部层存在漏洞也是如此。 使用 HTTPS 进行所有容器到容器通信超出了本文的范围。
对于 Azure 容器应用,可以配置对外部调用方使用 HTTPS 的入口,并在多个容器的网络中使用 HTTP 或 TCP。 对于容器之间的安全通信,可以使用 mTLS(相互 TLS),这需要在请求、客户端和服务器两端或微服务之间使用证书。 请参阅 Azure 容器应用中的入口和配置 Azure 容器应用中的客户端证书身份验证。
相关内容
- 使用 Visual Studio 将 ASP.NET Core 容器部署到 Azure 应用服务
- 将 SSL 用于容器化 ASP.NET 核心应用