如何通过PowerShell获取某应用ID有权限的所有Key Vault?
获取特定应用ID有权限的所有Key Vault(PowerShell实现)
可以通过PowerShell实现这个需求,核心思路是遍历所有Key Vault,检查每个Vault的访问策略中是否包含目标应用ID,具体脚本如下:
基础脚本(单订阅)
# 替换为你要查询的目标应用ID $targetAppId = "your-target-application-id" # 获取当前订阅下的所有Key Vault $allKeyVaults = Get-AzKeyVault # 筛选出包含目标应用ID访问权限的Key Vault $authorizedVaults = foreach ($vault in $allKeyVaults) { # 提取当前Vault的所有访问策略 $accessPolicies = $vault.AccessPolicies # 检查是否存在匹配目标应用ID的策略 if ($accessPolicies.ApplicationId -contains $targetAppId) { # 输出关键信息,可根据需要调整字段 [PSCustomObject]@{ VaultName = $vault.VaultName ResourceId = $vault.ResourceId Location = $vault.Location TenantId = $vault.TenantId } } } # 打印结果 $authorizedVaults
跨多订阅查询
如果需要查询当前账号有权访问的所有订阅中的Key Vault,可使用以下扩展脚本:
$targetAppId = "your-target-application-id" $authorizedVaults = @() # 获取所有可访问的订阅 $allSubscriptions = Get-AzSubscription foreach ($sub in $allSubscriptions) { # 切换到当前订阅 Set-AzContext -Subscription $sub.Id | Out-Null Write-Host "正在查询订阅: $($sub.Name)" $keyVaults = Get-AzKeyVault foreach ($vault in $keyVaults) { if ($vault.AccessPolicies.ApplicationId -contains $targetAppId) { $authorizedVaults += [PSCustomObject]@{ SubscriptionName = $sub.Name SubscriptionId = $sub.Id VaultName = $vault.VaultName ResourceId = $vault.ResourceId Location = $vault.Location } } } } # 输出最终结果 $authorizedVaults
注意事项
- 确保已安装Az PowerShell模块:执行
Install-Module -Name Az -Scope CurrentUser -Force完成安装 - 执行前需登录Azure账号:运行
Connect-AzAccount进行身份验证 - 账号需要具备Key Vault Reader或更高权限,才能读取Key Vault的访问策略信息
内容的提问来源于stack exchange,提问作者EZR
相关产品推荐
相关产品推荐

