Azure App Service 部署时以 root 用户运行 Docker 是否存在安全风险
容器root权限风险及Azure App Service场景说明
直接持有服务器root权限与容器内root权限的核心差异
- 权限范围不同:服务器原生root是对应物理/虚拟服务器的最高权限,可不受限制访问整台服务器的所有硬件资源、全部进程、所有存储数据,支持修改内核参数、挂载任意设备、管控所有服务的运行。而容器内的root是经过namespace隔离、内核capability裁剪后的受限权限,默认状态下无法直接访问宿主机其他进程、未挂载到容器的存储资源,也不能修改宿主机内核配置。
- 失陷影响不同:服务器root权限被窃取后,整台服务器的所有资源、运行在上面的全部业务都会直接沦陷。而容器内root默认失陷只会影响当前容器内的业务进程和数据,只有当容器配置了
--privileged特权模式、挂载宿主机敏感目录、额外开放高危capability等不安全配置时,才存在突破隔离获取宿主机权限的可能。
Azure App Service部署的容器是否存在root提权到宿主机的风险
该风险几乎不存在,Azure App Service属于微软托管的PaaS服务,平台侧对底层容器运行环境做了多层安全加固:
App Service默认禁止容器以特权模式启动,会默认裁剪所有不必要的内核capability,同时底层宿主节点会做多租户强隔离,即使用户的容器内以root用户运行,也无法突破平台的隔离层获取宿主机的root权限。
但依然不建议在App Service的容器中使用root运行业务:
- 容器内root权限失陷后,攻击者仍然可以篡改当前容器内的业务代码、窃取运行时的敏感数据、发起内部网络探测,存在明确的业务层面安全风险。
- 生产环境最佳实践依然是制作镜像时提前创建普通非root用户,配置容器以普通用户启动,尽可能缩小攻击面。
内容的提问来源于stack exchange,提问作者Sean Payne
相关产品推荐
相关产品推荐

