blog

エンタープライズデータベースセキュリティの3つの側面

エンタープライズデータベースは、組織の情報資産のセキュリティを担う重要なメディアであり、プラットフォームです。この記事では、エンタープライズ・データベースのセキュリティを、サーバ、ネットワーク、オペレ...

Sep 14, 2014 · 6 min. read
シェア

エンタープライズ・データベースは、企業の情報資産のセキュリティを支える重要な媒体であり、プラットフォームです。クラウドとビッグデータの時代になっても、情報セキュリティ担当者が無視できない危険地帯であることに変わりはありません。リレーショナル・データベースは、さまざまな種類のアプリケーションや独自の用途を幅広くサポートできるため、通常は複数のレイヤーでセキュリティを適用します。セキュリティの各層は特定の目的のために設計されており、権限付与ルールを提供するために使用することができます。最も信頼できる情報にアクセスするためには、ユーザーはこれらのレベルの1つまたは複数で適切な権限を持っている必要があります。データベースまたはシステム管理者としての仕事は、障壁が適切な高さであることを確認すること、つまり、セキュリティモデルがセキュリティと可用性の両方を考慮していることを確認することです。この記事では、サーバ、ネットワーク、オペレーティングシステムという3つの緯度を考慮しながら、企業データベースのセキュリティを確保する方法を説明します。

サーバーレベルのセキュリティ

データベースアプリケーションのセキュリティは、それが実行されるサーバのセキュリティに依存します。したがって、まずデータベースがホストされている物理サーバのセキュリティ設定を検討することが重要です。シンプルな構成の小規模な組織では、セキュリティ保護が必要なマシンは 1 台だけかもしれません。大規模な組織では、複数のサーバーを収容している場合があります。これらのサーバーは地理的に分散していたり、複雑なクラスター構成になっていることもあります。

サーバーを保護するために最初に行うべきことは、どのユーザーとアプリケーションがサーバーにアクセスできるようにするかを決めることです。最新のデータベースプラットフォームは、一般にネットワーク経由でアクセスされ、ほとんどのデータベース管理タスクはリモートで実行できます。したがって、データベースを物理的に管理するハードウェア以外には、誰もデータベースに直接物理的にアクセスする必要はありません。権限のないユーザーがデータベースファイルやデータバックアップにアクセスできないように、データベースを物理的に保護することも非常に重要です。権限のないユーザーがサーバーに物理的にアクセスすることができれば、それ以上の損害を防ぐことははるかに困難になります。

ネットワークレベルのセキュリティ

前述したように、データベースはそれぞれのオペレーティング・システム・プラットフォーム上で動作し、ユーザーに必要なデータを提供します。したがって、一般的なオペレーティングシステムやネットワークレベルのセキュリティはデータベースにも適用されます。基盤となるプラットフォームが安全でない場合、これはデータベースにとって重大な脆弱性となります。データベースはウェブアプリケーションとして設計されているため、特定のクライアントだけがこれらのマシンにアク セスできるようにするための合理的な手段を講じる必要があります。

データベースを保護するための標準的な「ベストプラクティス」には、ネットワークやネットワークアドレスからコンピュータへの直接アクセスを制限することが含まれます。例えば、ルーティングルールやパケットフィルタリングを実装し、内部ネットワーク上の特定のユーザーだけがサーバーと通信できるようにします。

例として、MicrosoftのSQL Serverデータベース・プラットフォームは、クライアントとデータベース間の通信にデフォルトのTCPポート1433を使用します。ネットワークの特定のサブネット上のユーザーがこのサーバーに直接アクセスできる必要があるかどうかがはっきりわかっている場合は、このTCPポートへのネットワークアクセスをブロックするのが賢明です。そうすることで、悪意のあるユーザーやコードがネットワークからこのマシンを攻撃するのを防ぐこともできます。もう1つの安全な方法は、サーバーがリッスンするデフォルトのポートを変更することです。これは、図 1 に示すサーバー・ネットワーク・ユーティリティを使用することで、簡単に行うことができます。

図1 Server Network Tools を使用し、Microsoft SQL Server ネットワークプロトコルのインストール設定を行います。

もちろん、現実にはデータベースが単独で動作することはほとんどありません。一般的に、これらのシステムはミッション・クリティカルなアプリケーションを通じてユーザーから直接アクセスされることが多いのです。

データベース内の情報を保護するもう一つの方法は、暗号化を使用することです。最近のデータベースのほとんどは、クライアントとサーバー間の暗号化接続をサポートしています。これらのプロトコルは、処理とデータ転送のオーバーヘッドを大幅に増加させることがありますが、セキュリティを強化する必要がある場合もあります。さらに、仮想プライベート・ネットワークを使用することで、システム管理者は機密データを転送中も確実に保護することができます。

VPNソリューションは、実装によっては、ネットワーク管理者がクライアントやサーバーを再設定することなくセキュリティを実装できるという利点もあります。データの暗号化は、ネットワーク・レイヤ以外の領域でも重要なセキュリティ機能です。通常、データベース管理者はデータをバックアップし、ファイル・サーバーに保存します。これらのファイルサーバーは、データの「ライブ」コピーをホストする機密データベースほど安全ではないかもしれません。デフォルトでは、ほとんどのリレーショナルデータベースシステムは、バックアップのための強力なセキュリティ機能を提供していないことを覚えておくことは非常に重要です。ほとんどの場合、データベースのバックアップはライブのデータベースそのものと同じくらい価値があるため、暗号化、ファイルシステムのパーミッションの適切な管理、および関連するベストプラクティスに従う必要があります。最後に、データの暗号化もデータベースで効果的に使用できます。多くの種類のシステムには、クレジットカード番号やパスワードなどの機密データが保存されています。潜在的な問題は、データベース開発者や管理者が仕事をするために、これらのデータベースフォームにフルアクセスする必要があるという事実にあります。データを難読化する一つの方法は、データベースのテーブルに格納された値を暗号化することです。このアプローチでは、権限のあるユーザは必要なときにデータにアクセスし、変更することができますが、呼び出し元のアプリケーションが解読して利用できる範囲に限られます。Oracleなど一部のデータベース・ベンダーでは、暗号化はデータベースの外部に保存され、キーが失われた場合、テーブルの列のデータも失われます。

オペレーティング・システムのセキュリティ

ほとんどのプラットフォームでは、データベースのセキュリティはオペレーティングシステムのセキュリティと密接に関係しています。ネットワークの構成設定、ファイルシステムのアクセス許可、認証メカニズム、オペレーティングシステムの暗号化はすべて、データベースの安全性を確保する役割を果たします。例えば、Windows ベースのオペレーティングシステムでは、NTFS ファイルシステムのみがファイルシステムのセキュリティを提供します。一元化されたディレクトリ・サービス・インフラストラクチャを使用する環境では、シス テム管理者がタイムリーな権限設定を維持し、不要なアカウントをできるだけ早く停止するこ とが重要です。幸いなことに、最新のリレーショナルデータベースプラットフォームには、実行するオペレーティングシステムを活用できるものがたくさんあります。これらの詳細については後述します。

ほとんどのデータベースシステムでは、ユーザーがデータベースにアクセスする前に、何らかの認証情報を入力する必要があります。データベースセキュリティの最初のレベルは、標準的なユーザー名とパスワードの組み合わせに基づくことができます。あるいは、管理性とシングルサインオンを向上させる目的で、データベースシステムを組織の既存の認証システムと統合することもできます。たとえば、Microsoft の Windows オペレーティング・システム・プラットフォーム上で動作するリレーショナル・データベース製品の多くは、ドメイン・ベースのセキュリティ・モデルのセキュリティ機能を利用することができます。個人のユーザー・アカウントやグループ・メンバーシップに応じて、ユーザー名やパス ワードを再入力することなく、シームレスに「認証」することができます。このアプローチの多くの利点の1つは、ユーザーアカウントを集中管理できることです。組織のディレクトリ・サービス・レベルでユーザ・アカウントが無効化された場合、そのユーザがデータベース・システムにアクセスできないようにするために、それ以上の措置を講じる必要はありません。さらに、スマートカードやトークンベースの認証だけでなく、バイオメトリクスベースの認証に移行する組織も増えています。データベース管理者は、ユーザー識別のために、これらのメカニズムがベースとするオペレーティング・システムを活用することができます。したがって、統合セキュリティは、使いやすさと管理のしやすさの両面で、非常に推奨されます。

新しいデータベースを導入する際に重要なのは、インストール中またはインストール直後にデフォルトのパスワードを変更することです。多くのデータベース管理者は「後でやろう」と決めますが、これはたいてい無視されることを意味します。デフォルトのユーザ名とパスワードを使用することは、悪意のあるユーザにサーバに侵入するための鋭い刃を与えることと同じです。新しいサーバをインストールしたらすぐに、この潜在的な抜け穴をふさぐために数分かけるようにしてください。

サーバーログインには、直接権限を付与することができます。たとえば、データベースをシャットダウンまたは再起動する権限や、サーバー上に新しいデータベース機能を作成する権限を与えることができます。ログインレベルの権限は一般的にサーバー全体に適用され、関連するバックアップとリカバリ、パフォーマンス監視、データベースの作成と削除のタスクに使用できます。場合によっては、サーバーへのログイン アクセス権を持つユーザーが、他のユーザーにこれらの権限を付与できることもあります。したがって、情報を安全に保護するためには、信頼するデータベース・プラットフォームのセキュリティ・アーキテクチャを十分に理解することが重要です。

注意すべきもう1つの重要な点は、ほとんどのリレーショナル・データベース・プラットフォームでは、オペレーティング・システム管理者がデータベースに対して多くの暗黙の権限を持つことができるということです。た と えば、 シ ス テ ム管理者はサービ ス を開始お よ び停止 し た り 、 デー タ ベース フ ァ イ ルを移動ま たは削除す る こ と がで き ます。さ ら に、 デー タ ベース プ ラ ッ ト フ ォーム に よ っ ては、 自動的にシ ス テ ム管理者にデー タ ベース ロ グ イ ン を与え、 全権限を許可す る も の も あ り ます。これは望ましい場合もありますが、全体的なセキュリティを実施する際には、この点に留意することが重要です。場合によっては、これは重要なことですが、すべてのシステム管理者がこれらのサーバーに保存されている機密データにアクセスできるわけではありません。このような方法でシステムを構成することは困難であり、正確な実装方法は、実行するオペレーティング・システムとデータベース・プラットフォームによって異なります。

ほとんどの場合、サーバログインは一人のユーザにのみデータベースへの接続を許可します。このログインは、そのユーザがデータベース内で特定のアクションを実行することを暗黙的に許可するものではありません。

Read next

jQueryプラグイン - Microsoft jQuery Data Linking

なぜjQuery Data Linkingプラグインを使うのか?jQuery Data Linkingを使うことの利便性と、jQuery Data Linkingの使い方について見ていきましょう。

Sep 14, 2014 · 2 min read