You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:16