首页 > 解决方案 > 如何通过 curl 生成存储帐户 SAS 令牌

问题描述

我需要使用 curl 命令为 blob 容器生成一个 SAS 令牌。有人可以指导我如何做到这一点

我试过了

curl -X PUT -T LICENSE.TXT --user client id of sp:client secret of sp https://axxx.blob.core.windows.net/etcd-backup

但这表示身份验证的格式不正确

标签: azurecurl

解决方案


请参考两个链接:

  1. 获取访问令牌并使用它来调用 Azure 存储

  2. 从 Azure 资源管理器获取 SAS 凭据以进行存储调用

代码示例:

# get access token
response=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true -s)
access_token=$(echo $response | python -c 'import sys, json; print (json.load(sys.stdin)["access_token"])')
echo The managed identities for Azure resources access token is $access_token

# get the SAS token with access token
curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer $access_token"

请务必将<SUBSCRIPTION ID><RESOURCE GROUP><STORAGE ACCOUNT NAME><CONTAINER NAME><EXPIRATION TIME>参数值替换为您自己的值。


推荐阅读