Windows

Overview

This section describes how to install and configure MetaDefender (MD) Cluster Identity Service on Windows system. After installation, MD Cluster Control Center can connect to MD Cluster Identity and monitor its system health.


Prerequisites

Before installing the MD Cluster Identity Service, ensure the following requirements are met.

Requirement

Description

Operating System

Windows 11 23H2+, or Windows Server 2019+.

Privileges

Administrator privileges

Installation package

md-cluster-identity-service-<version>-1-x64.msi

Network access

Required port is open (default port: 8891).

A minimum network bandwidth of 1 Gbps is required.

Disk space

A minimum of 50 GB of available disk space is required.


Create the ignition file

Create an ignition file in YAML format. This file contains the credentials required for the service to connect to the system.

The file must include the following keys:

Key

Description

database.host

IP address or domain name of the server hosting PostgreSQL.

database.port

IP address or domain name of the server hosting PostgreSQL.

database.user

PostgreSQL server user. SUPERUSER privileges are required to set up the database and extensions during the initial configuration.

database.password

PostgreSQL user password.

secure.connection_key

A 4–64 character alphanumeric string (a–z, A–Z, 0–9) used by MD Cluster Control Center to connect to the server.

secure.private_key

The content of private key in X509 format.

secure.certificate

The content of certificate in X509 format.

Example ignition file:

database:
host: "posgresql_host"
port: 5432
user: "postgres"
password: "admin"
secure:
connection_key: "1234abcd" # [0-9a-zA-Z]{4,64}
private_key: |
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCjYtuWaICCY0tJ
PubxpIgIL+WWmz/fmK8IQr11Wtee6/IUyUlo5I602mq1qcLhT/kmpoR8Di3DAmHK
nSWdPWtn1BtXLErLlUiHgZDrZWInmEBjKM1DZf+CvNGZ+EzPgBv5nTekLWcfI5ZZ
toGuIP1Dl/IkNDw8zFz4cpiMe/BFGemyxdHhLrKHSm8Eo+nT734tItnHKT/m6DSU
0xlZ13d6ehLRm7/+Nx47M3XMTRH5qKP/7TTE2s0U6+M0tsGI2zpRi+m6jzhNyMBT
J1u58qAe3ZW5/+YAiuZYAB6n5bhUp4oFuB5wYbcBywVR8ujInpF8buWQUjy5N8pS
Np7szdYsnLJpvAd0sibrNPjC0FQCNrpNjgJmIK3+mKk4kXX7ZTwefoAzTK4l2pHN
uC53QVc/EF++GBLAxmvCDq9ZpMIYi7OmzkkAKKC9Ue6Ef217LFQCFIBKIzv9cgi9
fwPMLhrKleoVRNsecBsCP569WgJXhUnwf2lon4fEZr3+vRuc9shfqnV0nPN1IMSn
zXCast7I2fiuRXdIz96KjlGQpP4XfNVA+RGL7aMnWOFIaVrKWLzAtgzoGMTvP/Au

Save the ignition file to the following path on the target machine:

C:\opswat\md_cluster_identity_service.yml
Info

The ignition file contains sensitive credentials. This file can be safely deleted any time after the installation is complete.


Install the service

  1. Copy the installer file (.msi ) to the target machine.

  2. Open PowerShell with Administrator privileges.

  3. Run the following command to start the installation in silent mode:

msiexec.exe /i <md_cluster_identity_service_package>.msi /qn

Verify the service status

  1. Open PowerShell and run the following command:

Get-Service -Name md-cluster-identity-service
  1. Check the Running Status in the output.

  2. If the service is not running, start it manually:

Start-Service -Name md-cluster-identity-service

Service management

Action

Command (PowerShell)

Check service status

Get-Service -Name md-cluster-identity-service

Start service

Start-Service -Name md-cluster-identity-service

Stop service

Stop-Service -Name md-cluster-identity-service

Restart service

Restart-Service -Name md-cluster-identity-service


Customize the service configuration

During installation, MD Cluster Identity Service generates a configuration file at:

C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\md_cluster_identity_service.yml

To customize the service behavior:

  1. Open the configuration file in a text editor.

  2. Modify the required settings according to your environment.

  3. Save the changes.

  4. Restart the service to apply the new settings.

Restart-Service -Name md-cluster-identity-service

Directory structure

  • C:\opswat\md_cluster_file_storage.yml: Service Ignition file.

  • C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\md_cluster_file_storage.yml: Service configuration file.

  • C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\data\log\identity-service.log : Service log file.

  • C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\data\storage: Default storage directory.

  • C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\data\log Default log directory.


Log files

To check the service log, open the file C:\Program Files\OPSWAT\MetaDefender Cluster Identity Service\data\log\identity-service.log.

To check logs using Event Viewer:

  1. Open Event Viewer.

  2. Navigate to Windows Logs > Application.

  3. Look for events related to MD Cluster Identiy Service.


Uninstall the service

Open PowerShell and run the following command:

Uninstall-Package -Name 'MetaDefender Cluster Identity Service' -Force

Troubleshooting

A. Service is not running

  1. Check the service status

Get-Service -Name md-cluster-identity-service
  1. Start the service if it is not running:

Start-Service -Name md-cluster-identity-service

B. Installation fails

Possible causes

  • Insufficient privileges.

  • Missing dependencies.

Solution

  • Ensure the installation command is executed with Administrator privileges.

  • Ensure dependencies are installed.

C. MD Cluster Control Center cannot connect to MD Cluster Identity Service.

Possible causes

  • Network connectivity issues.

  • Firewall restrictions.

Solution

  • Ensure MD Cluster Control Center has network connectivity to MD Cluster Identity Service.

  • Verify that firewall rules allow inbound and outbound connections.


Ignition file key reference

  • secure.connection_key (Required)

    • Value type: string.

    • Description: Use a 4–64 character string that contains only numbers (0–9) and letters (a–z, A–Z). This string is used by clients to connect to the server. Set this value as the identity.connection_key in the MD Cluster Control Center configuration file.

  • secure.private_key (Required)

    • Value type: string.

    • Description: The content of private key in X509 format.

  • secure.certificate (Required)

    • Value type: string.

    • Description: The content of certificate in X509 format.

  • database.host (Required)

    • Value type: string.

    • Description: IP address or domain name of the server hosting PostgreSQL.

  • database.port (Required)

    • Value type: string.

    • Description: Port where the PostgreSQL server listens for client connections.

  • database.user (Required)

    • Value type: string.

    • Description: PostgreSQL server user. SUPERUSER privileges are required to set up the database and extensions during the initial configuration.

  • database.password (Required)

    • Value type: string.

    • Description: PostgreSQL user password.

  • rest.host [optional)

    • Value type: string.

    • Description: IP address (V4/V6) or host where the server resides on. Default value is '*'. Notes: '*' allows the service to accept connections from all network interfaces. To bind the service to a specific interface, specify its IP address or domain name. For example, to listen on all IPv4 interfaces, set the host to 0.0.0.0.

  • rest.port [optional)

    • Value type: number.

    • Description: The port where the server resides on. Default value is 8891.

  • log.streams[@].log_type [optional)

    • Value type: string.

    • Description: Type of log device (file, or syslog)

  • log.streams[@].log_level [optional)

    • Value type: string.

    • Description: Level of log message (dump, debug, info, warning, or error).

  • log.streams[@].log_path [optional)

    • Value type: string.

    • Description: Location where logs are written. If log.streams[@].log_type is "file" then log.streams[@].log_path is the path to a file on file system where logs are written. If log.streams[@].log_type is "syslog" then

      • log.streams[@].log_path can be [tcp/udp]://host:port where host:port is the host and port to a remote syslog server that supports TCP or UDP protocol.

      • log.streams[@].log_path can be "local" to write log to local syslog server (Linux only).

  • user.name [optional)

    • Value type: string.

    • Description: Username for the initial administrator account.

  • user.password [optional)

    • Value type: string.

    • Description: Password for the initial administrator account.

  • user.email [optional)

    • Value type: string.

    • Description: Email address for the initial administrator account.

  • user.apikey [optional)

    • Value type: string.

    • Description: API key for the initial administrator account.