権限については、Oracle DatabaseもMySQLも、考え方は共通しています。
しかしMySQLは、権限の「種類」が少なく、システム権限とオブジェクト権限を合わせても、たった32種類しかありません(MySQL 5.7/2016年7月現在)。Oracle Databaseは100以上ありますので、これまで細かくアクセス権限を設定して管理していたシステムからの移行では注意が必要です。
ユーザーに権限を付与するには、Oracle Databaseと同じくGRANT文を使用します。例えば、ユーザーアカウント「ap_user@192.168.0.1」に「testデータベース(≒スキーマ)」の「t1テーブル」に対する「SELECT権限」を与えたい場合は、以下のようなSQLとなります。
GRANT SELECT ON test.t1 TO ‘ap_user’@’192.168.0.1’;
Oracle Databaseでは、権限を束ねて管理する「ロール」と呼ばれる概念も存在します。MySQLにはロールはありませんが、プロキシユーザを利用することで、同様の役割を持たせることができます。しかし、そもそもMySQLは権限の種類がそれほど多くはないことから、ユーザーアカウントごとに権限を付与する管理方法でもよいでしょう。管理しきれないほどに複雑にはならないと思います。
Oracle DatabaseとMySQLでは、物理ファイルの構成/名称が以下のように違います。
内容 | Oracle Database | MySQL |
---|---|---|
データファイル | .dbfファイル(データファイル) | .ibdファイル/ibdataファイル |
一時ファイル | 一時ファイル | 一時ファイル |
コミットしたクエリを記録(循環利用)するファイル | REDOログファイル | ib_logfile |
更新前のデータを保持するファイル | UNDOファイル | なし(ibdataファイルと一体化) |
システム情報/メタ情報を保持するファイル | 制御ファイル | なし |
サーバパラメータを記載するファイル | PFILE、SPFILE | my.cnf(PFILEに相当) |
コミットしたクエリを記録(循環なし)するファイル | アーカイブログファイル | バイナリログ |
エラーログファイル | アラートログ | エラーログ |
これらのうち、データベースの設計要素として必要なのは、「データファイル」「一時ファイル」「REDOログファイル」「UNDOファイル」になります。これら4つのファイルは、ディスク負荷や障害時を想定して、書き込み先のディスクを分散させる設計をしておく場合があるからです。
MySQLでも、データファイル、一時ファイル、REDOログファイル(MySQLでは、「ib_logfile」)、UNDOログファイルの出力先は変更できます。これらは、以下のパラメータで出力先を指定できます。
通常、I/O負荷が上昇する原因になるのは「REDOログファイル」「UNDOログファイル」です。MySQLでも書き込み負荷を分散させたい場合は、REDOログファイルに当たる「ib_logfile」、UNDOログファイル「undoXXX」(XXXには連番の数字が入ります)を別ディスクに保管するよう指定することでOracle Databaseと同様に対応できます。
Oracle Databaseには、監査機能として「必須監査」「標準監査」「DBA監査」「FGA(Fine-Grained Auditing)監査」があります。これに対してMySQLでの監査機能には、「一般クエリログの利用」「MySQL Enterprise Audit」「MySQL Enterprise Firewallの利用」などの選択肢があります。
一般クエリログとは、「MySQLで実行された全てのクエリをログに出力する」ものです。監査の観点からは有用な一方で、ログの出力量が膨大になるため、本番環境での利用はあまり推奨されません。一般クエリログを利用するならば、MySQL側ではローテーションの仕組みを持たないことから、Linuxに備わるlogrotate(ログを定期的にリネーム/削除する機能)などを利用して、別途ログローテーションの仕組みを構築しておく必要があります。
MySQL Enterprise Auditでは、「MySQLで実行したクエリの監査機能」を提供します。ポリシーベースでの監査条件を設定でき、条件に適合したクエリが、いつ/どこで/誰によって実行されたのかをログに出力します。
MySQL Enterprise Firewallは、「あらかじめ想定したクエリ以外の実行をブロックする」機能です。ホワイトリスト形式でのクエリ実行制限を行うため、前もって実行を許可するクエリを登録しておきます。クエリの登録には、機能を有効にしている間に実行されたクエリをホワイトリストへ自動登録していく「自動学習モード」も利用できます。自動学習モードに有効にしてからアプリを一通り動かせば、運用において実行されるクエリをホワイトリストに容易に登録できるでしょう。
この他、ホワイトリストにないクエリが検知されたら、「クエリの実行を許可しない」か、「クエリの実行は許可するが、監査ログに出力する」かを選択できます。ホワイトリストの登録漏れがあったときにアプリケーションが停止しては困るという環境では、後者のモードにするとよいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.