Configure authentication credentialsedit

When sending data to a secured cluster through the elasticsearch output, Journalbeat must either provide basic authentication credentials or present a client certificate.

To configure authentication credentials for Journalbeat:

  1. Create a writer role that has the following privileges:

    • Cluster: manage_index_templates and monitor
    • Index: write and create_index on the Journalbeat indices

    You can create roles from the Management / Roles UI in Kibana or through the role API. For example, the following request creates a role named journalbeat_writer:

    POST _xpack/security/role/journalbeat_writer
    {
      "cluster": ["manage_index_templates","monitor"],
      "indices": [
        {
          "names": [ "journalbeat-*" ], 
          "privileges": ["write","create_index"]
        }
      ]
    }

    If you use a custom Journalbeat index pattern, specify that pattern instead of the default journalbeat-* pattern.

  2. Assign the writer role to the user that Journalbeat will use to connect to Elasticsearch. If you plan to load the pre-built Kibana dashboards, also assign the kibana_user role.

    1. To authenticate as a native user, create a user for Journalbeat to use internally and assign it the writer role, plus any other roles that are needed.

      You can create users from the Management / Users UI in Kibana or through the user API. For example, following request creates a user named journalbeat_internal that has the journalbeat_writer and kibana_user roles:

      POST /_xpack/security/user/journalbeat_internal
      {
        "password" : "YOUR_PASSWORD",
        "roles" : [ "journalbeat_writer","kibana_user"],
        "full_name" : "Internal Journalbeat User"
      }
    2. To use PKI authentication, assign the writer role, plus any other roles that are needed, in the role_mapping.yml configuration file. Specify the user by the distinguished name that appears in its certificate:

      journalbeat_writer:
        - "cn=Internal Journalbeat User,ou=example,o=com"
      kibana_user:
        - "cn=Internal Journalbeat User,ou=example,o=com"

      For more information, see Using Role Mapping Files.

  3. In the Journalbeat configuration file, specify authentication credentials for the elasticsearch output:

    1. To use basic authentication, configure the username and password settings. For example, the following Journalbeat output configuration uses the native journalbeat_internal user to connect to Elasticsearch:

      output.elasticsearch:
        hosts: ["localhost:9200"]
        username: "journalbeat_internal" 
        password: "YOUR_PASSWORD" 

      You created this user earlier.

      The example shows a hard-coded password, but you should store sensitive values in the secrets keystore.

    2. To use PKI authentication, configure the certificate and key settings:

      output.elasticsearch:
        hosts: ["localhost:9200"]
        ssl.certificate: "/etc/pki/client/cert.pem" 
        ssl.key: "/etc/pki/client/cert.key"

      The distinguished name (DN) in the certificate must be mapped to the journalbeat_writer and kibana_user roles in the role_mapping.yml configuration file on each node in the Elasticsearch cluster.