Azure Cosmos DB でのデータの暗号化

適用対象: NoSQL MongoDB Cassandra Gremlin Table

"保存時の暗号化" という語句は、一般的にはソリッド ステート ドライブ (SSD) やハード ディスク ドライブ (HDD) などの不揮発性ストレージ デバイス上でのデータの暗号化を指します。 Azure Cosmos DB では、プライマリ データベースを SSD に保存します。 そのメディア添付ファイルとバックアップは Azure Blob Storage 内に保存されます (通常、HDD でバックアップされます)。 Azure Cosmos DB に保存されたデータが暗号化できるようになったため、すべてのデータベース、メディア添付ファイル、バックアップが暗号化されます。 データの転送中 (ネットワーク経由) と保存時 (非揮発性メモリ) にデータが暗号化されることで、エンド ツー エンドの暗号化が実現しました。

サービスとしてのプラットフォーム (PaaS) として、Azure Cosmos DB は簡単に使用することができます。 Azure Cosmos DB に保存されているすべてのユーザー データは、保存時と転送時に暗号化されているため、操作は何も必要ありません。 つまり、保存時の暗号化は既定で "オン" になります。 オンまたはオフにするコントロールはありません。 Azure Cosmos DB では、アカウントが実行されているすべてのリージョンで AES 256 暗号化が使われます。

この機能は、可用性とパフォーマンスのサービス レベル アグリーメント (SLA) を満たし続けながら提供されます。 Azure Cosmos DB アカウントに格納されたデータは、Microsoft が管理するキー (サービス マネージド キー) を使用して自動的かつシームレスに暗号化されます。 必要に応じて、カスタマー マネージド キーの記事で説明されているように、独自のキーを使用して 2 つ目の暗号化レイヤーを追加することもできます。

Azure Cosmos DB に保存時の暗号化の実装

保存時の暗号化は、セキュリティで保護されたキー ストレージ システム、暗号化ネットワーク、暗号化 API など、いくつかのセキュリティ テクノロジを使用して実装されています。 データの暗号化を解除して処理するシステムは、キーを管理するシステムと通信する必要があります。 図には、暗号化されたデータの格納とキーの管理がどのように分離されているかを示しています。

Diagram that shows data storage and key management design.

ユーザー要求の基本的なフロー:

  • ユーザー データベース アカウントが準備され、ストレージ キーが管理サービス リソース プロバイダーへの要求を通じて取得されます。
  • ユーザーは、HTTPS やセキュリティで保護されたトランスポートを通じて、Azure Cosmos DB への接続を作成します。 (SDK が詳細を抽象化します。)
  • ユーザーは、先に作成したセキュリティで保護された接続経由で、格納対象である JSON ドキュメントを送信します。
  • ユーザーがインデックスを無効にしていない限り、JSON ドキュメントのインデックスが作成されます。
  • JSON ドキュメントとインデックス データの両方が、セキュリティで保護されたストレージに書き込まれます。
  • データはセキュリティで保護されたストレージから定期的に読み取られ、Azure の暗号化された Blob ストアにバックアップされます。

よく寄せられる質問

暗号化に関してよく寄せられる質問への回答をご覧ください。

Storage Service Encryption を有効にすると、Azure Storage の料金はどれくらい増えますか?

追加コストは発生しません。

だれが暗号化キーを管理するのですか?

ご利用の Azure Cosmos DB アカウント内の格納データは、サービス マネージド キーを使用することで、Microsoft が管理するキーによって自動的かつシームレスに暗号化されます。 必要に応じて、カスタマー マネージド キーを使用することで、自分で管理するキーによる 2 つ目の暗号化レイヤーの追加を選択することができます。

暗号化キーが交換される頻度はどの程度ですか?

Microsoft には暗号化キーのローテーションに関する一連の内部ガイドラインがあり、Azure Cosmos DB はそれに準拠します。 個々のガイドラインは公開されていません。 Microsoft が公開しているセキュリティ開発ライフ サイクルは、内部用ガイダンスのサブセットと見なされ、開発者に便利なベスト プラクティスが収められています。

独自の暗号化キーを使用できますか?

はい。この機能は、新しい Azure Cosmos DB アカウントで使用することができます。 アカウントの作成時にデプロイする必要があります。 詳しくは、カスタマー マネージド キーに関するドキュメントをご参照ください。

警告

次のフィールド名は、カスタマー マネージド キーを使用して、アカウント内の Cassandra API テーブルに予約されています。

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

カスタマー マネージド キーが有効になっていない場合は、__sys_ で始まるフィールド名のみが予約されます。

どのリージョンで暗号化が有効になっていますか?

すべての Azure Cosmos DB リージョンで、すべてのユーザー データに対して暗号化が有効になっています。

暗号化はパフォーマンス (待機時間およびスループット) の SLA に影響しますか?

保存時の暗号化は既存および新しいアカウントすべてに対して有効になっているため、パフォーマンス SLA に対する影響や変更はありません。 最新の保証内容については、Azure Cosmos DB の SLA をご参照ください。

ローカル エミュレーターは、保存時の暗号化に対応していますか?

エミュレーターはスタンドアロンの開発/テスト ツールであり、管理された Azure Cosmos DB サービスで使用されるキー管理サービスを使用しません。 機密性の高いエミュレーター テスト データを格納しているドライブ上では、BitLocker を有効にすることをお勧めします。 エミュレーターは既定のデータ ディレクトリの変更と、既知の場所の使用をサポートします。

次のステップ