9
9
.\Password-params-must-be-secure.test.ps1 -TemplateObject (Get-Content ..\..\..\unit-tests\Password-params-must-be-secure.test.json -Raw | ConvertFrom-Json)
10
10
#>
11
11
param (
12
- [Parameter (Mandatory = $true , Position = 0 )]
13
- [PSObject ]
14
- $TemplateObject
12
+ [Parameter (Mandatory = $true , Position = 0 )]
13
+ [PSObject ]
14
+ $TemplateObject
15
15
)
16
16
17
17
<#
@@ -33,11 +33,31 @@ foreach ($parameter in $templateObject.parameters.psobject.properties) {
33
33
$name = $parameter.name
34
34
35
35
# using a name matching pattern to decide if this should be secured or not
36
- if ($name -like " *password*" ){
36
+ if ($name -like " *password*" -or
37
+ $name -like " *secret*" -or
38
+ $name -like " *accountkey*" ) {
37
39
# if it's not secure, flag it
40
+
38
41
if ($type -ne ' securestring' -and $type -ne ' secureobject' ) {
39
- Write-Error - Message " Parameter `" $name `" is of type `" $type `" but should be secure." - ErrorId Password.Param.Not.Secure - TargetObject $parameter
40
- }
42
+ # except certain patterns we know about in ARM
43
+ # secret + Permissions (keyVault secret perms is an accessPolicy property)
44
+ # secret + Version (url or simply the version property of a secret)
45
+ # secret + url
46
+ # secret + name
47
+ if ($name -like " *secret*" -and
48
+ ($name -like " *permission*" -or
49
+ $name -like " *version*" -or
50
+ $name -like " *url*" -or
51
+ $name -like " *uri*" -or
52
+ $name -like " *name*" )
53
+ )
54
+ {
55
+ Write-Warning " Skipping parameter `" $name `" "
56
+ }
57
+ else {
58
+ Write-Error - Message " Parameter `" $name `" is of type `" $type `" but should be secure." - ErrorId Password.Param.Not.Secure - TargetObject $parameter
59
+ }
60
+ }
41
61
}
42
62
}
43
63
0 commit comments