[Azure]ストレージセキュリティ

Azureのストレージサービスにおいて、セキュリティ機能を使用して安全にデータを保存・転送・アクセスする方法について

Azureストレージサービス

Azureのストレージサービスには以下の種類がある。

  • コンテナー (Blobストレージ)
  • ファイル共有 (Azure Files)
  • キューストレージ (Queue)
  • テーブルストレージ (Table)

これらは全てセキュリティで保護され、アクセス要求に対して承認が行われた際に、ユーザーまたはアプリケーションで利用することができる。

アクセス要求と認可の方法

匿名アクセス

コンテナーに保存されたBlobデータに対して匿名のパブリック読み取りアクセスを行う。

Blobコンテナーのパブリックアクセスレベルを「匿名読み取りアクセス」に変更することで可能になる。

共有アクセスキー

アカウントのアクセスキーとほかのパラメータを使用して生成された接続文字列を用いてアクセスする。

一定期間でキーを再生成しローテーションする運用が推奨される。そのため交換時のダウンタイムを防ぐため、キーは2種類用意されている。

SAS (Shared Access Signatures)

ストレージへの制限付きアクセスを提供するSASトークンと呼ばれるURIパラメータを付与してアクセスすることができる。

SASを利用することで制限された必要最低限の権限を付与することができるうえ、SASの情報が漏れたとしてもセキュリティリスクを軽減することができる。

アカウントSAS、サービスSAS、ユーザー委任SASの3種類がある。

アカウントSAS

ストレージアカウントに対する操作を提供する。以下の項目を設定できる。

  • 使用できるサービス
    BLOB、ファイル、キュー、テーブル
  • 使用できるリソース
    サービス、コンテナー、オブジェクト
  • アクセス許可
    読み取り、書き込み、削除、リスト、追加、作成、更新、プロセス、不変ストレージ
  • 開始日時と有効期限
  • 使用許可するIPアドレス
  • 署名キー
サービスSAS

ストレージアカウントの特定のリソースに対する操作を提供する。以下の項目を設定できる。

  • 署名キー
  • 保存済みのアクセスポリシー
  • アクセス許可
    読み取り、書き込み、削除、リスト、追加、作成、更新、プロセス、不変ストレージ
  • 開始日時と有効期限
  • 使用許可するIPアドレス

一度生成したSASトークンは内容を変更することはできない。したがって有効期限内にトークンを無効にするには、共有アクセスキーを変更する必要がある。

ユーザー委任SAS

サービスSASと同等の機能を提供する。違いは署名キーの生成にアカウントキーではなく、Azure ADの資格情報を使用する。

なお、侵害されやすいアカウントキーを使用するサービスSASではなく、可能な限りAzure ADの資格情報を使用するユーザー委任SASの使用が推奨される。

Azure AD認証

Azure ADを使用したBLOBデータへの認証がサポートされている。Azure ADではRBACを使用して、サービスプリンシパル(ユーザー、グループ、アプリケーション、マネージドID)にアクセスを許可することができる。この時アクセス許可を付与された状態を、セキュリティプリンシパルという。

セキュリティプリンシパルは、Azure ADによって認証され、OAuth2.0トークンをが返される。このトークンを使用してBLOBデータに対する操作が可能になる。

BLOBアクセス用組み込みロール

Azureストレージのデータへのアクセス許可を付与するBLOB用組み込みロールとしては以下のものがある。

  • BLOBデータ所有者
    BLOBコンテナーとデータに対するフルアクセスを許可
  • BLOBデータ共同作成者
    BLOBコンテナーとデータに対する読み取り、書き込み、削除を許可
  • BLOBデータ閲覧者
    BLOBコンテナーとデータに対する読み取りを許可

コメント

このブログの人気の投稿

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)