FAQ
Going to production
What should I do before going to production?
1. Ready your graph database for production
Consult with your vendor to make sure that your graph database is installed on appropriate hardware and configured for better performances:
- Cosmos DB: high-availability guide
- JanusGraph: storage backend guide, onboarding with JanusGraph performance
- JanusGraph on Compose: resources and scaling
- Neo4j: sizing and hardware guide, clustering guide
Make sure that your graph database is secure:
- Cosmos DB: security guide
- JanusGraph: enabling authentication
- JanusGraph on Compose: encryption guide
- Neo4j: security checklist
2. Ready Elasticsearch for production
Keep in mind that Linkurious Enterprise can be used without Elasticsearch, see search options.
If you are using Linkurious Enterprise with Elasticsearch
- Make sure your have the right hardware for Elasticsearch
- See how to secure Elasticsearch
3. Ready your user-data store for production
By default, SQLite is used for the user-data store. SQLite is not recommended for production environment: switch to MySQL/MariaDB/MSSQL instead.
Schedule regular backups of the user-data store:
- MariaDB: backup and restore guide
- MySQL: backup and recovery guide
- MSSQL: create database backups
Make sure your user-data-store database is secure
- MariaDB: security guide
- MySQL: security guide
- MSSQL: security guide
If you need high-availability, set up replication
- MariaB: replication overview, setting up replication
- MySQL: replication guide,
- MSSQL: replication guide
4. Ready Linkurious Enterprise itself for production
- Make sure Linkurious Enterprise runs under a service account
- This service account should be the only user on the system to have read and write access to the
linkurious/data
directory - Enable authentication
- If needed, configure external authentication
- Enable HTTPS
- If needed, force users to use HTTPS (see
forceHttps: true
in Web Server configuration) - If needed, add your custom Certificate Authority (CA)
- If needed, force users to use HTTPS (see
How can Fault tolerance be achieved?
Linkurious Enterprise can be set up with a backup instance to allow for continuity of service when the main server crashes.
For this setup:
- both Linkurious Enterprise instances must have the same configuration
- both Linkurious Enterprise instances must be connected to the same graph databases
- both Linkurious Enterprise instances must be connected to the same search indexes
- both Linkurious Enterprise instances must be connected to the same user-data store
- if alerts are in use, they should be enabled only on the main instance (see how to disable alerts).
A reverse proxy is then configured to send requests to the backup server when the main server is down. If you are using nginx, this sample configuration can be used:
http { # define the "backend" upstream upstream backend { # main server server linkurious-main.example.com; # backup server server linkurious-backup.example.com backup; } # redirect all queries to the "backend" upsteam server { location / { proxy_pass http://backend; } }}
See nginx documentation for more details.
Security
Where is the user-data store located?
The user-data store database (containing visualizations, saved queries, user, groups, etc) is stored in a SQL database.
By default, this database is an SQLite database (located at linkurious/data/database.sqlite
).
In production, the use of a MySQL/MariaDB/MSSQL database is recommended.
These databases can be located on a remote server.
Is the user-data store encrypted?
The default user-data store (SQLite) is not encrypted.
Encryption is available with the following vendors:
- MariaDB: data-at-rest encryption guide
- MySQL: Transparent Data Encryption
- MSSQL: Transparent Data Encryption
Is it possible to delete the SQLite user-data store when using an external database?
Yes, when using an external user-data store (e.g. MariaDB, MySQL or MSSQL), the SQLite files can be deleted.
What kind of information is stored in the configuration file?
The configuration file contains all configurable options, as well as the configuration options of all configured data sources (e.g. User-Data Store host/port/username/encrypted password; Graph Database URL/username/encrypted password; Index Search URL/username/encrypted password, etc). All passwords/secrets in the configuration file are encrypted before storage.
The configuration file, like the rest of the data
folder, should be considered private and not be readable by anyone other than the Linkurious Enterprise service account.
How are application secrets stored?
All application secrets stored by Linkurious Enterprise (Graph Database credentials, User-Data Store credentials, Index Search credentials, SSL certificate passphrase, etc.) are encrypted using the AES-256-CTR algorithm.
How are user credentials stored?
User passwords are strongly hashed before being stored in the database. Passwords for LDAP and other external authentication solutions are not stored at all.
Where is the audit trail stored?
The audit trail files are generated in linkurious/data/audit-trail
by default.
This path can be set in the audit trail configuration.
Does enabling the audit-trail require additional security measures?
The audit trail contains sensitive information and should be secured. It should be owned and readable only by the Linkurious Enterprise service account.
How can the data directory be secured?
The data directory contains logs, configuration files, and, if enabled, audit trails. This information is sensitive, and the directory should be owned and readable only by the Linkurious Enterprise service account
What is a service account and why should I use one?
A service account is an operating system user account with restricted privileges that is used only to run a specific service and own it data related to this service. Service accounts are not intended to be used by people, except for performing administrative operations. Access to service accounts is usually tightly controlled using privileged access management solutions.
Service accounts prevent other users and services from reading or writing to sensitive files in the directories that they own, and are themselves prevented from reading and writing to other parts of the file system where they are not owners.
Can Kerberos be used for single sign-on?
We do not support Kerberos as of now (but we support many other third-party authentication services).
What do the log files contain?
Linkurious Enterprise creates three types of logs:
- Analytics (
data/logs/analytics.log
): Usage telemetry (GDPR safe, not sensitive information) - Technical logs (
data/logs/linkurious.log
andlinkurious.exceptions.log
): Server debugging logs (may contain graph queries). - Audit Trail (
data/audit-trail/audit-trail.log
): See audit trail log format details.
How can the communication with an LDAP server be secured?
If your LDAP server supports secure LDAP, use the "ldaps://" protocol in your LDAP configuration.
Can Elasticsearch be secured?
If you need authentication and transport layer security for Elasticsearch:
- Option A: Purchase this service from Elasticsearch
- Option B: Put Elasticsearch behind a reverse proxy to transport layer security and authentication
Can I customize the cryptographic ciphers used for TLS?
To customize supported TLS ciphers, in the general configuration, set tlsCipherList
in the server
section.
Here is an example, based on Mozilla's recommended cipher list:
"tlsCipherList": "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!eNULL:!aNULL"
Miscellaneous
What are PEM Certificates?
PEM (for Privacy-Enhanced Mail) is a file format for storing and sending cryptographic keys and certificates.
To verify if a certificate is PEM-encoded, open it with a text-editor, it should look something like this:
-----BEGIN CERTIFICATE-----MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0GA1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2VydGlmaWNhdGUgYXV0aG9yDwEB/wQFAwMHBgAwHQYDVR0OBBYEFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqGSM49BAMCA0gAMEUCIDGuwD1KPyG+hRf88MeyMQcqOFZD0TbVleF+UsAGQ4enAiEAl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=-----END CERTIFICATE-----
If you have a DER-encoded certificate (binary), it can be converted to PEM:
- on Linux:
openssl x509 -inform der -in certificate.cer -out certificate.pem
- on Windows:
- double-click on the certificate to open it (if prompted to select a program, choose
Crypto Shell Extensions
) - go to the
details
tab - click
Copy to file...
- click
Next
- select
Base-64 encoded X.509 (.CER)
and clickNext
- choose a path to save the file, click
Next
- click
Finish
- the exported certificate file (with '.CER' extension) is now in PEM format.
- double-click on the certificate to open it (if prompted to select a program, choose
Can I use Linkurious Enterprise without Elasticsearch?
Most graph vendors support search strategies other than Elasticsearch. See dails on our search options page.
Can I use a custom tile server in geo-spatial mode?
Yes. See the geospatial configuration options for further details.
Can I use ESRI ArcGIS for geo-spatial mode?
Yes, you can configure ArcGIS as the tile-server for geo-spatial mode. The ArcGIS documentation describes the API endpoints that is compatible with Linkurious Enterprise:
- endpoint URL:
http://<MapServer-url>/tile/{z}/{y}/{x}
- please refer to the geospatial configuration options for further details.
For example:
- MapServer URL: https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/
- URL template: https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}
What are the command lines utilities to administrate Linkurious Enterprise?
./linkurious/start.sh
: start the server./linkurious/stop.sh
: stop the server./linkurious/menu.sh
: open the management console./linkurious/menu.sh status
: print the current status of the server./linkurious/menu.sh install
: install as a system-wide service (requires root)./linkurious/menu.sh uninstall
: remove from system-wide services (requires root)./linkurious/menu.sh help
: show advanced options
Will enabling the audit trail impact performance?
Depending on the configuration options specified, enabling the audit trail can have an impact on performance. See the audit trail documentation for details.