如何使用带有策略的 Powershell 创建 Azure KeyVault

问题描述 投票:0回答:1

我创建了一个 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”

azure powershell azure-keyvault
1个回答
0
投票

如何使用 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
代码时,它给了我同样的错误。

enter image description here

参考:New-AzKeyVaultaz keyvault create

© www.soinside.com 2019 - 2024. All rights reserved.