SQL Server および Azure SQL Database のセキュリティ全体像

Microsoft Japan Data Platform Tech Sales Team

川野 純

セキュリティ脅威への対応は単に情報漏洩を防ぐだけの目的ではなく、企業の事業継続性にも影響を及ぼす重大な懸案事項です。
特に重要なデータを大量に保存しているデータベースおよびデータベース アプリケーションにおけるセキュリティ対策において、 外部からの不正アクセスによる侵入を防ぐだけは不十分です。
これは昨今、データベース管理者や必要以上の権限を持った内部ユーザーによる犯行も増えてきているためで、システムに対する直接攻撃や情報漏洩を避けるためには多層防御を行い、システムの堅牢性・信頼性を増加させる必要があります。
具体的には以下のような防御策です。

  • ユーザーがアプリケーション経由でアクセスできるデータを権限に応じて制限
  • データベースの管理権限(メンテナンスタスク、チューニングタスク、ユーザー管理タスクなど)を複数の管理者に分離(権限の一極集中を回避)
  • ユーザーのアクティビティだけでなく、管理者のアクティビティに関する監査証跡を記録し、さらに改ざんできないように保全
  • 万が一データが盗聴・盗難されてしまった場合に備えた暗号化
    など

SQL Server ではセキュリティ対策を行うための様々な機能を提供しており、大きく4つの防御階層に分けて構成することができます。

ProtectionLayer

データの暗号化 (Data Encryption)

ネットワーク上のパケット盗聴、メモリに対する不正アクセス、データベース ファイルの盗難などが発生した場合の対策です。

データベース アクセス制御 (Database Access Control)

データベース サーバーに対するアクセスおよびデータベース オブジェクトに対する操作を必要最小限に制限することで、情報漏洩のリスクを未然に極小化します。

プロアクティブ監視(Proactive Monitoring)

ユーザーの不穏なアクティビティの検出や被害が発生した際の調査に必要な情報を取得します。

  • 監査 - Auditing
    データベース アクティビティを追跡し、監査ログやAzure ストレージアカウントに直接ログを書き込みます。
    SQL Server 監査は、サーバー レベルのイベント用のサーバー監査仕様とデータベース レベルのイベント用のデータベース監査仕様(Enterprise Edition のみ)を含めることができます。
    Azure SQL Database の監査についての詳細は以下の関連リンクをご覧ください。
  • SQL Database 脅威の検出 【★Azure SQL Database のみ】
    一般的なデータベースの脅威による特異なデータベースアクティビティ(SQL インジェクションや通常と異なる IP アドレスからのアクセスなど)が実行されると管理者はアラートを受け取ります。

アプリケーション アクセス制御(Application Access Control)

アプリケーション ユーザーのID、パスワードが万が一漏洩してしまった場合や内部ユーザーによるデータ抜き取りが発生した場合でも、被害を最小限に留めるための対策です。

  • 動的なデータ マスキング - Dynamic Data Masking
    特権の無いユーザーに対して、機密データ(ID、クレジットカード番号、E メールアドレスなど)をマスキングすることでデータの露出を制限します。
  • 行レベルのセキュリティ - Row-level Security
    クエリーを実行するユーザーの特性に応じて、データベースのテーブル内の行に対するアクセスを制御できます。
    これにより、マルチテナントデータベース環境などにおいて同じテーブルを共有するユーザーは、許可された行へのみアクセスが制限されます。

今回は、データベースおよびデータベース アプリケーションで講じることのできるセキュリティ対策について簡単にご紹介しましたが、さらに Active Directory や Azure Active Directory、Azure Key Vault などの Microsoft の製品・サービスを組み合わせることで、より柔軟かつ強固なセキュリティ対策を講じることができます。ぜひ活用してみてください。

SecurityOverview