首页 > 解决方案 > Azure 多订阅密钥保管库访问策略

问题描述

我正在尝试将 keyvault 访问策略从多个 azure 订阅导出到 csv。最好从输入 csv 中提取这些保管库名称和子 ID 并循环遍历它。四处搜索我找到了解决方案,但它们都使用硬编码的保险库名称。我希望这是有道理的。感谢任何帮助。谢谢你。

标签: azurepowershellazure-keyvault

解决方案


你可以试试下面的脚本,它在我这边运行良好。

$subs = Get-AzureRmSubscription
foreach($sub in $subs){
    Set-AzureRmContext -Subscription $sub.Id -Tenant $sub.TenantId
    $vaults = Get-AzureRmKeyVault
    foreach($vault in $vaults){
        $policies = (Get-AzureRmKeyVault -ResourceGroupName $vault.ResourceGroupName -VaultName $vault.VaultName).AccessPolicies
        $policies | select DisplayName, PermissionsToCertificatesStr, PermissionsToKeysStr, PermissionsToSecretsStr | Export-Csv -Path C:\Users\joyw\Desktop\policies.csv -Append -NoTypeInformation
    }
}

policies.csv文件将如下所示:

政策.csv

更新

如果要包含密钥库名称,请尝试以下脚本。

$subs = Get-AzureRmSubscription
foreach($sub in $subs){
    Set-AzureRmContext -Subscription $sub.Id -Tenant $sub.TenantId
    $vaults = Get-AzureRmKeyVault
    foreach($vault in $vaults){
        $policies = (Get-AzureRmKeyVault -ResourceGroupName $vault.ResourceGroupName -VaultName $vault.VaultName).AccessPolicies
        foreach($policy in $policies){
        $obj = [PSCustomObject]@{
            KeyVaultName = $vault.VaultName
            DisplayName = $policy.DisplayName
            PermissionsToCertificatesStr = $policy.PermissionsToCertificatesStr
            PermissionsToKeysStr = $policy.PermissionsToKeysStr
            PermissionsToSecretsStr = $policy.PermissionsToSecretsStr
            }
        $obj |  Export-Csv -Path C:\Users\joyw\Desktop\policies1.csv -Append -NoTypeInformation
       }
    }
}

在此处输入图像描述


推荐阅读