Web制作、Web開発の歩き方

サーバー、データベース、インフラに関するトピックス

■第19話:MongoDBの安全性と運用

(最終更新日:2023.11.13)

NoSQLのイメージ
この記事は4分で読めます!
(絵が小さい場合はスマホを横に)

「安全に運用しよう!」

MongoDBは柔軟で強力なドキュメント指向データベースだが、その機能を最大限に活用し適切に運用するためには、 安全性と運用の側面を十分に理解し、適切に対応する必要がある。

安全面としては、認証、認可、暗号化、ネットワークセキュリティなど、さまざまなセキュリティ機能がある。 運用としては、クラスタリング、レプリケーション、シャーディングといった機能があり、 データの可用性を高め、負荷分散を実現し、拡張性を確保できる。

本項では、MongoDBのセキュリティ対策の基本、運用のベターな方法、 データのバックアップとリカバリ戦略について掘り下げ、安全かつ効率的なデータベース運用を紹介する。

[目次]

  1. セキュリティ
    1. 認可と認証
    2. SSL/TLSの活用
    3. データベースの暗号化
  2. バックアップと復元
  3. 監視とチューニング
  4. まとめ

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公式サイト