Azure Blob Storageへの
様々なアクセス方法を比べてみた
Japan Azure User Group 12周年イベント
2022/09/24
Shingo Kawahara
1
自己紹介
• 河原慎吾
• 株式会社セゾン情報システムズ
• R&D組織
• クラウド/コンテナ担当
• 経歴
• VMwareベースの自社クラウド構築/運営
⇓⇓⇓
• パブリッククラウド活用推進
Qiita
• Azure中心に書き溜めているので参考になればうれしいです!
• https://qiita.com/shingo_kawahara
• フォローお待ちしております♪
3
Azure CLIで
Blob Storageにアクセスしたいとき
どのようにやっていますか?
ID/パスワード?
アクセスキー?
SAS?
マネージドID?
Service Principal?
まずはそれぞれの方式を
紐解いていきます
ID/パスワード
• 対話式にログインする方法。一時的に利用する分にはよく使う
• 対話式なのでシステムに組み込むことはできない
• 厳密には、 az login -u <username> -p <password> で、パスワードを隠蔽すれ
ばいけなくはないが、人に依存するので退職等でIDがなくなる懸念がある
7
> az login
A web browser has been opened at xxx
> az storage blob list --auth-mode login --
account-name <account name> -c <container
name>
Service Principal
• 事前にAADにService Principalを作成し、シークレットを設定する(最大
2年なので期限はある)
• 作成したSPにBlobへのアクセス権限を付与する
• コマンドでログインしBlobにアクセスする
• SPにすることで人に依存することはなくなる
• だがログイン時にパスワードを隠蔽しないといけないのは変わらないのと、
シークレットキーローテーションは考えないといけない
8
> az login --service-principal -u <app-id>
-p <password> --tenant <tenant>
> az storage blob list --auth-mode login --account-name
<account name> -c <container name>
アクセスキー
• ストレージアカウントのアクセスキー
を使ってログインする方法
• アクセスキーはStorage Accountの
rootユーザーみたいなものなので
漏れたら一大事
• az loginは不要。アクセスキーが分かれば誰でもアクセスできる
9
> az storage blob list --container-name test --account-name
<account name> --account-key <account key>
SAS
• ストレージアカウントへの一時的なアクセス権を発行する方法。ア
カウントSAS、サービスSAS、ユーザー委任SASの3種類があるが、
ユーザー委任SASが推奨されている
• アカウントSAS
• ストレージアカウントのアクセスキーで署名する方法。アクセスキーが漏洩
したら最悪なのであまり推奨されない
• サービスSAS
• 上記アカウント毎ではなく、Blob,Table等のサービス毎のSAS発行。スト
レージアカウントのアクセスキーで署名するのは変わらない
• ユーザー委任SAS
• アクセスキーではなくユーザー(AzureAD資格情報)で委任する方法
• SASを使う場合これが推奨されている(アクセスキーを無効にできる)
10
SAS
• ID/パスワードやSP、アクセスキー方式と比べて、
より細かく権限設定が可能
• 例
• あるコンテナーにのみ読み取りアクセス
権を与える
• アクセス元IPアドレスを絞る
• 有効期限を設定する
• 発行されたSASトークンを使ってアクセスする。az loginは不要
11
> az storage blob list --container-name test --account-name
<account name> --sas-token <sas token>
ユーザー委任SAS
• ユーザー委任SASの場合は、ストレージアカウントのアクセスキーを無効
にできる
• ユーザー委任SASの使い方はQiitaに書いてますので気になる方は是非ご
覧ください
• https://qiita.com/shingo_kawahara/items/6752a89ad814f47e318e
12
マネージドID
• マネージドIDを使うことで、Azureリソースに対してロール(権限)を割
り当てることが可能になる
• ロールには通常ユーザーを割り当てるが、権限割り当て画面で以下のよう
にリソースを割り当てることができる
• この例では、Blog Storageへのアクセス権限「ストレージBLOBデータ共同作成者」
をVMに与えている
• マネージドIDを使うことで、パスワードやアクセスキーといった秘匿情
報を使うことなくセキュアにアクセスすることができる
13
マネージドID
• システム割り当てマネージドID、ユーザー割り当てマネージド
IDの2種類があり、以下のようなユースケースで使い分ける
• システム割り当てマネージドID
• 1つのリソースにつき1つのアクセス先のみ利用する場合
• 例えば1つのVMで複数のBlobへのアクセスが必要な場合は利用できない
• 同一テナントで異なるサブスクリプションを跨いで利用する場合
• ユーザー割り当てマネージドID
• マネージドIDを複数のリソースで共有する場合
• 例えば複数のVMで同じマネージドIDを使いたい場合はユーザー割り当てマネー
ジドID1つでよい。システム割り当ての場合は、VM毎に作る必要がある
14
マネージドID
• Azure外からの利用はできない
• ストレージアカウントのアクセスキーを無効にできる
• マネージドIDを使うと以下のようにパスワードなどの秘匿情報
を持たなくて利用できる
15
> az login --identity
> az storage blob list --container-name test --account-name
<account name> --auth-mode login
利用シーン別に
どの方式が最適なの?
Blob
Azure
アクセス元に応じてファーストチョイスを変える
vNet
VM
Azure内だとマネージドID
Azure外だとユーザー委任SAS

Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント