サーバー、データベース、インフラに関するトピックス
■第19話:MongoDBの安全性と運用
(最終更新日:2023.11.13)
(絵が小さい場合はスマホを横に)
「安全に運用しよう!」
MongoDBは柔軟で強力なドキュメント指向データベースだが、その機能を最大限に活用し適切に運用するためには、
安全性と運用の側面を十分に理解し、適切に対応する必要がある。
安全面としては、認証、認可、暗号化、ネットワークセキュリティなど、さまざまなセキュリティ機能がある。
運用としては、クラスタリング、レプリケーション、シャーディングといった機能があり、
データの可用性を高め、負荷分散を実現し、拡張性を確保できる。
本項では、MongoDBのセキュリティ対策の基本、運用のベターな方法、
データのバックアップとリカバリ戦略について掘り下げ、安全かつ効率的なデータベース運用を紹介する。
1.セキュリティ
MongoDBのセキュリティは、データベースシステムを保護し、不正アクセスやデータ漏洩を防ぐために不可欠だ。 以下は、MongoDBのセキュリティを強化するための主要な要素だ。
■認証と認可
認証は、ユーザーが自分のアイデンティティを証明するプロセスだ。
MongoDBでは、ユーザー名とパスワードを使用した基本的な認証の他に、
より高度なSCRAM(Salted Challenge Response Authentication Mechanism)や、
x.509証明書を使用した認証方法を提供している。
これらにより認証されたユーザーは、予め決めておいた権限の範囲でデータや操作にアクセスできるようになる。
権限の決め方は一般的なロールベースのアクセス制御であり、ユーザー毎に特定の権限を与えられる。

認可と認証
■SSL/TLSの活用
SSL(Secure Sockets Layer)およびTLS(Transport Layer Security)は、
データの送受信時の通信を暗号化するためのプロトコルだ。
MongoDBではSSL/TLSを活用してクライアントとサーバー間のデータ転送を保護し、
中間者攻撃(Man-in-the-Middle Attack)などのリスクを軽減する。
■データベースの暗号化
データベース内のデータを暗号化することで、不正アクセスによるデータの読み取りを防ぐことができる。
MongoDBでは、ストレージエンジンレベルでの暗号化(Encrypted Storage Engine)を提供しており、
これによりデータは休息状態(ディスク上)でも保護される。
また、フィールドレベルの暗号化を使用して特定の機密データを暗号化することも可能である。
これらのセキュリティ機能を適切に設定し管理することで、MongoDBの安全性を大幅に向上させることができる。
個人情報や金融情報、医療情報といった機密性の高いデータは特にこういった暗号化は必要だろう。
2.バックアップと復元
MongoDBのデータを保護するためには、定期的なバックアップと効果的な復元プロセスが必要だ。 これにより、データ損失やシステム障害の際に迅速に対応できる。 MongoDBではいくつかの方法でデータのバックアップを取ることができる。
1つはmongodumpツールを使う方法、次にファイルシステムのスナップショットを取る方法、 MongoDB Atlasを使用している場合は、そこでのバックアップ機能を利用することができる。 最後の方法以外は、MySQL等のデータベースシステムでも採られる方法なので、難しいことはないだろう。
バックアップと復元
3.監視とチューニング
MongoDBの効率的な運用には、適切な監視とパフォーマンスチューニングが欠かせない。
これにより、システムの健全性を維持し、パフォーマンスの問題を迅速に特定して対処することができる。
主要な監視ポイントとしては、サーバーのリソース(CPU、メモリ、ディスクI/O、ネットワークトラフィック)使用状況の監視を行う。
そして、データベースオペレーションのパフォーマンス(クエリ応答、読み書きの遅延など)を追跡する。
また、データベースサイズに対して、後どれだけ余裕が有りそうかも監視、予測する。
他にも、クラスタ化して負荷分散している場合は、シャードされたクラスタのバランス状態やシャード間でのデータ分散状況を監視する。
チューニング方法としては、インデックスの最適化、クエリの最適化、ハードウェアの最適化、 レプリケーションとシャーディングの最適化、サーバー設定の調整と、こちらも通常のデータベース運用と殆ど変わらない。 適切な監視とチューニングにより、MongoDBのパフォーマンスを維持し、将来的なスケーリングに対応できるだろう。
4.まとめ
MongoDBのセキュリティ、バックアップと復元、監視とチューニングについて説明した。 バックアップと復元、監視とチューニングは、MySQLのような代表的なデータベースシステムとやり方は殆ど変わらない。 ストレージレベルの暗号化、フィールドレベルの暗号化は必要に応じて実装することになるだろう。 他のデータベースシステムと同様、安全、安定な運用を意識し、活用していこう。
▼参考図書、サイト
MongoDB
MongoDB公式サイト