Microsoft SQL Server と RDS for SQL Server の違いについて調べました。
RDS for SQL Server のメリット・デメリット
以下の設定や管理が不要になります。
- プロビジョニング
- バックアップ
- ソフトウェアのパッチ適用
- モニタリング
- ハードウェアのスケーリング
【メリット】DB インスタンスへの接続に SSL を使用できる
SQL Server DB インスタンスへの接続に SSL を使用できます。
【デメリット】DB インスタンスへ SSH や Telnet でログインできない
Amazon RDS は、OS の上に構築されているわけではないため、Telnet や SSH や Windows のリモートデスクトップ接続を使用して DB インスタンスへログインできません。
【デメリット】分析・管理系のツールが利用できない
Amazon RDS を利用すると以下の分析・管理系のツールが利用できなくなります。
- SQL Server Analysis Services
- SQL Server Integration Services
- SQL Server Reporting Services
- Data Quality Services
- Master Data Services
どうしても利用したい場合は、EC2 インスタンス上に(OS 上に)SQL Server をインストールして利用する形となります。
RDS は Transact-SQL(xp_cmdshell)を利用できない
RDS は OS(Windows OS)が利用できないため、当然ながら「Transact-SQL(xp_cmdshell)」は利用できません。
xp_cmdshell は、SQL Server から Windows OS コマンドを呼び出すことができます。
Enabling XP_CmdShell in RDS?
https://www.reddit.com/r/aws/comments/8p06n4/enabling_xp_cmdshell_in_rds/
理由としては、以下の点が挙げられます。
- RDS は OS を持っていない
- xp_cmdshell はセキュリティ的に若干不安がある
RDS は SQL Server Audit が利用できない
以下の AWS の公式サイトを確認すると「SQL Server Audit」が利用できない旨が記載されています。
Amazon RDS での Microsoft SQL Server
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html
RDS でサポートされていない機能
以下の Microsoft SQL Server 機能は、Amazon RDS ではサポートされていません。
- 常時
- データベースの拡張
- Microsoft Azure Blob ストレージへのバックアップ
- バッファープールの拡張
- BULK INSERT および OPENROWSET(BULK…) 機能
- Data Quality Services
- データベースのログ配布
- データベースメール
- 分散クエリ (あるいは、リンクサーバー)
- 分散トランザクションコーディネーター (MSDTC)
- ファイルテーブル
- FILESTREAM のサポート
- メンテナンスプラン
- パフォーマンスデータコレクター
- ポリシーベースの管理
- PolyBase
- R
- レプリケーション
- リソースガバナー
- SQL Server Audit
- サーバーレベルのトリガー
- サービスブローカーエンドポイント
- T-SQL エンドポイント (CREATE ENDPOINT を使用するオペレーションはいずれも使用できません)
- WCF Data Services
SQL Server Audit とは
SQL Server Audit は、SQL Server で発生する各種イベントの追跡およびログ記録を行います。
監査はインスタンスレベルで行います。
ちなみに一般的に「監査(かんさ)」とは決算書が正しいかどうかチェックすることを言います。
例えば SQL Server の SA(System Administrator)アカウントは、全データベース・テーブル・データに対して参照や編集する権限を持っています。
そのため、SA アカウントで SQL Server にログインされると、業務上のデータを改ざんされる可能性があります。
しかも何の対策も取らず、何もしなければ、SA アカウントがどのような操作が行ったのか分かりません。
そのような状態では企業にとってリスクがあるため SQL Server Audit という機能が必要になります。
コメント