Azure 容器应用提供在不管理复杂基础结构的情况下运行容器化应用程序的功能,同时提供企业级安全功能。 部署此服务时,请遵循安全最佳做法来保护数据、配置和基础结构。
本文提供安全建议来帮助保护 Azure 容器应用部署。
网络安全
网络安全控制可防止未经授权的访问容器应用终结点,并在应用程序和外部服务之间建立安全通信边界。
在虚拟网络中部署容器应用:若要控制网络流量和安全访问后端资源,请将容器应用环境与 Azure 虚拟网络集成。 虚拟网络集成使应用能够访问专用网络中的资源,同时防范基于 Internet 的攻击。 请参阅 虚拟网络配置。
启用专用终结点进行入站访问:使用 Azure 专用链接通过虚拟网络路由客户端流量,消除公共 Internet 公开。 专用终结点提供虚拟网络中的专用 IP 地址,从而有效地将容器应用引入网络外围。 请参阅 在 Azure 容器应用环境中使用专用终结点。
配置内部环境进行完全隔离:部署内部容器应用环境以限制对虚拟网络中客户端的所有入站访问。 内部环境提供与公共 Internet 的完全隔离,并在容器应用和其他网络资源之间实现安全通信。 请参阅 Azure 容器应用环境中的网络。
禁用公用网络访问:配置容器应用环境以在使用专用终结点时禁用公共网络访问,确保通过受控虚拟网络环境进行所有连接。 此配置可防止未经授权的外部访问尝试。 请参阅 Azure 容器应用环境中的虚拟网络的专用终结点和 DNS。
实现 Azure 防火墙以实现出站流量控制:将 Azure 防火墙与用户定义的路由(UDR)配合使用,以控制和监视来自容器应用的所有出站流量,以确保仅与已批准的目标进行通信。 请参阅“启用用户定义的路由”(UDR)。
使用限制性规则配置网络安全组:应用网络安全组,通过采用默认拒绝策略和特定的允许规则控制容器应用子网的进出流量,以实现所需的通信模式。 请参阅 使用 NSG 保护现有 VNet。
配置应用级限制:使用适当的安全控制配置入口设置,包括客户端证书身份验证和用于安全公开容器应用程序的 IP 限制。 对不应从 Internet 访问的应用程序使用内部入口。 请参阅 入口概述。
标识和访问管理
标识和访问控制可确保只有经过授权的用户和应用程序才能使用适当的权限和身份验证机制访问容器应用资源。
启用身份验证和授权:使用 Microsoft Entra ID 和其他标识提供者配置内置身份验证,以保护容器应用终结点,使其不受基本访问控制。 此配置提供集中式标识管理并支持自定义授权规则。 请参阅 Azure 容器应用中的身份验证和授权。
将托管标识用于服务连接:配置系统分配的托管标识或用户分配的托管标识以向其他 Azure 服务进行身份验证,而无需将凭据存储在代码或配置中。 托管标识简化了凭据管理,并提供自动机密轮换。 请参阅 在 Azure 容器应用中使用托管标识。
实现基于角色的访问控制(RBAC):使用 Azure RBAC 为容器应用管理作提供精细的权限。 根据用户的职责,为用户分配所需的最低角色,例如参与者、所有者或读者。 请参阅 Azure 容器应用的 Azure 安全基线。
配置Microsoft Entra ID 身份验证:使用 Microsoft Entra ID 进行集中式标识管理,并启用条件访问策略,以基于用户、位置和设备条件控制访问。 此配置为企业级身份验证功能提供多重身份验证支持。 请参阅 使用 Azure Active Directory 在 Azure 容器应用中启用身份验证和授权。
启用令牌存储以实现安全身份验证:使用内置令牌存储功能安全地管理身份验证令牌,而与应用程序代码无关。 令牌存储通过消除自定义令牌管理代码来提供自动令牌刷新并减少攻击面。 请参阅 “启用身份验证令牌存储”。
数据保护
数据保护机制通过加密、安全存储和正确处理机密和配置数据来保护容器应用处理的敏感信息。
对所有通信强制实施 HTTPS:将 Envoy 代理配置为将所有 HTTP 流量重定向到 HTTPS,以确保所有数据传输都使用 TLS 加密。 在入口配置中设置
allowInsecure: false以防止未加密的连接。 请参阅 在 Azure 容器应用中设置 HTTPS 或 TCP 入口。使用 Azure Key Vault 进行机密管理:在 Azure Key Vault 中存储连接字符串、API 密钥和其他机密,而不是应用程序设置。 使用 Key Vault 引用在运行时检索机密,同时通过增强的安全性和审核功能维护集中式机密管理。 请参阅 从 Azure Key Vault 导入证书。
启用相互传输层安全性(mTLS):使用 mTLS 对服务之间的流量进行身份验证和加密,提供双向身份验证来验证客户端和服务器标识。 此功能增强了容器应用环境中服务到服务通信的安全性。 请参阅使用相互传输层安全性(mTLS)。
实现适当的机密管理:通过适当的隔离和访问控制使用容器应用内置机密管理。 避免将机密直接存储在容器映像或环境变量中;而是将机密引用和 Key Vault 集成用于生产环境。 请参阅 Azure 容器应用中的安全性概述。
安全容器映像存储:在启用了身份验证的 Azure 容器注册表中存储容器映像,并为灾难恢复配置异地复制。 对生产工作负荷使用专用注册表而不是公共存储库,以保持对映像访问的控制。 请参阅 Azure 容器应用的体系结构最佳做法。
日志记录和监控
全面的日志记录和监视提供了对容器应用的操作、安全事件和性能指标的可见性,从而实现威胁检测和运营监督。
启用 Azure Monitor Log Analytics 集成:配置 Log Analytics 工作区集成,以便从环境中的所有容器应用收集和分析系统和应用程序日志。 此配置提供集中式日志管理,并支持安全监视和合规性审核。 有关详细信息,请参阅 使用 Log Analytics 监视 Azure 容器应用中的日志。
配置诊断设置:启用诊断设置,将容器应用日志和指标流式传输到 Azure Monitor 日志、存储帐户或事件中心,以便集中分析和长期保留。 此配置支持安全调查和合规性要求。 有关详细信息,请参阅 Azure 容器应用中的可观测性。
设置 Azure Monitor 警报:为可疑活动配置警报,包括身份验证失败、异常流量模式、高错误率和资源消耗异常。 使用操作组来启用对潜在安全事件的自动响应。 有关详细信息,请参阅 Azure Monitor 警报。
启用日志流式处理进行实时监视:使用日志流功能查看容器中的近实时系统和控制台日志,以便立即进行故障排除和安全事件检测。 此功能在安全事件期间提供快速响应功能。 有关详细信息,请参阅 日志流式处理。
实现 Application Insights 集成:配置 Application Insights 集成,以捕获容器应用程序中的详细遥测、性能指标和自定义跟踪。 此集成实现全面观测,以便进行安全分析和性能优化。 有关详细信息,请参阅 Azure 容器应用上的 Azure Functions 概述。
合规性和治理
合规性和治理控制可确保容器应用部署通过适当的配置管理和审核功能满足法规要求和组织策略。
应用 Azure Policy 定义:使用内置的 Azure Policy 定义来审核和强制实施安全配置,例如虚拟网络部署、身份验证要求和 HTTPS 强制实施。 策略有助于在整个环境中保持一致的安全态势。 有关详细信息,请参阅 Azure 容器应用的 Azure Policy 内置定义。
实现资源标记:将一致的资源标记应用于容器应用资源,以实现成本管理、安全监视、合规性跟踪和治理。 使用标记标识数据分类、所有者信息和法规要求。 有关详细信息,请参阅 Azure 容器应用的 Azure 安全基线。
配置条件访问策略:使用 Microsoft Entra 条件访问策略,以在使用身份验证功能时基于用户标识、位置、设备符合性和风险评估来控制对容器应用的访问。 有关详细信息,请参阅 Azure 容器应用的 Azure 安全基线。
维护审核线索和符合性文档:确保全面的日志记录使用诊断设置和活动日志捕获所有容器应用管理作、配置更改和访问尝试,以便进行法规遵从性和安全调查。 有关详细信息,请参阅 Azure 容器应用的 Azure 安全基线。
备份和恢复
备份和恢复策略可保护容器应用配置,并通过适当的灾难恢复规划和多区域部署策略确保业务连续性。
启用区域冗余以实现高可用性:在容器应用环境中配置区域冗余,以自动跨区域中的多个可用性区域分发副本。 此配置可防范区域级故障并改善应用程序运行时间。 请参阅 Azure 容器应用中的可靠性。
实现多区域部署:使用 Azure Front Door 或 Azure 流量管理器跨多个 Azure 区域部署容器应用,以便在区域中断期间自动故障转移功能。 此策略可确保关键工作负荷的持续应用程序可用性。 请参阅 跨区域灾难恢复和业务连续性。
使用基础结构作为部署自动化代码:使用 Azure 资源管理器模板、Bicep 或其他基础结构作为代码工具实现自动化部署过程,以确保可以在事件发生后或在备用区域中快速重新部署容器应用配置。 请参阅 Azure 容器应用的管理和操作 - 降落区加速器。
配置异地冗余容器注册表:在启用异地复制的情况下使用 Azure 容器注册表,以确保容器映像可在多个区域使用,以实现灾难恢复方案。 此配置可防范注册表中断,并支持多区域部署。 请参阅 Azure 容器应用的管理和操作 - 降落区加速器。
测试灾难恢复过程:定期测试备份和恢复过程,包括应用程序部署、配置还原和故障转移过程,以验证有效性并确定灾难恢复规划中的差距。 根据所学到的教训记录测试结果和更新过程。 请参阅 测试备份和灾难恢复。
特定于服务的安全性
容器应用提供专为容器化工作负载、微服务体系结构和云原生应用程序而设计的独特安全功能。
配置环境级安全边界:使用容器应用环境在不同的应用程序和工作负荷之间创建安全边界。 将生产和非生产环境分开,以防止未经授权的访问和配置偏移。 请参阅 环境概述。
实施适当的缩放和资源限制:配置适当的缩放规则和资源限制,以防止资源耗尽攻击,并确保应用程序之间的资源分配公平。 监视缩放事件,查找可能指示安全问题的异常模式。 请参阅 在 Azure 容器应用中设置缩放规则。