Skip to content

Instantly share code, notes, and snippets.

@oleewere
Created February 19, 2020 20:55
Show Gist options
  • Save oleewere/830b465df50aa1093b27d38975be8c8c to your computer and use it in GitHub Desktop.
Save oleewere/830b465df50aa1093b27d38975be8c8c to your computer and use it in GitHub Desktop.
Get user assigned Azure Managed Identity from running VM by curl (with default MSI)
#!/usr/bin/env sh
function main() {
local defaultMsi=$1
access_token=$(curl -s -k -H "Metadata: true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" | jq .access_token | tr -d '"')
access_token_status=$?
if [[ "${access_token_status}" != "0" ]]; then
echo "$defaultMsi"
return 0
fi
instance_metadata=$(curl -s -k -H "Metadata: true" "http://169.254.169.254/metadata/instance?api-version=2019-06-01")
instance_metadata_status=$?
if [[ "${instance_metadata_status}" != "0" ]]; then
echo "$defaultMsi"
return 0
fi
subscriptionId=$(echo "${instance_metadata}" | jq .compute.subscriptionId | tr -d '"')
resourceGroup=$(echo "${instance_metadata}" | jq .compute.resourceGroupName | tr -d '"')
vmName=$(echo "${instance_metadata}" | jq .compute.name | tr -d '"')
vmMsiResponse=$(curl -s -k "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Compute/virtualMachines/${vmName}?api-version=2018-06-01" -H "Authorization: Bearer ${access_token}")
vmMsiResponse_status=$?
if [[ "${vmMsiResponse_status}" != "0" ]]; then
echo "$defaultMsi"
return 0
fi
vmAuthFeiled=$(echo "${vmMsiResponse}" | grep -q "AuthorizationFailed")
vmAuthFeiled_status=$?
if [[ "${vmAuthFeiled_status}" == "0" ]]; then
echo "$defaultMsi"
return 0
fi
vmMsi=$(echo "${vmMsiResponse}" | jq -r '.identity.userAssignedIdentities | keys[] as $k | "\($k)"' )
vmMsi_status=$?
if [[ "${vmMsi_status}" != "0" ]]; then
echo "$defaultMsi"
return 0
fi
echo "$vmMsi"
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment