Get-AzApiManagementSubscription查询未返回主密钥的原因与解决办法
核心原因
你贴的执行结果是PowerShell环境下Az PowerShell模块的返回,不属于Az CLI的执行结果。Get-AzApiManagementSubscription cmdlet默认不返回PrimaryKey、SecondaryKey字段值不是权限问题,是接口调用逻辑的默认设计:默认调用的订阅列表/基础信息查询接口出于安全考虑,不会直接返回订阅密钥明文,即便是订阅级别的Owner账号跑默认参数,拿到的密钥字段也为空。
正确获取密钥的方法
- 针对Az PowerShell模块:在原命令后追加
-GetSecrets开关参数,显式调用密钥查询接口即可拿到明文密钥,命令如下:
Get-AzApiManagementSubscription -Context $apimContext -GetSecrets
执行后返回结果中的PrimaryKey、SecondaryKey字段会自动填充对应值。
- 针对Az CLI工具:不能用默认的
az apim subscription list/show命令,需要加--include-secrets参数触发密钥接口调用,示例命令:
az apim subscription show --resource-group <你的APIM资源组名> --service-name <你的APIM实例名> --sid <目标订阅ID> --include-secrets
权限排查说明
如果加了上述参数后仍然拿不到密钥值,再排查权限问题:
- 执行操作的账号需要被授予APIM实例范围内的
Microsoft.ApiManagement/service/subscriptions/listSecrets/action操作权限,内置角色中的Owner、Contributor、API Management Service Contributor默认自带该权限;如果账号只有Reader等只读角色,没有对应密钥查询接口的调用权限,就无法拿到密钥值。
内容的提问来源于stack exchange,提问作者djangofan
相关产品推荐
相关产品推荐

