{Azure Storage}Azure CLI を使用してコンテナーまたは BLOB のユーザー委任 SAS を作成する

 

https://learn.microsoft.com/ja-jp/azure/storage/blobs/storage-blob-user-delegation-sas-create-cli
https://learn.microsoft.com/ja-jp/azure/storage/common/storage-sas-overview
https://qiita.com/___uhu/items/3c2312359da542cda163

Azure Storage では、次の 3 種類の Shared Access Signature がサポートされています。

ユーザー委任 SAS
サービス SAS
アカウント SAS

Microsoft では、ユーザー委任 SAS を可能な限り使用することを推奨しています。


-- 1. 前作業

az login --use-device-code
az account show

az version

az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults

az group create \
--name rg9999999 \
--location japaneast

az group list
az upgrade


-- 2. ストレージアカウントの作成

az storage account create \
--resource-group rg9999999 \
--name st123 \
--access-tier Hot \
--kind StorageV2 \
--sku Standard_LRS


az storage account list \
--resource-group rg9999999

-- 3. コンテナーの作成

key=$(az storage account keys list \
--account-name st123 \
--resource-group rg9999999 \
--output json \
--query [0].value | tr -d '"')

echo $key


az storage container create \
--name container01 \
--account-name st123 \
--public-access off \
--account-key $key


-- 4. コンテナーにオブジェクトをアップロード

echo test > test.txt

az storage blob upload \
--account-name st123 \
--container-name container01 \
--name test.txt \
--file test.txt \
--account-key $key

az storage blob list \
--account-name st123 \
--container-name container01 \
--output table \
--account-key $key


-- 5. Azure RBAC を使用してアクセス許可を割り当てる

az ad user list

az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee-object-id "11111111-1111-1111-1111-111111111111" \
--assignee-principal-type User \
--scope "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg9999999/providers/Microsoft.Storage/storageAccounts/st123"

 

-- 6. BLOB 用のユーザー委任 SAS を作成する

-- Macで30分後の時刻をUTCで取得

end=$(date -u -v +3M '+%Y-%m-%dT%H:%MZ')
echo $end


az storage blob generate-sas \
--account-name st123 \
--container-name container01 \
--name test.txt \
--permissions r \
--expiry $end \
--auth-mode login \
--as-user \
--full-uri


生成されたURLで3分間のみアクセス可能


-- 7. クリーンアップ

az storage account delete \
--resource-group rg9999999 \
--name st123 \
--yes


az group list
az group delete \
--name rg9999999 \
--yes