运行以下代码,我可以获得授予特定 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 实现吗?
任何帮助/提示都会非常有帮助。
首先,从脚本的 response 中获取应用程序的 Object ID:
$KVName = 'devikv'
$KV = Get-AzKeyVault -VaultName $KVName
$accessPolicies = $KV.AccessPolicies
$accessPolicies
回复:
要通过基于应用程序对象 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)"
}
}
}
回复:
如果您想通过基于应用程序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)"
}
}
}