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

適用対象: NoSQL MongoDB Cassandra Gremlin Table

保存時の暗号化という語句は、一般的にはソリッド ステート ドライブ (SSD) やハード ディスク (HDD) などの不揮発性メモリ デバイスでデータを暗号化することを意味します。 Azure Cosmos DB では、プライマリ データベースを SSD に保存します。 そのメディア添付ファイルとバックアップは Azure Blob ストレージに保存され、このストレージは通常 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 など、多くのセキュリティ テクノロジを使用して実装されています。 データの暗号化を解除して処理するシステムは、キーを管理するシステムと通信する必要があります。 図には、暗号化されたデータの格納とキーの管理がどのように分離されているかを示しています。

設計の図

ユーザー要求の基本的なフローは、次のとおりです。

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

よく寄せられる質問

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

A:追加コストはかかりません。

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

A: Azure Cosmos DB アカウントに格納されたデータは、サービス マネージド キーを使用することで、Microsoft が管理するキーにより自動的かつシームレスに暗号化されます。 必要であれば、カスタマー マネージド キー (CMK) を使用して自分で管理しているキーにより、2 層目の暗号化を追加することもできます。

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

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

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

A:はい。この機能は新しい Azure Cosmos DB アカウントで使用できるようになっており、アカウントの作成時に行う必要があります。 詳細については、カスタマー マネージド キーのドキュメントを参照してください。

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

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

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

A:パフォーマンスの SLA への影響や変化はないため、既存および新規のすべてのアカウントで保存時の暗号化が有効になります。 最新の保証の詳細については、「Azure Cosmos DB の SLA」のページを参照してください。

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

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

次のステップ