Azure Container Apps中OpenSearch安全插件HTTPS/HTTP不匹配问题咨询
关于Azure Container Apps部署OpenSearch安全插件的问题
架构
API / WebJob (HTTPS) ↓ Azure Container Apps ingress (HTTPS externally) ↓ (internal hop becomes HTTP) OpenSearch container (:9200)
问题
启用OpenSearch安全插件后,服务要求通过HTTPS通信,但Azure Container Apps入口在边缘终止TLS,内部以HTTP转发流量,流量流程如下:
HTTPS client → ACA ingress → HTTP → OpenSearch
OpenSearch会拒绝HTTP请求,引发连接失败。
已尝试操作
- 配置管理员密码并启用OpenSearch安全插件
- 对外暴露ACA入口(外部HTTPS可正常工作)
- 尝试从App Service/WebJob调用OpenSearch
- 确认ACA内部流量仅为HTTP
咨询问题
- 是否可在Azure Container Apps中将内部HTTP流量转换为HTTPS后再转发至容器?
- 能否配置ACA实现流量重新加密(HTTPS透传/重加密)?
- 是否有受支持的方案可在ACA中运行OpenSearch安全插件且不公开暴露?
- 从App Service+WebJob安全内部访问OpenSearch的推荐架构是什么?
目标
- OpenSearch不对外公开访问
- 仅允许App Service+WebJob访问
- 启用安全插件(需身份验证)
- 无HTTP暴露相关问题
解决方案建议
针对问题1和2:ACA内部流量转HTTPS/重加密
目前Azure Container Apps默认 ingress 不支持直接将内部HTTP流量转换为HTTPS转发到容器,也没有原生重加密配置选项,但可以通过以下两种方式解决:
OpenSearch容器侧同时启用HTTP和HTTPS
- 修改OpenSearch的
opensearch.yml配置,允许HTTP访问(仅限ACA内部流量),同时保留HTTPS用于安全验证。配置示例:opensearch.security.ssl.http.enabled: true opensearch.security.allow_unsafe_democertificates: true # 测试用,生产环境建议使用自定义证书 opensearch.security.disabled: false http.enabled: true - 注意:需确保OpenSearch的HTTP端口仅在ACA内部网络可见,不对外暴露。
- 修改OpenSearch的
ACA内部部署反向代理
- 在同一ACA环境中部署轻量反向代理(如Nginx),配置它接收ACA的HTTP流量,再以HTTPS转发到OpenSearch容器。
- Nginx关键配置示例:
server { listen 80; location / { proxy_pass https://opensearch-container:9200; proxy_ssl_verify off; # 自签名证书场景下使用,生产环境建议配置证书验证 proxy_set_header Host $host; } } - 让App Service/WebJob的请求指向该代理容器,而非直接访问OpenSearch。
针对问题3:不公开暴露OpenSearch的受支持方案
- 将OpenSearch的ACA ingress设置为内部访问,仅允许ACA环境内部可见,不启用外部访问权限。
- 结合Azure虚拟网络(VNet)集成:将ACA环境部署到自定义VNet,同时将App Service加入同一VNet或通过VNet peering连通,实现纯内部网络访问。
- 启用OpenSearch安全插件的身份验证机制(如用户名密码、API密钥),确保只有授权的App Service/WebJob能发起访问。
针对问题4:App Service+WebJob安全访问OpenSearch的推荐架构
App Service/WebJob (VNet集成) ↓ (内部VNet流量) Azure Container Apps (VNet集成,内部ingress) ↓ (HTTPS) OpenSearch容器 (启用安全插件+HTTPS)
- VNet集成:将ACA环境和App Service部署到同一Azure VNet,或通过VNet peering连接,确保流量在内部网络传输,不经过公网。
- 内部Ingress:OpenSearch的ACA ingress设置为
internal,彻底禁止外部访问。 - 流量加密:要么在ACA内部部署反向代理,将App Service的HTTP请求转换为HTTPS转发到OpenSearch;要么直接让App Service以HTTPS访问OpenSearch容器(需提前配置OpenSearch的SSL证书)。
- 身份验证:在App Service/WebJob中配置OpenSearch安全插件的API密钥或用户名密码,实现身份校验。
内容的提问来源于stack exchange,提问作者Arul
相关产品推荐
相关产品推荐

