16.6. TLS での logging システムロールの使用

Transport Layer Security (TLS) は、コンピューターネットワーク上でセキュアな通信を可能にするために設計された暗号化プロトコルです。

管理者は、logging RHEL システムロールを使用し、Red Hat Ansible Automation Platform を使用したセキュアなログ転送を設定できます。

16.6.1. TLS を使用したクライアントロギングの設定

logging システムロールを持つ Ansible Playbook を使用して、RHEL クライアントでのロギングを設定し、TLS 暗号化を使用してリモートロギングシステムにログを転送できます。

この手順では、秘密鍵と証明書を作成し、Ansible インベントリーのクライアントグループ内のすべてのホストに TLS を設定します。TLS プロトコルは、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。

注記

証明書を作成するために、Playbook で certificate システムロールを呼び出す必要はありません。logging システムロールはこれを自動的に呼び出します。

CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。

前提条件

  • TLS を設定する管理対象ノードで Playbook の実行権限がある。
  • マネージドノードがコントロールノードのインベントリーファイルに記載されている。
  • ansible パッケージおよび rhel-system-roles パッケージがコントロールノードにインストールされている。
  • 管理対象ノードが IdM ドメインに登録されている。
  • 管理対象ノード上で設定するロギングサーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、ナレッジベースの記事 TLS extension "Extended Master Secret" enforced を参照してください。

手順

  1. 以下の内容を含む playbook.yml ファイルを作成します。

    ---
    - name: Deploying files input and forwards output with certs
      hosts: clients
      roles:
        - 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 ロールの certificate_requests に渡され、秘密鍵と証明書の作成に使用されます。
    logging_pki_files

    このパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター ca_certca_cert_srccertcert_srcprivate_keyprivate_key_src、および tls で指定) を設定できます。

    注記

    logging_certificates を使用してターゲットノードにファイルを作成する場合は、ca_cert_srccert_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 に設定します。
  2. Playbook の構文を確認します。

    # ansible-playbook --syntax-check playbook.yml
  3. インベントリーファイルで Playbook を実行します。

    # ansible-playbook -i inventory_file playbook.yml

16.6.2. TLS を使用したサーバーロギングの設定

logging システムロールを持つ Ansible Playbook を使用して、RHEL サーバーでのロギングを設定し、TLS 暗号化を使用してリモートロギングシステムからログを受信するように設定できます。

この手順では、秘密鍵と証明書を作成し、Ansible インベントリーのサーバーグループ内のすべてのホストに TLS を設定します。

注記

証明書を作成するために、Playbook で certificate システムロールを呼び出す必要はありません。logging システムロールはこれを自動的に呼び出します。

CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。

前提条件

  • TLS を設定する管理対象ノードで Playbook の実行権限がある。
  • マネージドノードがコントロールノードのインベントリーファイルに記載されている。
  • ansible パッケージおよび rhel-system-roles パッケージがコントロールノードにインストールされている。
  • 管理対象ノードが IdM ドメインに登録されている。
  • 管理対象ノード上で設定するロギングサーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、ナレッジベースの記事 TLS extension "Extended Master Secret" enforced を参照してください。

手順

  1. 以下の内容を含む playbook.yml ファイルを作成します。

    ---
    - name: Deploying remote input and remote_files output with certs
      hosts: server
      roles:
        - 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 ロールの certificate_requests に渡され、秘密鍵と証明書の作成に使用されます。
    logging_pki_files

    このパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター ca_certca_cert_srccertcert_srcprivate_keyprivate_key_src、および tls で指定) を設定できます。

    注記

    logging_certificates を使用してターゲットノードにファイルを作成する場合は、ca_cert_srccert_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 に設定します。
  2. Playbook の構文を確認します。

    # ansible-playbook --syntax-check playbook.yml
  3. インベントリーファイルで Playbook を実行します。

    # ansible-playbook -i inventory_file playbook.yml