我创建了一个 Powershell 模块,将我的基础设施表示为代码。
现在我正在尝试创建一个 KeyVault。
在我的函数中,我有一些用于创建 KeyVault 的参数。 这就是我尝试的方法:
[Parameter(Mandatory=$false)][string]$SubscriptionName = "test",
[Parameter(Mandatory=$false)][string]$ResourceGroupName= "keyvault",
[Parameter(Mandatory=$false)][string]$KeyVaultName= "testKeyvault",
[Parameter(Mandatory=$false)][string]$ResourceLocation = "West Europe",
[Parameter(Mandatory=$false)][string]$vN_ResourceGroupName= "vnet",
[Parameter(Mandatory=$false)][string]$privateEndpointName= "privEPKeyVault",
[Parameter(Mandatory=$false)][string]$vNetName= "vnet_$SubscriptionName",
[Parameter(Mandatory=$false)][string]$privateEndpointSubnetName = "SN_KeyVault",
[Parameter(Mandatory=$false)][string]$SubscriptionId = "SubscriptionId"
$virtualNetwork = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vN_ResourceGroupName
$subnet = $virtualNetwork.Subnets | Where-Object {$_.Name -eq $privateEndpointSubnetName}
$myNetworkResId = ($virtualNetwork).Subnets[0].Id
$ruleSet = New-AzKeyVaultNetworkRuleSetObject -DefaultAction Deny -Bypass AzureServices -IpAddressRange $subnet.AddressPrefix -VirtualNetworkResourceId $myNetworkResId
$tags = @{
environment = "devtest"
product = "cloudintegrated"
}
New-AzKeyVault -VaultName $KeyVaultName `
-ResourceGroupName $ResourceGroupName `
-Location $ResourceLocation `
-EnablePurgeProtection `
-SoftDeleteRetentionInDays 90 `
-PublicNetworkAccess Disabled `
-NetworkRuleSet $ruleSet `
-Tag $tags `
-SubscriptionId $SubscriptionId
我已经在 Azure 中设置了一个虚拟网络,可以用来访问互联网。
某些政策阻止其创建。
错误信息: 策略不允许资源“testKeyvault”。策略标识符:
“PD-EnforcePurgeProtectionEnabledForKeyVault”, “PD-EnforceSoftDeleteEnabledForKeyVault”
如何使用 Powershell 和策略创建 Azure KeyVault
如果您的
Azure Policy
中有一个 subscription
拒绝创建 Key Vault,而不启用 EnablePurgeProtection
和 EnableSoftDelete
。
如果您尝试使用以下
Key Vault
命令创建带有 EnablePurgeProtection
和 EnableSoftDelete
的 PowerShell
,则似乎 PurgeProtection
未启用,并且不接受 true
或 等任何值false
。
Powershell - 新 AzKeyVault
New-AzKeyVault -VaultName "demovaulttestjg" -ResourceGroupName "Venkat" -Location "East US" -EnabledForDeployment -EnablePurgeProtection -SoftDeleteRetentionInDays 90 -PublicNetworkAccess Disabled -SubscriptionId "<sub-ID"
Azure CLI - az keyvault create
az keyvault create --location "East US" --name "thejvault" --resource-group "Venkat" --enable-purge-protection true --public-network-access Enabled --retention-day 90
或者,您可以使用 CLI 命令创建启用
Key Vault
和 PurgeProtection
的 EnableSoftDelete
,支持将 purge-protection
参数设置为 true
。
我的
subscription
中有相同的策略,但是当我运行相同的 PowerShell
代码时,它给了我同样的错误。