8.2. logging システムロールの使用
システム管理者は、logging
システムロールを使用して、Red Hat Enterprise Linux ホストをロギングサーバーとして設定し、多数のクライアントシステムからログを収集できます。
8.2.1. logging
RHEL システムロールを使用したローカルログメッセージのフィルタリング
logging
RHEL システムロールのプロパティーベースのフィルターを使用すると、さまざまな条件に基づいてローカルログメッセージをフィルタリングできます。その結果、たとえば以下を実現できます。
- 明確なログ: トラフィック量の多い環境では、ログが急増することがあります。エラーなどの特定のメッセージに注目することで、問題をより早く特定できるようになります。
- システムパフォーマンスの最適化: ログの量が多すぎると、通常、システムパフォーマンスが低下します。重要なイベントのみを選択的にログに記録することで、リソースの枯渇を防ぎ、システムをより効率的に運用できます。
- セキュリティーの強化: システムエラーやログイン失敗などのセキュリティーメッセージを効率的にフィルタリングすることで、関連するログのみを取得できます。これは、違反を検出し、コンプライアンス基準を満たすために重要です。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Filter logs based on a specific value they contain ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
サンプル Playbook で指定されている設定は次のとおりです。
logging_inputs
-
ロギングの入力ディクショナリーのリストを定義します。
type: basics
オプションを指定すると、systemd
ジャーナルまたは Unix ソケットからの入力が対象になります。 logging_outputs
-
ロギングの出力ディクショナリーのリストを定義します。
type: files
オプションにより、ローカルファイル (通常は/var/log/
ディレクトリー内) にログを保存できます。property: msg
、property: contains
、およびproperty_value: error
オプションを指定すると、error
文字列を含むすべてのログが/var/log/errors.log
ファイルに保存されます。property: msg
、property: !contains
、およびproperty_value: error
オプションを指定すると、他のすべてのログが/var/log/others.log
ファイルに保存されます。error
値は、フィルタリングする必要がある文字列に置き換えることができます。 logging_flows
-
ロギングのフローディクショナリーのリストを定義して、
logging_inputs
とlogging_outputs
の関係を指定します。inputs: [files_input]
オプションは、ログの処理を開始する入力のリストを指定します。outputs: [files_output0, files_output1]
オプションは、ログ送信先の出力のリストを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
管理対象ノードで、
/etc/rsyslog.conf
ファイルの構文をテストします。# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
管理対象ノードで、システムが
error
文字列を含むメッセージをログに送信することを確認します。テストメッセージを送信します。
# logger error
以下のように
/var/log/errors.log
ログを表示します。# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
hostname
はクライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー -
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.2. logging
RHEL システムロールを使用したリモートロギングソリューションの適用
logging
RHEL システムロールを使用して、1 つ以上のクライアントで systemd-journal
サービスからログを取得し、リモートサーバーに転送するリモートロギングソリューションを設定できます。このサーバーは、remote_rsyslog
および remote_files
設定からリモート入力を受け取り、リモートホスト名によって指定されたディレクトリー内のローカルファイルにログを出力します。
その結果、たとえば次のようなユースケースに対応できます。
- ログの集中管理: 複数のマシンのログメッセージを 1 つのストレージポイントから収集、アクセス、管理することで、日々の監視とトラブルシューティングのタスクが簡素化されます。また、このユースケースでは、ログメッセージを確認するために個々のマシンにログインする必要性が軽減されます。
- セキュリティーの強化: ログメッセージを 1 カ所に集中して保存すると、セキュアで改ざん不可能な環境にログを保存しやすくなります。このような環境により、セキュリティーインシデントをより効果的に検出して対応し、監査要件を満たすことが容易になります。
- ログ分析の効率向上: 複数のマシンまたはサービスにまたがる複雑な問題を迅速にトラブルシューティングするには、複数のシステムからのログメッセージを相関させることが重要です。これにより、さまざまなソースからのイベントをすばやく分析し、相互参照することができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 - サーバーまたはクライアントシステムの SELinux ポリシーでポートを定義し、それらのポートのファイアウォールを開く。デフォルトの SELinux ポリシーには、ポート 601、514、6514、10514、および 20514 が含まれます。別のポートを使用するには、クライアントおよびサーバーシステムの SELinux ポリシーの変更 を参照してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Configure the server to receive remote input ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: remote_udp_input type: remote udp_ports: [ 601 ] - name: remote_tcp_input type: remote tcp_ports: [ 601 ] logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: flow_0 inputs: [remote_udp_input, remote_tcp_input] outputs: [remote_files_output] - name: Deploy the logging solution hosts: managed-node-02.example.com tasks: - name: Configure the server to output the logs to local files in directories named by remote host names ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: basic_input type: basics logging_outputs: - name: forward_output0 type: forwards severity: info target: <host1.example.com> udp_port: 601 - name: forward_output1 type: forwards facility: mail target: <host1.example.com> tcp_port: 601 logging_flows: - name: flows0 inputs: [basic_input] outputs: [forward_output0, forward_output1] [basic_input] [forward_output0, forward_output1]
サンプル Playbook の最初のプレイで指定されている設定は次のとおりです。
logging_inputs
-
ロギングの入力ディクショナリーのリストを定義します。
type: remote
オプションを指定すると、ネットワークを介した他のロギングシステムからのリモート入力が対象になります。udp_ports: [ 601 ]
オプションは、監視する UDP ポート番号のリストを定義します。tcp_ports: [ 601 ]
オプションは、監視する TCP ポート番号のリストを定義します。udp_ports
とtcp_ports
の両方が設定されている場合、udp_ports
が使用され、tcp_ports
は削除されます。 logging_outputs
-
ロギングの出力ディクショナリーのリストを定義します。
type: remote_files
オプションを指定すると、ログの送信元であるリモートホストとプログラム名ごとに、出力がローカルファイルに保存されます。 logging_flows
-
ロギングのフローディクショナリーのリストを定義して、
logging_inputs
とlogging_outputs
の関係を指定します。inputs: [remote_udp_input、remote_tcp_input]
オプションは、ログの処理を開始する入力のリストを指定します。outputs: [remote_files_output]
オプションは、ログ送信先の出力のリストを指定します。
サンプル Playbook の 2 番目のプレイで指定されている設定は次のとおりです。
logging_inputs
-
ロギングの入力ディクショナリーのリストを定義します。
type: basics
オプションを指定すると、systemd
ジャーナルまたは Unix ソケットからの入力が対象になります。 logging_outputs
-
ロギングの出力ディクショナリーのリストを定義します。
type: forwards
オプションにより、ネットワーク経由でリモートログサーバーにログを送信できます。severity: info
オプションは、重大度が情報のログメッセージを示します。facility: mail
オプションは、ログメッセージを生成するシステムプログラムの種類を示します。target: <host1.example.com>
オプションは、リモートログサーバーのホスト名を指定します。udp_port: 601
/tcp_port: 601
オプションは、リモートログサーバーがリッスンする UDP/TCP ポートを定義します。 logging_flows
-
ロギングのフローディクショナリーのリストを定義して、
logging_inputs
とlogging_outputs
の関係を指定します。inputs: [basic_input]
オプションは、ログの処理を開始する入力のリストを指定します。outputs: [forward_output0, forward_output1]
オプションは、ログ送信先の出力のリストを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
クライアントとサーバーシステムの両方で、
/etc/rsyslog.conf
ファイルの構文をテストします。# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
クライアントシステムがサーバーにメッセージを送信することを確認します。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、
/var/log/<host2.example.com>/messages
ログを表示します。次に例を示します。# cat /var/log/<host2.example.com>/messages Aug 5 13:48:31 <host2.example.com> root[6778]: test
<host2.example.com>
は、クライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー -
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.3. TLS を使用した logging
RHEL システムロールの使用
Transport Layer Security (TLS) は、コンピューターネットワーク上でセキュアな通信を可能にするために設計された暗号化プロトコルです。
RHEL システムロールの logging
を使用すると、ログメッセージのセキュアな転送を設定して、1 つ以上のクライアントで systemd-journal
サービスからログを取得し、TLS を使用してリモートサーバーに転送できます。
通常、リモートロギングソリューションでログを転送するための TLS は、インターネットなどの信頼性の低いネットワークやパブリックネットワーク経由で機密データを送信する場合に使用されます。また、TLS で証明書を使用することで、クライアントから正しい信頼できるサーバーにログを確実に転送できます。これにより、"中間者攻撃" などの攻撃を防ぐことができます。
8.2.3.1. TLS を使用したクライアントロギングの設定
logging
RHEL システムロールを使用すると、RHEL クライアントでのロギングを設定し、TLS 暗号化を使用してログをリモートロギングシステムに転送できます。
この手順では、秘密鍵と証明書を作成します。その後、Ansible インベントリーのクライアントグループ内の全ホストに TLS を設定します。TLS プロトコルは、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
証明書を作成するために、Playbook で certificate
RHEL システムロールを呼び出す必要はありません。このロールは、logging_certificates
変数が設定されている場合、logging
RHEL システムロールによって自動的に呼び出されます。
CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 - 管理対象ノードが IdM ドメインに登録されている。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying files input and forwards output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: files input_log_path: /var/log/containers/*.log logging_outputs: - name: output_name type: forwards target: your_target_host tcp_port: 514 tls: true pki_authmode: x509/name permitted_server: 'server.example.com' logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
サンプル Playbook で指定されている設定は次のとおりです。
logging_certificates
-
このパラメーターの値は、
certificate
RHEL システムロールのcertificate_requests
に渡され、秘密鍵と証明書の作成に使用されます。 logging_pki_files
このパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター
ca_cert
、ca_cert_src
、cert
、cert_src
、private_key
、private_key_src
、およびtls
で指定) を設定できます。注記logging_certificates
を使用して管理対象ノードにファイルを作成する場合は、ca_cert_src
、cert_src
、およびprivate_key_src
を使用しないでください。これらは、logging_certificates
によって作成されていないファイルのコピーに使用されます。ca_cert
-
管理対象ノード上の CA 証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pem
で、ファイル名はユーザーが設定します。 cert
-
管理対象ノード上の証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pem
で、ファイル名はユーザーが設定します。 private_key
-
管理対象ノード上の秘密鍵ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pem
で、ファイル名はユーザーが設定します。 ca_cert_src
-
ターゲットホストの
ca_cert
で指定された場所にコピーされる、コントロールノード上の CA 証明書ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 cert_src
-
ターゲットホストの
cert
で指定された場所にコピーされる、コントロールノード上の証明書ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 private_key_src
-
ターゲットホストの
private_key
で指定された場所にコピーされる、コントロールノード上の秘密鍵ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 tls
-
このパラメーターを
true
に設定すると、ネットワーク上でログがセキュアに転送されます。セキュアなラッパーが必要ない場合は、tls: false
に設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー -
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
ファイル -
/usr/share/doc/rhel-system-roles/certificate/
ディレクトリー - RHEL システムロールを使用した証明書の要求
-
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.3.2. TLS を使用したサーバーロギングの設定
logging
RHEL システムロールを使用すると、RHEL サーバーでのロギングを設定し、TLS 暗号化を使用してリモートロギングシステムからログを受信するようにサーバーを設定できます。
この手順では、秘密鍵と証明書を作成します。その後、Ansible インベントリーのサーバーグループ内の全ホストに TLS を設定します。
証明書を作成するために、Playbook で certificate
RHEL システムロールを呼び出す必要はありません。logging
RHEL システムロールがこのロールを自動的に呼び出します。
CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 - 管理対象ノードが IdM ドメインに登録されている。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: remote tcp_ports: 514 tls: true permitted_clients: ['clients.example.com'] logging_outputs: - name: output_name type: remote_files remote_log_path: /var/log/remote/%FROMHOST%/%PROGRAMNAME:::secpath-replace%.log async_writing: true client_count: 20 io_buffer_size: 8192 logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
サンプル Playbook で指定されている設定は次のとおりです。
logging_certificates
-
このパラメーターの値は、
certificate
RHEL システムロールのcertificate_requests
に渡され、秘密鍵と証明書の作成に使用されます。 logging_pki_files
このパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター
ca_cert
、ca_cert_src
、cert
、cert_src
、private_key
、private_key_src
、およびtls
で指定) を設定できます。注記logging_certificates
を使用して管理対象ノードにファイルを作成する場合は、ca_cert_src
、cert_src
、およびprivate_key_src
を使用しないでください。これらは、logging_certificates
によって作成されていないファイルのコピーに使用されます。ca_cert
-
管理対象ノード上の CA 証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pem
で、ファイル名はユーザーが設定します。 cert
-
管理対象ノード上の証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pem
で、ファイル名はユーザーが設定します。 private_key
-
管理対象ノード上の秘密鍵ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pem
で、ファイル名はユーザーが設定します。 ca_cert_src
-
ターゲットホストの
ca_cert
で指定された場所にコピーされる、コントロールノード上の CA 証明書ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 cert_src
-
ターゲットホストの
cert
で指定された場所にコピーされる、コントロールノード上の証明書ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 private_key_src
-
ターゲットホストの
private_key
で指定された場所にコピーされる、コントロールノード上の秘密鍵ファイルへのパスを表します。logging_certificates
を使用する場合は、これを使用しないでください。 tls
-
このパラメーターを
true
に設定すると、ネットワーク上でログがセキュアに転送されます。セキュアなラッパーが必要ない場合は、tls: false
に設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー - RHEL システムロールを使用した証明書の要求
-
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.4. RELP で logging
RHEL システムロールの使用
Reliable Event Logging Protocol (RELP) とは、TCP ネットワークを使用する、データとメッセージロギング用のネットワーキングプロトコルのことです。イベントメッセージを確実に配信するので、メッセージの損失が許されない環境で使用できます。
RELP の送信側はコマンド形式でログエントリーを転送し、受信側は処理後に確認応答します。RELP は、一貫性を保つために、転送されたコマンドごとにトランザクション番号を保存し、各種メッセージの復旧します。
RELP Client と RELP Server の間に、リモートロギングシステムを検討することができます。RELP Client はリモートロギングシステムにログを転送し、RELP Server はリモートロギングシステムから送信されたすべてのログを受け取ります。このユースケースを実現するには、logging
RHEL システムロールを使用して、ログエントリーが確実に送受信されるようにロギングシステムを設定できます。
8.2.4.1. RELP を使用したクライアントロギングの設定
logging
RHEL システムロールを使用すると、ローカルに保存されたログメッセージを RELP を使用してリモートロギングシステムに転送するように設定できます。
この手順では、Ansible インベントリーの client
グループ内の全ホストに RELP を設定します。RELP 設定は Transport Layer Security (TLS) を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Configure client-side of the remote logging solution using RELP hosts: managed-node-01.example.com tasks: - name: Deploy basic input and RELP output ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: basic_input type: basics logging_outputs: - name: relp_client type: relp target: logging.server.com port: 20514 tls: true ca_cert: /etc/pki/tls/certs/ca.pem cert: /etc/pki/tls/certs/client-cert.pem private_key: /etc/pki/tls/private/client-key.pem pki_authmode: name permitted_servers: - '*.server.example.com' logging_flows: - name: example_flow inputs: [basic_input] outputs: [relp_client]
サンプル Playbook で指定されている設定は次のとおりです。
target
- リモートロギングシステムが稼働しているホスト名を指定する必須パラメーターです。
port
- リモートロギングシステムがリッスンしているポート番号です。
tls
ネットワーク上でログをセキュアに転送します。セキュアなラッパーが必要ない場合は、
tls
変数をfalse
に設定します。デフォルトではtls
パラメーターは true に設定されますが、RELP を使用する場合には鍵/証明書およびトリプレット {ca_cert
、cert
、private_key
} や {ca_cert_src
、cert_src
、private_key_src
} が必要です。-
{
ca_cert_src
、cert_src
、private_key_src
} のトリプレットを設定すると、デフォルトの場所 (/etc/pki/tls/certs
と/etc/pki/tls/private
) が、コントロールノードからファイルを転送するため、管理対象ノードの宛先として使用されます。この場合、ファイル名はトリプレットの元の名前と同じです。 -
{
ca_cert
、cert
、private_key
} トリプレットが設定されている場合は、ファイルはロギング設定の前にデフォルトのパスに配置されている必要があります。 - トリプレットの両方が設定されている場合には、ファイルはコントロールノードのローカルのパスから管理対象ノードの特定のパスへ転送されます。
-
{
ca_cert
-
CA 証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pem
で、ファイル名はユーザーが設定します。 cert
-
証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pem
で、ファイル名はユーザーが設定します。 private_key
-
秘密鍵へのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pem
で、ファイル名はユーザーが設定します。 ca_cert_src
-
ローカルの CA 証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
ca_cert
を指定している場合は、その場所にコピーされます。 cert_src
-
ローカルの証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
cert
を指定している場合には、その証明書が場所にコピーされます。 private_key_src
-
ローカルキーファイルのパスを表します。これは管理対象ノードにコピーされます。
private_key
を指定している場合は、その場所にコピーされます。 pki_authmode
-
name
またはfingerprint
の認証モードを使用できます。 permitted_servers
- ロギングクライアントが、TLS 経由での接続およびログ送信を許可するサーバーのリスト。
inputs
- ロギング入力ディクショナリーのリスト。
outputs
- ロギング出力ディクショナリーのリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー -
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.4.2. RELP を使用したサーバーログの設定
logging
RHEL システムロールを使用すると、ログメッセージを RELP を使用してリモートロギングシステムから受信するようにサーバーを設定できます。
以下の手順では、Ansible インベントリーの server
グループ内の全ホストに RELP を設定します。RELP 設定は TLS を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Configure server-side of the remote logging solution using RELP hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_inputs: - name: relp_server type: relp port: 20514 tls: true ca_cert: /etc/pki/tls/certs/ca.pem cert: /etc/pki/tls/certs/server-cert.pem private_key: /etc/pki/tls/private/server-key.pem pki_authmode: name permitted_clients: - '*example.client.com' logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: example_flow inputs: relp_server outputs: remote_files_output
サンプル Playbook で指定されている設定は次のとおりです。
port
- リモートロギングシステムがリッスンしているポート番号です。
tls
ネットワーク上でログをセキュアに転送します。セキュアなラッパーが必要ない場合は、
tls
変数をfalse
に設定します。デフォルトではtls
パラメーターは true に設定されますが、RELP を使用する場合には鍵/証明書およびトリプレット {ca_cert
、cert
、private_key
} や {ca_cert_src
、cert_src
、private_key_src
} が必要です。-
{
ca_cert_src
、cert_src
、private_key_src
} のトリプレットを設定すると、デフォルトの場所 (/etc/pki/tls/certs
と/etc/pki/tls/private
) が、コントロールノードからファイルを転送するため、管理対象ノードの宛先として使用されます。この場合、ファイル名はトリプレットの元の名前と同じです。 -
{
ca_cert
、cert
、private_key
} トリプレットが設定されている場合は、ファイルはロギング設定の前にデフォルトのパスに配置されている必要があります。 - トリプレットの両方が設定されている場合には、ファイルはコントロールノードのローカルのパスから管理対象ノードの特定のパスへ転送されます。
-
{
ca_cert
-
CA 証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pem
で、ファイル名はユーザーが設定します。 cert
-
証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pem
で、ファイル名はユーザーが設定します。 private_key
-
秘密鍵へのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pem
で、ファイル名はユーザーが設定します。 ca_cert_src
-
ローカルの CA 証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
ca_cert
を指定している場合は、その場所にコピーされます。 cert_src
-
ローカルの証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
cert
を指定している場合には、その証明書が場所にコピーされます。 private_key_src
-
ローカルキーファイルのパスを表します。これは管理対象ノードにコピーされます。
private_key
を指定している場合は、その場所にコピーされます。 pki_authmode
-
name
またはfingerprint
の認証モードを使用できます。 permitted_clients
- ロギングサーバーが TLS 経由での接続およびログ送信を許可するクライアントのリスト。
inputs
- ロギング入力ディクショナリーのリスト。
outputs
- ロギング出力ディクショナリーのリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
ファイル -
/usr/share/doc/rhel-system-roles/logging/
ディレクトリー -
rsyslog.conf(5)
およびsyslog(3)
man ページ
8.2.5. 関連情報
- RHEL システムロールを使用するためのコントロールノードと管理対象ノードの準備
-
rhel-system-roles
パッケージでインストールされたドキュメントは、/usr/share/ansible/roles/rhel-system-roles.logging/README.html
にあります。 - RHEL システムロール
-
システムの
ansible-playbook(1)
の man ページ