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"]
之前配置的问题说明
- 第二种写法里用了
//注释,YAML不支持这种注释格式,只能用#开头的注释,加了//会导致YAML解析失败,去掉注释就能正常编译。 - 第三种写法把security_opt写成了嵌套键值对,但Docker Compose中security_opt的类型是字符串数组,每个配置项必须是
key=value格式的字符串,不能用键值对嵌套的写法。
Checkmarx的扫描会严格检查security_opt的配置项是否存在且格式正确,确保上述两个配置项都以正确的数组元素形式添加后,就能通过扫描。
内容的提问来源于stack exchange,提问作者sr28
相关产品推荐
相关产品推荐

