SAP SQL Anywhere 17 – 監査機能の強化
このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。
監査データベースインタラクション を使用すると、データベース内で誰がいつ何を行ったのかということを確認することができます。これは、格納されているデータが機密的なものの場合(例:給料情報や社外秘のレシピなど)で、ある特定の期間に誰がそのデータにアクセスしたかをトラッキングする必要があるようなシナリオでとても有効です。また、不適切にデータが変更/削除された時に、何が起こったのか判別する場合や、違反を減らそうとする場合にも便利です。SQL Anywhere の監査機能では (有効になっている場合には) 、以下に挙げるようなデータベースに対して行われたアクティビティを全てトラッキングします。
- ログイン試行情報 (そのユーザーがログインに成功したのかあるいは失敗したのかなどの情報)
- 全イベントのタイムスタンプ
- パーミッションチェック (成功と失敗のオブジェクト情報など)
- システム権限を必要とする全アクション
- sa_audit_string(…) ストアドプロシージャー経由で監査ログに追加されたカスタム監査文字列
厳密に何を監査するかは、sa_enable_auditing_type(…) システムプロシージャーを使用することによって管理することができます。
また、ログイン時に“conn_auditing” オプションを設定することによって、監査を有効または無効にすることができます。
version 16 では全ての監査情報が、トランザクションログ内に格納されます。
Version 17 では、新しいオプションである AUDIT_LOG が追加されました。これは、監査情報に1以上の異なるターゲットを指定することができます。潜在的なターゲットとしては、以下のようなものがあります。
- TRANSLOG (デフォルト) – version 16と同様、監査データはトランザクションログ内に格納されます。
- SYSLOG – 監査情報は、システムイベントトレーシングログに記録されます。(例:WindowsにおけるWindows イベントログ、Linux/Unixにおけるsyslog)
- FILE – 監査情報は、サーバー ETD (Event Trace Data) フォーマットを使用して、指定されたファイルに記録されます(サーバーはこれに対しての書き込みアクセスが必要)。
様々な理由に合わせて、異なるターゲットを選択して使用することができます。
例えば、そのデータベースにトランザクションログを使用したくない場合、OSログの調査に既存のツールを使用している場合、データベースオペレーションに関する監査情報を、単に実際のオペレーションの実行記録から分けたい場合などです。
audit_log オプションの設定には、SET ANY SECURITY OPTION 権限が必要です。監査ターゲットに問題がある場合には、他のターゲットが使用できない時には、トランザクションログを使用するようにリバートし、サーバーはベストを尽くして監査を継続します。
以下は、audit_log オプションの使用方法と、その結果ログの例です。
最初に、適切なセキュリティー管理権限を持ったユーザーとして接続し、監査を有効にします。audit_log optionを設定して、ファイルに監査情報の詳細を記録します。
- SET OPTION PUBLIC.audit_log=‘FILE(filename_prefix=C:\work\issues\v17testing\auditing\)’;
- SET OPTION PUBLIC.auditing = ‘On‘;
sa_audit_string()ストアドプロシージャーを使用すれば、いつでも、カスタムメッセージを監査ログに記録することができます。
- CALL sa_audit_string( ‘Auditing has begun.’ );
- GRANT CONNECT TO testuser identified by testuser;
次に、新たに作成した testuser として接続します。これは、パーミッションエラーで失敗します。
- SELECT * FROM groupo.Employees;
オリジナルの接続に戻って、監査を無効にします。監査ログに相当のメッセージを記録します。
- CALL sa_audit_string( ‘Auditing is ending.’ );
- SET OPTION PUBLIC.auditing = ‘Off‘;
上記が完了したら、指定したディレクトリに監査ファイルが生成されています。デフォルトでは、 “_0.etd” です。
以下を実行します。
dbmanageetd –o auditlog.out _0.etd
これによって、“auditlog.out” ファイルが作成されます。以下に似たセクションが含まれています。
カスタムの監査文字列を確認することができます。テストをブックマークして使用することができます。
[2015-09-08T10:28:10.254-04:00] SYS_Audit_String text=[Auditing has begun.] connid=25 username=[DBA] recnum=17
次に、DBISQLによって作成されたコールに関連した様々なパーミッションチェックを確認することができます。
[2015-09-08T10:28:10.301-04:00] SYS_Audit_PermCheck success=1 perm_type=[Execute] detail1=[dbo.sa_locks] detail2=[NULL] connid=25 username=[DBA] recnum=18
[2015-09-08T10:28:10.301-04:00] SYS_Audit_PermCheck success=1 perm_type=[Execute] detail1=[dbo.sa_locks] detail2=[NULL] connid=25 username=[DBA] recnum=19
[2015-09-08T10:28:10.301-04:00] SYS_Audit_PermCheck success=1 perm_type=[MONITOR] detail1=[NULL] detail2=[NULL] connid=25 username=[DBA] recnum=20
次に、testuser 接続から DBISQL によって作成されたコールに関連する様々なパーミッションチェックを確認することができます。
[2015-09-08T10:28:12.064-04:00] SYS_Audit_PermCheck success=1 perm_type=[Execute] detail1=[dbo.sa_locks] detail2=[NULL] connid=8 username=[testuser] recnum=21
[2015-09-08T10:28:12.064-04:00] SYS_Audit_PermCheck success=0 perm_type=[MONITOR] detail1=[NULL] detail2=[NULL] connid=8 username=[testuser] recnum=22
[2015-09-08T10:28:12.064-04:00] SYS_Audit_PermCheck success=1 perm_type=[Execute] detail1=[dbo.sa_locks] detail2=[NULL] connid=8 username=[testuser] recnum=23
[2015-09-08T10:28:12.064-04:00] SYS_Audit_PermCheck success=0 perm_type=[MONITOR] detail1=[NULL] detail2=[NULL] connid=8 username=[testuser] recnum=24
次に、(監査記録内で、 “success=0”で示された) select 文でパーミッションの失敗が確認できます。
[2015-09-08T10:28:13.094-04:00] SYS_Audit_PermCheck success=0 perm_type=[Select] detail1=[GROUPO.Employees] detail2=[NULL] connid=8 username=[testuser] recnum=25
[2015-09-08T10:28:13.094-04:00] SYS_Audit_PermCheck success=0 perm_type=[Select] detail1=[GROUPO.Employees] detail2=[***] connid=8 username=[testuser] recnum=26
そして最後に、監査の最後にカスタムメッセージを確認することができます。
[2015-09-08T10:28:19.256-04:00] SYS_Audit_PermCheck success=1 perm_type=[Execute] detail1=[dbo.sa_audit_string] detail2=[NULL] connid=25 username=[DBA] recnum=35
[2015-09-08T10:28:19.256-04:00] SYS_Audit_PermCheck success=1 perm_type=[MANAGE AUDITING] detail1=[NULL] detail2=[NULL] connid=25 username=[DBA] recnum=36
[2015-09-08T10:28:19.256-04:00] SYS_Audit_String text=[Auditing is ending.] connid=25 username=[DBA] recnum=37
===
SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。
上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ
に掲載しています。
SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。
SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。
Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」
を入力してください。
不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。