1.4. Elytron によるセキュリティー監査
Elytron を使用し、トリガーとなるイベントのセキュリティー監査を完了することができます。セキュリティー監査とは、認可または認証の試行に応答して、ログへの書き込みなどのイベントをトリガーすることを指します。
イベントに対して行われるセキュリティー監査の種類は、セキュリティーレルムの設定によって異なります。
1.4.1. Elytron 監査ロギング
elytron
サブシステムで監査ログを有効にすると、アプリケーションサーバー内で Elytron の認証および承認イベントをログに記録できます。Elytron は監査ログエントリーを、個々のイベントを保存する JSON
、または人間が読めるテキスト形式の SIMPLE
のいずれかで保存します。
Elytron の監査ロギングは、JBoss EAP 管理インターフェイスの監査ロギングなど、他のタイプの監査ロギングとは異なります。
Elytron はデフォルトでは、監査ログが無効です。Elytron に以下のログハンドラーを設定して、監査ログを有効化できます。セキュリティードメインにログハンドラーを追加できます。
- ファイル監査ログ
- 定期的なローテーションファイル監査ロギング
- サイズローテーションファイル監査ロギング
-
syslog
監査ロギング - カスタム監査ログ
aggregate-security-event-listener リソース
を使用すると、ロガーなどのより多くの宛先にセキュリティーイベントを送信することができます。aggregate-security-event-listener リソース
は、全イベントをアグリゲートリスナー定義で指定されたリスナーすべてに配信します。
監査モジュールを使用して、レガシーセキュリティードメインのイベントを監視することができます。管理コンソールを使用して、レガシーセキュリティードメインのセキュリティー監査設定を設定できます。
関連情報
- レガシーセキュリティーシステムでの監査の設定については、レガシーセキュリティードメインでのセキュリティー監査の設定 を参照してください。
- 管理インターフェイスの監査ログオプションの詳細は、設定ガイドの 管理監査ログ を参照してください。
- ファイル監査ロギングの詳細は、ファイル監査ロギングの有効化 を参照してください。
- 定期的なローテーションファイルの監査ロギングについては、定期的なローテーションファイルの監査ロギング を参照してください。
- サイズローテーションファイルの監査ログについては、サイズローテーションファイルの監査ログ を参照してください。
-
syslog
監査ログの詳細は、syslog
監査ログを参照してください。 - カスタム監査ログの詳細は、Using custom security event listeners in Elytron を参照してください。
1.4.2. ファイル監査ログの有効化
elytron
サブシステムを使用して、スタンドアロンサーバーまたは管理ドメイン内のサーバーにあるファイルの監査ログを有効化できます。
ファイル監査ロギングは、監査ログメッセージをファイルシステムにあるファイル 1 つに保存します。デフォルトでは、Elytron はファイル監査ロガーとして local-audit
を指定します。local-audit
を有効にして、スタンドアロンサーバーでは EAP_HOME/standalone/log/audit.log
に、管理ドメインでは EAP_HOME/domain/log/audit.log
に、Elytron 監査ログを書き込めるようにする必要があります。
手順
ファイルの監査ログを作成します。
elytron
サブシステムを使用して、ファイル監査ログを作成する例:/subsystem=elytron/file-audit-log=<audit_log_name>:add(path="<path_to_log_file>", relative-to="<base_for_path_to_log_file>", format=<format_type>, synchronized=<whether_to_log_immediately>)
ファイル監査ログをセキュリティードメインに追加します。
セキュリティードメインにファイル監査ログを追加するコマンド例
/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener , value=<audit_log_name>)
関連情報
- ファイル監査ロガーの属性は、ファイル監査ロガーの属性 を参照してください。
1.4.3. 定期的なローテーションファイル監査ロギングの有効化
elytron
サブシステムを使用して、スタンドアロンサーバーまたはドメインにあるサーバーのファイル監査ログを有効にできます。
ファイル監査ログを定期的にローテーションすると、設定されたスケジュールに基づいて監査ログファイルが自動的にローテーションされます。定期的なローテーションファイル監査ロガーは、デフォルトのファイル監査ロガーと似ていますが、定期的なローテーションファイル監査ロガーには、suffix
という追加の属性が含まれています。
suffix
属性の値は、java.time.format.Date Time Formatter
形式で指定された日付 (.yyyy-MM-dd
など) です。Elytron は、その接尾辞で指定された値から自動的にローテーションの周期を計算します。elytron
サブシステムは、ログファイル名の最後に接尾辞を付加します。
手順
定期的なローテーションファイル監査ログを作成します。
elytron
サブシステムでの定期的なローテーションファイル監査ログの作成例/subsystem=elytron/periodic-rotating-file-audit-log=<periodic_audit_log_name>:add(path="<periodic_audit_log_filename>", relative-to="<path_to_audit_log_directory>", format=<record_format>, synchronized=<whether_to_log_immediately>,suffix="<suffix_in_DateTimeFormatter_format>")
定期的なローテーションファイル監査ロガーをセキュリティードメインに追加します。
セキュリティードメインに定期的なローテーションファイル監査ロガーを追加する例
/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener, value=<periodic_audit_log_name>)
関連情報
- 定期ローテーションファイル監査ロガーの属性については、periodic-rotating-file-audit-log Attributes の表を参照してください。
1.4.4. サイズローテーションファイルの監査ログの有効化
elytron
サブシステムを使用して、スタンドアロンサーバーまたはドメイン管理されたサーバーのサイズサブシステムファイル監査ログを有効にできます。
ログファイルが設定されたファイルサイズに達すると、サイズローテーションファイル監査ログにより自動的に監査ログのローテーションが行われます。サイズサブシステムファイル監査ロガーは、デフォルトのファイル監査ロガーと類似していますが、サイズサブシステムファイル監査ロガーには追加の属性が含まれています。
ログファイルのサイズが rotate-size
属性で定義された制限を超えた場合には、Elytron は接尾辞 .1
を現在のファイルに末尾に追加して、Elytron は新しいログファイルを作成します。Elytron は、既存のログファイルの接尾辞に 1 つ足します。たとえば、Elytron は audit_log.1
の名前を audit_log.2
に変更します。Elytron は、ログファイルの量が max-backup-index
で定義されたログファイルの最大数に達するまでそのまま増分していきます。ログファイルが max-backup-index
の値を超えると、Elytron は、audit_log.99
のように制限を超えたファイルを削除します。
手順
サイズローテーションファイルの監査ログを作成します。
elytron
サブシステムを使用して、サイズローテーションファイルの監査ログを作成する例/subsystem=elytron/size-rotating-file-audit-log=<audit_log_name>:add(path="<path_to_log_file>",relative-to="<base_for_path_to_log_file>",format=<record_format>,synchronized=<whether_to_log_immediately>,rotate-size="<max_file_size_before_rotation>",max-backup-index=<max_number_of_backup_files>)
サイズローテーション監査ロガーをセキュリティードメインに追加します。
elytron
サブシステムを使用して、サイズローテーションファイルの監査ログを有効にした例/subsystem=elytron/security-domain=<domain_size_logger>:write-attribute(name=security-event-listener, value=<audit_log_name>)
関連情報
- サイズローテーションファイルの監査ログ属性については、サイズローテーションファイルの監査ログ属性 の表を参照してください。
1.4.5. syslog
の監査ログの有効化
elytron
サブシステムを使用して、スタンドアロンのサーバーやドメイン管理されているサーバーの syslog
監査ログを有効にできます。syslog
監査ロギングを使用すると、ロギング結果を syslog
サーバーに送信するため、ローカルファイルへのロギングよりもセキュリティーオプションが多くなります。
syslog
ハンドラーは、syslog
サーバーのホスト名や、syslog
サーバーをリッスンするポートなど、syslog
サーバーへの接続に使用するパラメーターを指定します。複数の Syslog
ハンドラーを定義して同時に有効化できます。
対応するログ形式は、RFC5424
と RFC3164
です。伝送プロトコルは、UDP、TCP、TCP with SSL に対応しています。
最初のインスタンスに syslog
を定義すると、ロガーは、以下の例で示すようなメッセージを含む INFORMATIONAL
優先度イベントを syslog
サーバーに送信します。
"Elytron audit logging enabled with RFC format: <format>"
<format>
は、監査ログハンドラーに設定されている RFC 形式を指し、デフォルトでは RFC5424
の値が設定されています。
手順
syslog
ハンドラーを追加します。elytron
サブシステムを使用してsyslog
ハンドラーを追加した例/subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(host-name=<record_host_name>, port=<syslog_server_port_number>, server-address=<syslog_server_address>, format=<record_format>, transport=<transport_layer_protocol>)
また、TLS 経由で
syslog
サーバーにログを送信することもできます。TLS でログを送信するための
syslog
の設定例/subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(transport=SSL_TCP,server-address=<syslog_server_address>,port=<syslog_server_port_number>,host-name=<record_host_name>,ssl-context=<client_ssl_context>)
セキュリティードメインに
syslog
監査ロガーを追加します。セキュリティードメインに
syslog
監査ロガーを追加する例/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener, value=<syslog_audit_log_name>)
関連情報
-
syslog-audit-log
の属性については、syslog-audit-log
の属性の表を参照してください。 -
ssl-context
の設定で TLS のサポートを有効にする方法については、 Using aclient-ssl-context
を参照してください。 -
RFC5424
の詳細は、Syslog プロトコルを参照してください。 -
RFC3164
の詳細は、The BSD syslog Protocolを参照してください。
1.4.6. Elytron でのカスタムセキュリティーイベントリスナーの使用
Elytron を使用して、カスタムイベントリスナーを定義できます。カスタムイベントリスナーは、受信したセキュリティーイベントの処理を管理します。イベントリスナーは、カスタムの監査ログ目的で使用したり、内部の ID ストレージに対するユーザー認証に使したり用できます。
module
管理 CLI コマンドを使用したモジュールの追加および削除は、テクノロジープレビュー機能としてのみ提供されます。module
コマンドは、管理ドメイン内での使用や、リモート管理 CLI での接続には適していません。実稼働環境では、手動でモジュールを追加削除する必要があります。
テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。
手順
java.util.function.Consumer<org.wildfly.security.auth.server.event.SecurityEvent>
インターフェイスを実装するクラスを作成します。たとえば、以下は、ユーザーの認証が成功または失敗したときに常にメッセージを出力します。指定のインターフェイスを使用する Java クラスの作成例
public class MySecurityEventListener implements Consumer<SecurityEvent> { public void accept(SecurityEvent securityEvent) { if (securityEvent instanceof SecurityAuthenticationSuccessfulEvent) { System.err.printf("Authenticated user \"%s\"\n", securityEvent.getSecurityIdentity().getPrincipal()); } else if (securityEvent instanceof SecurityAuthenticationFailedEvent) { System.err.printf("Failed authentication as user \"%s\"\n", ((SecurityAuthenticationFailedEvent)securityEvent).getPrincipal()); } } }
この例の Java クラスは、ユーザー認証に成功または失敗するたびに、メッセージを表示します。
カスタムイベントリスナーをモジュールとして提供する JAR を JBoss EAP に追加します。
以下に、カスタムイベントリスナーをモジュールとして Elytron に追加する管理 CLI コマンドの例を示します。
module
コマンドを使用して、カスタムイベントリスナーを Elytron にモジュールとして追加した例/subsystem=elytron/custom-security-event-listener=<listener_name>:add(module=<module_name>, class-name=<class_name>)
セキュリティードメインのカスタムイベントリスナーを参照します。
Application Domain
でカスタムイベントリスナーを参照する例/subsystem=elytron/security-domain=<domain_name>:write-attribute(name=security-event-listener, value=<listener_name>)
サービスを再起動します。
$ reload
イベントリスナーは、指定されたセキュリティードメインからセキュリティーイベントを受信します。
関連情報
- 本番環境でモジュールを手動で追加削除する方法については、設定ガイドの カスタムモジュールを手動で作成する および カスタムモジュールを手動で削除する を参照してください。
- カスタムイベントリスナーをモジュールとして追加する方法は、Elytron にカスタムコンポーネントを追加する を参照してください。