在Azure容器实例上配置Owasp Zap

时间:2018-09-04 15:57:24

标签: owasp azure-container-instances

我正在尝试使用以下代码使用azure容器实例创建owasp zap实例:

$containerGroupName = "EW-owaspzap"
$containerDnsName = "EW-owaspzap"
$imageName = "owasp/zap2docker-stable"
$myIpAddress = (Invoke-WebRequest ifconfig.me/ip).Content.Trim()
$environmentVars = @{"api.key"="myreallysecureapikey";"api.addrs.addr.name"=$myIpAddress}
$containerGroup = Get-AzureRmContainerGroup -ResourceGroupName $resourceGroupName -Name $containerGroupName -ErrorAction SilentlyContinue
if (!$containerGroup) {
    New-AzureRmContainerGroup -ResourceGroupName $resourceGroupName -Name $containerGroupName -Image $imageName -Command zap-webswing.sh -Port 8080,8090 `
         -IpAddressType Public -DnsNameLabel $containerDnsName -RestartPolicy OnFailure -Location WestEurope -AzureFileVolumeShareName $storageShareName `
        -AzureFileVolumeMountPath '/output' -AzureFileVolumeAccountCredential $storageCredentials -EnvironmentVariable $environmentVars
     }

但是我得到了错误:

容器组“ EW-owaspzap”的容器“ EW-owaspzap”中的环境变量名称无效。有效的环境变量 名称必须以字母字符或''开头,后跟一串字母数字字符或''(例如'my_name'或'MY_NAME'或'MyName')

根据此https://github.com/zaproxy/zaproxy/wiki/Docker,我具有正确的环境变量的格式。还有什么我想念的吗?

3 个答案:

答案 0 :(得分:1)

这是ACI限制-有关环境变量的命名限制,请参见here

  

|环境变量| 1-63 |不区分大小写|字母数字,和   在第一个字符或最后一个字符以外的任何地方加下划线(_)

这不是Zap的问题,而是ACI。 可以使用脚本解决此问题,该脚本以Azure格式获取env var并将其转换为Zap的格式(例如api_keyapi.key)。这是一个伪代码(我没有测试过),只是为了给您一个想法:

export set api.key=$API_KEY
./zap 

根据Zap的官方映像创建一个新的docker映像,复制脚本并将其用于启动Zap,而不是常规Zap的命令。

答案 1 :(得分:0)

对于您的问题,我认为您有一些误解。您发布的链接docker run -u zap -p 8080:8080 -i owasp/zap2docker-stable zap-x.sh -daemon -host 0.0.0.0 -port 8080 -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true中的命令,您应该看看docker run,没有像-config这样的参数。

因此,我认为从zap-x.sh到末尾的命令是一个带有脚本zap-x.sh的完整bash命令。您可以在脚本zap-x.sh中检查参数定义。

PowerShell命令中的环境是一个哈希表,您可以获取更多详细信息here。此外,Azure容器实例中的Naming conventions也有一些限制。

答案 2 :(得分:0)

不确定您是否能完成他的工作,但是我使用了Powershell脚本,并且能够通过替换“”来创建Zap容器。 $ environmentVars数组中包含“ _”。