Azure Table Storageは、構造化かつ非リレーショナルなデータのためのNoSQLキー-値ストアを提供します。 テーブルセキュリティは他のAzure Storageデータサービスと基本的な要素を共有していますが、Microsoft Entra IDの認証面やAzure Cosmos DB for Table APIとの重複など、注目に値する点があります。
注
この記事では、Azure Table Storageに特有のセキュリティ実践について解説します。 アカウントレベルのセキュリティガイダンスについては、「Secure your Azure Storage account」をご覧ください。
サービス固有のセキュリティ
Azure Table StorageとAzure Cosmos DB for Table APIは、類似したテーブルデータモデルを公開していますが、セキュリティ能力は大きく異なります。 プロジェクト開始時にセキュリティ要件を満たすプラットフォームを選択してください。 両者間のデータ移行は簡単ではありません。
専用スループット、グローバル配布、またはテーブルごとのより細かいネットワーク隔離が必要な場合、Azure Cosmos DB for Tableをご利用ください:Cosmos DB for Table APIは、ストレージアカウントに依存しない独自のプライベートエンドポイント、ファイアウォール、IAM設定を持つ独立したリソースです。 これにより、Tableワークロードが一般的なストレージアカウントを共有するワークロードと異なるネットワークやガバナンスの要件がある場合に、隔離された爆発範囲が得られます。 詳細については、「Introduction to Azure Cosmos DB for Table」をご覧ください。
Blob、ファイル、キューとアカウントレベルのコロケーションが必要な場合はAzure Table Storageを使いましょう:Table Storageは汎用ストレージアカウント内に存在するため、4つのデータサービスすべてに単一のネットワークルール、プライベートエンドポイント、アイデンティティポリシーが適用されます。 Cosmos DB for Tableは独立したセキュリティ設定を持つ独立したリソースです。
アイデンティティとアクセス管理
Microsoft Entra IDを使ってテーブルデータ操作を認証する:Entra ID認証はアプリケーションコード内のアカウントキーを不要にし、アイデンティティベースの監査トレイルを提供します。 可能な限り、組み込みの ストレージテーブルデータリーダー または ストレージテーブルデータ 貢献者の役割をテーブルスコープに割り当てます。 詳細については、「Microsoft Entra ID を使ったテーブルへのアクセスを許可する」をご覧ください。
特定のテーブルへのスコープロール割り当て:組み込みのテーブルデータロールにはテーブルレベルのスコープがサポートされています。 サービスが1つのテーブルのみにアクセスする必要がある場合は、アカウントではなくテーブルリソースで役割を割り当ててください。
SASトークンを特定のパーティションおよび行キー範囲にスコープ:テーブルSASはパーティションキーおよび行キー範囲の制限をサポートしています。 トークンを複数テナントテーブル内の単一のテナントの行に限定したり、特定のデータスライスに限定したりするために使えます。 詳細については、「Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する」を参照してください。
必要な特定のテーブル操作のみを付与してください:テーブルSASは、
query、add、update、delete権限を別々にサポートします。 リーダースタイルの呼び出し元は、queryのみを保持し、updateやdeleteを保持してはいけません。
データ保護
Table Storageはエンティティを平らなプロパティバッグとして保存し、エンティティごとのACLを使いません。 アクセス制御を後付けしようとするのではなく、パーティション戦略においてセキュリティを考慮しましょう。
アクセス境界に合わせたパーティションテーブル:テーブルが複数のテナントや分類レベルにサービスを提供する場合、テナントや分類ごとにエンティティをグループ化するパーティションキーを選択します。 これに加えて、SASのパーティションキー範囲制限を組み合わせて、テナントごとに別々のテーブルを設けずにテナント隔離を強制できます。
エンティティプロパティに秘密や不要な個人データを保存しないでください:エンティティはテーブルやパーティションにアクセス
queryまたはreadアクセスを持つすべてのプリンシパルに見えます。 秘密はAzure Key Vaultにエンティティ内の参照とともに保存し、クエリ可能なプロパティに置く個人データを最小限に抑えましょう。アプリケーション層での機密プロパティ値の暗号化:機密保持が必要なプロパティ値については、挿入または更新前にKey Vaultの鍵でクライアント内の値を暗号化してください。 この暗号化は、テーブル全体に適用されるストレージ側の暗号化とは独立しています。 詳細については、キーについてのページを参照してください。
ログ記録と監視
テーブル操作の診断設定を有効にする:
StorageRead、StorageWrite、StorageDeleteカテゴリをLog Analyticsに送信します。 予期しない認証方法、特に無効化すべきアカウントでの共有鍵アクセスに関するアラート。 詳細については、「Azure Table Storage の監視」を参照してください。大量の削除または更新操作に対する警告:テーブルの基準から逸脱した大量
DeleteEntityやUpdateEntity活動は、データの破壊や改ざんを示す可能性があります。 基準を設定し、逸脱があれば警告を発します。
関連するセキュリティ記事
- Azure Storage アカウントを保護する - Azure Storage の全般的なセキュリティ ガイダンス。
- Azure Blob Storage を保護する - Blob 向けのセキュリティ。
- Azure Filesのセキュリティを保護しましょう - ファイル共有のセキュリティ。
- Azure Queue Storage - キュー固有のセキュリティを保護しましょう。