将用户分配的托管标识用于具有代理的 Azure VM

Use user assigned managed identity for Azure VM with proxy

我们创建了一个 Azure VM,其具有用户分配的托管标识,如 here 所述。
导出了以下环境变量,因此 Azure CLI 使用了代理(直接互联网连接在我们的子网中被阻止)。

export http_proxy="http://proxy.local:111"
export https_proxy="http://proxy.local:111"

现在我想使用 az login --idenity 使用分配的托管标识登录到 Azure。
不幸的是,我一直收到以下消息:

Failed to connect to MSI. Please make sure MSI is configured correctly.
Get Token request returned http error: 400, reason: Bad Request

使用 az login --identity --verbose --debug 我们观察到,az login --identity 执行以下调用:

...
urllib3.connectionpool: http://proxy.local:111 "GET http://169.254.169.254/metadata/identity/oauth2/token?resource=https%3A%2F%2Fmanagement.core.windows.net%2F&api-version=2018-02-01 HTTP/1.1" 400 68
...

由于代理设置,az login --identity 正在尝试通过配置的代理连接到 169.254.169.254,但这将不起作用。设置 export no_proxy="169.254.169.254" 解决了问题。