📦
BLOB ストレージへのアクセス認可を整理する
はじめに
BLOB ストレージには、アクセスキーと Azure AD 認可の 2 つのアクセス認可方法があります。(SAS もありますが、これはアクセスキーと Azure AD 認可をベースとしたものですね)
ちょっと分かりづらかったので、備忘録的に整理します。
ちなみに、BLOB ストレージのアクセス認可に関しては、ストレージ アカウントのネットワークレベルのアクセス許可されている前提なので、こちらは排他ではなく両方とも許可されて初めてアクセスができることになります。
アクセス キー
- ストレージ アカウントに対してアクセス キーで認可
- RBAC でアクセス キーへのアクセス許可
Microsoft.Storage/storageAccounts/listkeys/action
の権限を持つ場合は透過的に BLOB ストレージへのアクセスが認可 - ストレージ アカウントの構成とデータへのフル アクセスを提供
- そのため厳密に保護する必要あり (できる限り使わない)
https://learn.microsoft.com/ja-jp/azure/storage/common/storage-account-keys-manage?tabs=azure-portal
Azure AD 認可
- Azure RBAC を使用してユーザー、グループ、サービス プリンシパル、マネージド ID にアクセス許可を付与
- アプリケーション コードでアクセスするためにはクライアント ライブラリでアクセストークンを取得する必要あり
- 単純な RBAC だけでなく、より詳細な条件を記載することが可能
- "Azure Storage" のアプリ指定で Azure AD 条件付きアクセスで制御することが可能
アクセス キーを Azure AD 認可は併用可能?
こちらは併用可能です。Azure Portal からコンテナーにアクセスすると、「認証方法: 」という項目があるため、コンテナーごとにどちらを使用するのか選択するのかと思っていたのですが、そうではなく、操作しているユーザーが両方の権限を有している場合にどちらの権限でアクセスするかの選択になるようです。
なお、ストレージ BLOB データ共同作成者などの Azure AD RBAC の権限しか持たない (アクセスキーの Microsoft.Storage/storageAccounts/listkeys/action
を持たない) 場合、以下のように Azure AD ではアクセスできますが、アクセス キーに切り替えるとアクセス不可になります。
Discussion