NoSQLのAzure Cosmos DBは、ミッション クリティカルなアプリケーション向けに設計されたグローバル分散型のマルチモデル データベース サービスです。 Azure Cosmos DBにはデータを保護するための組み込みのセキュリティ機能が用意されていますが、ベスト プラクティスに従って、アカウント、データ、ネットワーク構成のセキュリティをさらに強化することが不可欠です。
この記事では、NoSQL展開のためにAzure Cosmos DBを最適にセキュリティで保護する方法に関するガイダンスを提供します。
ネットワークのセキュリティ
パブリック ネットワーク アクセスを許可し、プライベート エンドポイントのみを使用する: Azure委任された仮想ネットワークへのネットワーク アクセスを制限する構成でNoSQLのAzure Cosmos DBをデプロイします。 アカウントは、構成した特定のサブネットを介して公開されます。 次に、アカウント全体のパブリック ネットワーク アクセスを無効にし、アカウントに接続するサービス専用のプライベート エンドポイントを使用します。 詳細については、 仮想ネットワーク アクセスの構成 と プライベート エンドポイントからのアクセスの構成に関する説明を参照してください。
ネットワーク分離のための有効なネットワーク セキュリティ境界: ネットワーク境界を定義し、パブリック インターネット アクセスから分離することで、ネットワーク セキュリティ境界 (NSP) を使用してAzure Cosmos DB アカウントへのアクセスを制限します。 詳細については、「 ネットワーク セキュリティ境界の構成」を参照してください。
ID 管理
マネージド ID を使用して、他のAzure サービスからアカウントにアクセスします: マネージド ID では、Microsoft Entra IDで自動的にマネージド ID を提供することで、資格情報を管理する必要がなくなります。 マネージド ID を使用して、コードに資格情報を埋め込まずに、他のAzure サービスからAzure Cosmos DBに安全にアクセスします。 詳細については、「 Azure リソースの管理 ID」を参照してください。
Azureコントロール プレーンのロールベースのアクセス制御を使用して、アカウント データベースとコンテナーを管理します: Azureロールベースのアクセス制御を適用して、Azure Cosmos DBのアカウント、データベース、コンテナーを管理するためのきめ細かなアクセス許可を定義します。 この制御により、承認されたユーザーまたはサービスのみが管理操作を実行できるようになります。 詳しくは、「コントロール プレーン アクセスを付与する」をご覧ください。
ネイティブ データ プレーンのロールベースのアクセス制御を使用して、コンテナー内のアイテムのクエリ、作成、アクセスを行います: データ プレーンのロールベースのアクセス制御を実装して、Azure Cosmos DB コンテナー内のアイテムのクエリ、作成、およびアクセスに最小限の特権アクセスを適用します。 この制御は、データ操作をセキュリティで保護するのに役立ちます。 詳細については、「 データ プレーンへのアクセスを許可する」を参照してください。
データとコントロール プレーンのアクセスに使用されるAzure ID を設定します: コントロール プレーンとデータ プレーンの操作に個別のAzure ID を使用して、特権エスカレーションのリスクを軽減し、アクセス制御を強化します。 この分離により、各 ID のスコープを制限することでセキュリティが強化されます。
キー ベースの認証を使用する場合は、アクセス キーを定期的にローテーションします。キーベースの認証を引き続き使用する場合は、通常のスケジュールでプライマリ キーとセカンダリ キーをローテーションします。 ダウンタイムを回避するには、主キーのローテーション中にセカンダリ キーを使用します。 キーのローテーション手順については、「 アカウント キーのローテーション」を参照してください。 Microsoft Entra ID認証に移行するには、「ロールベースのアクセス制御を使用した接続を参照してください。
トランスポート セキュリティ
- トランスポート セキュリティに TLS 1.3 を使用して適用する: トランスポート層セキュリティ (TLS) 1.3 を適用して、転送中のデータを最新の暗号化プロトコルでセキュリティで保護し、より強力な暗号化とパフォーマンスの向上を保証します。 詳細については、「 最小 TLS 強制」を参照してください。
データの暗号化
サービスマネージド キーまたはカスタマー マネージド キー (CMK) を使用して保存中または移動中のデータを暗号化する: 保存時および転送中の機密データを暗号化して保護します。 暗号化をより詳細に制御するために、サービス管理キーを使用してわかりやすくするか、カスタマー マネージド キーを使用します。 詳細については、「カスタマー マネージド キーを構成する」を参照してください。
クライアント側の暗号化を使用してデータをセキュリティで保護するには、Always Encrypted を使用します: Always Encrypted では、機密データがクライアント側で暗号化されてからAzure Cosmos DBに送信されるため、セキュリティが強化されます。 詳細については、「 Always Encrypted」を参照してください。
バックアップと復元
ネイティブの継続的バックアップと復元を有効にする: 継続的バックアップを有効にしてデータを保護します。これにより、保持期間内の任意の時点にAzure Cosmos DB アカウントを復元できます。 詳細については、「 連続バックアップと復元」を参照してください。
バックアップと回復の手順をテストする: バックアップ プロセスの有効性を確認するには、データベース、コンテナー、および項目の復元を定期的にテストします。 詳細については、「 コンテナーまたはデータベースの復元」を参照してください。