You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose中如何配置security_opt的no-new-privileges以通过Checkmarx扫描?

Docker Compose配置security_opt解决Checkmarx扫描报错

我用Checkmarx扫描docker-compose.yaml时,先是被提示未设置Security Opt标志。查了半天相关资料没多少,照着Docker官方文档加了security_opt: apparmor=docker-default,原错误是解决了,但又冒出来no-new-privileges未设置的新问题。试了好几种配置写法,扫描还是报错,试过的配置如下:

第一种:

version: "3.6"
services:
  myService:
    image: <some image>
    security_opt:
      - apparmor=docker-default
      - no-new-privileges=true

第二种(加了注释后编译失败,提示security_opt是数组):

security_opt: [apparmor=docker-default, no-new-privileges=true] //Apparently security_opt is an array.

第三种:

security_opt:
    apparmor: docker-default
    no-new-privileges: true

正确配置方式

问题出在配置的语法或者格式不符合要求,以下是能通过扫描且编译正常的写法:

多行数组写法(推荐,可读性高)

version: "3.6"
services:
  myService:
    image: <some image>
    security_opt:
      - apparmor=docker-default
      - no-new-privileges:true

紧凑数组写法(注意去掉非法注释)

version: "3.6"
services:
  myService:
    image: <some image>
    security_opt: ["apparmor=docker-default", "no-new-privileges:true"]

之前配置的问题说明

  1. 第二种写法里用了//注释,YAML不支持这种注释格式,只能用#开头的注释,加了//会导致YAML解析失败,去掉注释就能正常编译。
  2. 第三种写法把security_opt写成了嵌套键值对,但Docker Compose中security_opt的类型是字符串数组,每个配置项必须是key=value格式的字符串,不能用键值对嵌套的写法。

Checkmarx的扫描会严格检查security_opt的配置项是否存在且格式正确,确保上述两个配置项都以正确的数组元素形式添加后,就能通过扫描。

内容的提问来源于stack exchange,提问作者sr28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:56:07