mirror of https://github.com/k3s-io/k3s
Merge pull request #75841 from javier-b-perez/automated-cherry-pick-of-#75269-upstream-release-1.14
Automated cherry pick of #75269: gce: configure: validate SA has storage scopepull/564/head
commit
67f265712b
|
@ -124,11 +124,16 @@ function validate-hash {
|
|||
}
|
||||
|
||||
# Get default service account credentials of the VM.
|
||||
GCE_METADATA_INTERNAL="http://metadata.google.internal/computeMetadata/v1/instance"
|
||||
function get-credentials {
|
||||
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" -s | python -c \
|
||||
curl "${GCE_METADATA_INTERNAL}/service-accounts/default/token" -H "Metadata-Flavor: Google" -s | python -c \
|
||||
'import sys; import json; print(json.loads(sys.stdin.read())["access_token"])'
|
||||
}
|
||||
|
||||
function valid-storage-scope {
|
||||
curl "${GCE_METADATA_INTERNAL}/service-accounts/default/scopes" -H "Metadata-Flavor: Google" -s | grep -q "auth/devstorage"
|
||||
}
|
||||
|
||||
# Retry a download until we get it. Takes a hash and a set of URLs.
|
||||
#
|
||||
# $1 is the sha1 of the URL. Can be "" if the sha1 is unknown.
|
||||
|
@ -144,7 +149,7 @@ function download-or-bust {
|
|||
rm -f "${file}"
|
||||
# if the url belongs to GCS API we should use oauth2_token in the headers
|
||||
local curl_headers=""
|
||||
if [[ "$url" =~ ^https://storage.googleapis.com.* ]]; then
|
||||
if [[ "$url" =~ ^https://storage.googleapis.com.* ]] && valid-storage-scope ; then
|
||||
curl_headers="Authorization: Bearer $(get-credentials)"
|
||||
fi
|
||||
if ! curl ${curl_headers:+-H "${curl_headers}"} -f --ipv4 -Lo "${file}" --connect-timeout 20 --max-time 300 --retry 6 --retry-delay 10 ${CURL_RETRY_CONNREFUSED} "${url}"; then
|
||||
|
|
Loading…
Reference in New Issue