0

我正在尝试使用以下代码使用 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我有正确的环境变量格式。还有什么我错过的吗?

4

3 回答 3

1

这是 ACI 限制 - 请参阅此处了解环境变量的命名限制:

| 环境变量 | 1-63 |不区分大小写|字母数字和下划线 (_) 除了第一个或最后一个字符之外的任何位置

这不是 Zap 的问题,而是 ACI 的问题。这可以通过一个脚本来解决,该脚本获取 Azure 格式的环境变量并将它们转换为 Zap 的格式(例如api_key转换为api.key)。这是一个伪代码(我没有测试它),只是为了给你一个想法:

export set api.key=$API_KEY
./zap 

根据 Zap 的官方镜像创建一个新的 docker 镜像,复制脚本并使用它来启动 Zap 而不是常规的 Zap 的命令。

于 2018-09-04T16:20:18.880 回答
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命令是一个带有 script 的整个 bash 命令zap-x.sh。您可以检查脚本中的参数定义zap-x.sh

并且 PowerShell 命令中的环境是一个 Hashtable,您可以在此处获取更多详细信息。此外, Azure 容器实例中的命名约定也有一些限制。

于 2018-09-06T08:47:07.807 回答
0

不确定你是否得到了他的工作,但我使用了你的 powershell 脚本并能够通过替换“。”来创建 Zap 容器。$environmentVars 数组中带有“_”。

于 2018-10-23T23:01:47.157 回答