0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure StorageにSASを使用してアクセスする

Posted at

はじめに

溜まっていた下書きの棚卸しです🤦‍♂️
Azure BlobにSAS(Shared Access Signature)を使ってリソースにアクセスしてみたいと思います。
その中でも今回はユーザ委任SASを使ってアクセスします。

Azure Storageにアクセスする方法

Azure Storageに格納されているファイルには、クライアントがHTTP/HTTPS経由でアクセスします。
Azureでは、格納されているデータにアクセスするための各クライアントの承認要求を確認します。
BLOBストレージに使用可能なオプションは4つあるみたいです。

  • パブリックアクセス
  • Azure Active Directory(Azure AD)
  • 共有キー
  • Shared Access Signature(SAS)

Shared Access Signature(SAS)とは

読取り専用/書き込みアクセス、有効期限など、Azure Storage内のファイルへの詳細なアクセスを許可できます。
Azure Storageでは、次の3種類のShared Access Signatureがサポートされています。

  • ユーザ委任SAS ★今回はこちらを使ってアクセスしたいと思います
  • サービスSAS
  • アカウントSAS

SAS認証の生成してアクセスする

①テストデータをBlobに配置します
スクリーンショット 2023-05-02 222042.png

②PowerShellを起動し、Azureに接続します

# Azure PowerShell要インストール
Connect-AzAccount

③トークン生成用のコマンドを作成します

# ストレージコンテナに格納されているファイルにSASを付与する
$RG = "<リソースグループ名>";

# ストレージアカウント名を設定
$storageAccountName = "<ストレージアカウント名>"

# ストレージアカウントのキーを取得
$storageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $RG -Name $storageAccountName).Value[0]

# ストレージアカウントのコンテキストを作成
$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

# コンテナ名を設定
$containerName = "images"
$BlobName = "BodyPart_5c618d0e-dde5-48dd-baa9-13da7d77753a.jpg";

# SASの有効期限を設定
$expiry = (Get-Date).AddMinutes(5);

# SASの権限を設定
$permissions = "r"

# SASを生成
$sas = New-AzStorageBlobSASToken `
        -Container $containerName `
        -Blob $BlobName `
        -Permission $permissions `
        -ExpiryTime $expiry `
        -Context $ctx `
        -FullUri

# SASを出力
Write-Output $sas

④アクセスしてみます
トークンありだとファイルがダウンロードできることが確認できます。
SASトークンなしだとエラーが出ることが確認できます。
スクリーンショット 2023-05-02 222932.png

所感

今回はBlobにSASを付与することでアクセス制限ができ、セキュリティを強化することを学びました。
外部からBlobにアクセスしたいときや、Congnitive ServiceなどのAIサービスでSASトークンを付与することでより安全にアクセスできると思います。
(いずれ実装してみたいです...)
また実装するときは、有効期限のサイクルを意識する必要があると思うので気を付けたいと思います。
また何か学んだことがあれば投稿したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?