列出应用程序 ID 已被授予通过 PowerShell 访问权限的所有 Key Vault?

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

运行以下代码,我可以获得授予特定 Key Vault 访问权限的所有应用程序 ID。

$KVName = 'My-Key-Vault-Name'
$KV = Get-AzKeyVault -VaultName $KVName
$accessPolicies = $KV.AccessPolicies
$accessPolicies

结果

Tenant ID                                  : my-tenant-id
Object ID                                  : my-object-id
Application ID                             : my-application-id
Display Name                               : some-fancy-name
Permissions to Keys                        : {Get, List}
Permissions to Secrets                     : {Get, List, Update, Create…}
Permissions to Certificates                : {Get, List, Update, Create…}
Permissions to (Key Vault Managed) Storage : {}

但是,我正在尝试获取特定应用程序 ID 已被授予访问权限的所有 Key Vault 的列表。这可以通过 PowerShell 实现吗?

任何帮助/提示都会非常有帮助。

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

首先,从脚本的 response 中获取应用程序的 Object ID

$KVName = 'devikv'
$KV = Get-AzKeyVault -VaultName $KVName
$accessPolicies = $KV.AccessPolicies
$accessPolicies

回复:

enter image description here

要通过基于应用程序对象 ID 进行过滤来列出应用程序已被授予访问权限的所有 Key Vault,您可以运行以下 PowerShell 脚本:

$AppObjId = 'e7ceed60-0947-467f-a33a-xxxxxxx'
$KeyVaults = Get-AzKeyVault

foreach ($KV in $KeyVaults) {
    $AccessPolicies = (Get-AzKeyVault -VaultName $KV.VaultName).AccessPolicies
    foreach ($Policy in $AccessPolicies) {
        if ($Policy.ObjectId -eq $AppObjId) {
            Write-Output "Application has access to $($KV.VaultName)" 
        }
    }
}

回复:

enter image description here

如果您想通过基于应用程序ID进行过滤来列出应用程序已被授予访问权限的所有密钥保管库,请使用以下修改后的脚本:

$AppId = 'b4bbcad3-9c6c-441e-b585-xxxxxxx'
$KeyVaults = Get-AzKeyVault

foreach ($KV in $KeyVaults) {
    $AccessPolicies = (Get-AzKeyVault -VaultName $KV.VaultName).AccessPolicies
    foreach ($Policy in $AccessPolicies) {
        if ($Policy.ApplicationId -eq $AppId) {
            Write-Output "Application has access to $($KV.VaultName)" 
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.