【发布时间】:2018-08-24 22:36:21
【问题描述】:
我正在尝试使用 PowerShell 使用我的 Azure 函数 连接到 Keyvault。 托管服务标识 (MSI) 已打开,并且在 Keyvault 中我授予了 MSI 'get' 和 'list' 访问策略。 使用下面的脚本,我成功获得了访问令牌,但是当我向 Keyvault 发出请求时,我总是收到 401 响应。
$vaultName = $Env:KeyVaultName
$vaultSecretName = $Env:VaultSecretName
$tokenAuthURI = $Env:MSI_ENDPOINT + "?resource=https://vault.azure.net/&api-version=2017-09-01"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token
$headers = @{ 'Authorization' = "Bearer $accessToken" }
$queryUrl = "https://$vaultName.vault.azure.net/keys/" +$vaultSecretName + "?api-version=2016-10-01"
$keyResponse = Invoke-RestMethod -Method GET -Uri $queryUrl -Headers $headers
知道为什么令牌不够用吗?
【问题讨论】:
-
如果要获取secret,需要使用queryUrl
"https://$vaultName.vault.azure.net/secrets/" +$vaultSecretName + "?api-version=2016-10-01"。在您的情况下,您似乎试图获取密钥。您是否授予 MSI 'get' 和 'list' 访问策略来访问密钥? -
@TomSun 感谢您注意到我错误地将
keys放在那里。一旦 Sean 帮助我通过了 401,错误消息也将我引导到那里:)
标签: powershell azure azure-functions azure-keyvault