提供对多个Azure存储帐户的访问权限

tv6aics1  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(128)

我需要提供75个不同存储帐户中所有资源类型的读取和列表访问权限,遗憾的是我不能为此创建IAM用户。
我可以创建SAS,但是,这需要为每个存储帐户创建75个不同的SAS。
我试着想出一个for循环来帮我完成这件事,但是,看起来我仍然需要做很多手工工作才能让它工作。

#!/bin/bash

resourceType="sco"
permissions="rl"
expiry=$(date -u -d "next month" +%Y-%m-%dT%H:%MZ)
storageAccounts=$(az storage account list --query "[].name" --output tsv)

for account in $storageAccounts; do
    sas=$(az storage account generate-sas \
        --account-name $account \
        --resource-types $resourceType \
        --services bfqt \
        --permissions $permissions \
        --expiry $expiry \
        --output tsv)
    echo "SAS token for $account:"
    echo "https://$account.blob.core.windows.net/?$sas"
done

我在想,我还有什么更聪明的办法吗?

nnvyjq4y

nnvyjq4y1#

我做的方式和你一样,并通过使用以下过程,我想这是唯一的方法来做到这一点,我已经在我的环境中重现,并得到了预期的结果如下,我遵循Microsoft-Document1Microsoft-Document2
首先使用以下命令获取所有存储帐户:

rgp="resource grp name"

stAcc=$(az storage account list \
    --resource-group $rgp \
    --query '[].name' \
    --output tsv)

echo "Storage accounts in $rgp:"
echo "$stAcc"

然后使用以下命令为上述存储帐户创建sas令牌:

for s in $stAcc; do
 sasTkn=$(az storage account generate-sas \
        --account-name $s \
        --expiry $(date -d "1 day" '+%Y-%m-%dT%H:%MZ') \
        --permissions rwdlac \
        --resource-types sco \
        --services b \
        --https-only \
        --output tsv) 
        
    echo "SAS token for $s: $sasTkn"
done

输出:

这是因为您首先需要存储帐户的名称,然后只有您可以生成SAS令牌。

相关问题