Configuration
Configure BindPlane OP
Options
BindPlane server configuration can be found at /etc/bindplane/config.yaml
.
BindPlane will look for flags, environment variables, and a configuration file, with precedence: flags > environment variables > configuration file.
Server and client configurations can be bootstrapped using the init
command. See the initialization section.
For detailed examples, see the configurations section.
Host
IP Address the BindPlane server binds to. This can be a single address or 0.0.0.0
for all interfaces.
Option | Flag | Environment Variable | Default |
---|---|---|---|
network.host | --host | BINDPLANE_HOST | 127.0.0.1 |
Port
TCP port the BindPlane server binds to. This must be an unprivileged port when running BindPlane as a non root user.
Option | Flag | Environment Variable | Default |
---|---|---|---|
network.port | --port | BINDPLANE_PORT | 3001 |
Remote URL
URL used to reach the BindPlane server. This must be set in all client and server configurations
and must be a valid URL with a protocol (http / https), hostname or ip address, and port.
If the server is behind a proxy or load balancer, the proxy URL can be used.
Option | Flag | Environment Variable | Default |
---|---|---|---|
network.remoteURL | --remote-url | BINDPLANE_REMOTE_URL | http://127.0.0.1:3001 |
CorsAllowedOrigins
A list of origin domains allowed to make requests to BindPlane OP. It should at least contain the domain of the hosted UI. An empty or null value matches all origins. A wildcard "*" is also allowed to match all origins.
In most cases, this value can be the same as network.remoteURL
.
Option | Flag | Environment Variable | Default |
---|---|---|---|
network.corsAllowedOrigins | --cors-allowed-origins | BINDPLANE_CORS_ALLOWED_ORIGINS | * |
Logging
Log output (file
or stdout
). When log output is set to file
, a log file path can be specified.
Option | Flag | Environment Variable | Default |
---|---|---|---|
logging.output | --logging-output | BINDPLANE_LOGGING_OUTPUT | file |
logging.filePath | --logging-file-path | BINDPLANE_LOGGING_FILE_PATH | ~/.bindplane/bindplane.log |
Server installations will use /var/log/bindplane/bindplane.log
, which is set
using an environment variable in the systemd service configuration.
Log files are rotated and gzip compressed, and cleaned up automatically by BindPlane. Log files have a max size of 100mb
and up to 10 rotates or 30 days of age, whichever comes first. Using an external utility such as logrotate
is not recommended.
Tracing
Bindplane supports configuration to enable tracing. tracing.type
can be set to google
or otlp
.
Option | Flag | Environment Variable | Default |
---|---|---|---|
tracing.type | --tracing-type | BINDPLANE_TRACING_TYPE |
When tracing.type
is set to otlp
, some more configuration is possible.
Option | Flag | Environment Variable | Default |
---|---|---|---|
tracing.otlp.endpoint | --tracing-otlp-endpoint | BINDPLANE_TRACING_OTLP_ENDPOINT | |
tracing.otlp.insecure | --tracing-otlp-insecure | BINDPLANE_TRACING_OTLP_INSECURE | FALSE |
TLS
BindPlane supports server side TLS and mutual TLS. See the tls examples
for detailed usage.
Option | Flag | Environment Variable |
---|---|---|
network.tlsCert | --tls-cert | BINDPLANE_TLS_CERT |
network.tlsKey | --tls-key | BINDPLANE_TLS_KEY |
network.tlsCA | --tls-ca | BINDPLANE_TLS_CA |
network.tlsSkipVerify | --tls-skip-verify | BINDPLANE_TLS_SKIP_VERIFY |
Server
networki.tlsCert
: Enables server side TLSnetwork.tlsKey
: Enables server side TLSnetwork.tlsCA
: Enables mutual TLS
Client
network.tlsCA
: Allows client to trust the server certificate. Not required if the host operating system already trusts the server certificate.network.tlsCert
: Enables mutual TLSnetwork.tlsKey
: Enables mutual TLSnetwork.tlsSkipVerify
: Skip server certificate verification
Storage Backend
BindPlane supports two storage backends, bbolt
and postgres
.
Option | Flag | Environment Variable | Default |
---|---|---|---|
store.type | --store-type | BINDPLANE_STORE_TYPE | bbolt |
BBolt
Option | Flag | Environment Variable | Default |
---|---|---|---|
store.bbolt.path | --store-bbolt-path | BINDPLANE_STORE_BBOLT_PATH | ~/.bindplane/storage |
Postgres
Postgres can be used as a local or remote storage backend. Postgres storage is enabled
when store.type
is set to postgres
.
Postgres is a BindPlane OP Enterprise feature.
Option | Flag | Environment Variable | Default |
---|---|---|---|
store.postgres.host | --postgres-host | BINDPLANE_POSTGRES_HOST | localhost |
store.postgres.port | --postgres-port | BINDPLANE_POSTGRES_PORT | 5432 |
store.postgres.database | --postgres-database | BINDPLANE_POSTGRES_DATABASE | bindplane |
store.postgres.sslmode | --postgres-ssl-mode | BINDPLANE_POSTGRES_SSL_MODE | disable |
store.postgres.username | --postgres-username | BINDPLANE_POSTGRES_USERNAME | |
store.postgres.password | --postgres-password | BINDPLANE_POSTGRES_PASSWORD | |
postgres.maxConnections | --postgres-max-connections | BINDPLANE_POSTGRES_MAX_CONNECTIONS | 100 |
Example Postgres configuration:
Server Secret Key
A UUIDv4 used for collector authentication. This should be a new random UUIDv4. This
value should be different than auth.sessionSecret
.
Option | Flag | Environment Variable |
---|---|---|
auth.secretKey | --secret-key | BINDPLANE_SECRET_KEY |
Server Session Secret
A UUIDv4 used for encoding web UI login cookies. This should be a new random UUIDv4. This
value should be different than auth.secretKey
.
Option | Flag | Environment Variable |
---|---|---|
auth.sessionSecret | --session-secret | BINDPLANE_SESSION_SECRET |
Authentication
BindPlane supports several authentication options.
- System (Basic Auth)
- Active Directory (Enterprise only)
- LDAP (Enterprise only)
The configuration's auth
section contains the following authentication options.
Option | Description |
---|---|
auth.type | Authentication type to use (ldap / active-directory / system ). |
System
Option | Description |
---|---|
auth.username | Basic authentication username. |
auth.password | Basic authentication password. |
LDAP / Active Directory Configuration (Enterprise)
The configuration's auth.ldap
section contains the following options for
configuration LDAP and Active Directory.
Option | Description |
---|---|
auth.ldap.server | Hostname or IP address of the LDAP or Active Directory server. |
auth.ldap.port | The TCP port to use when connecting to the authentication server. |
auth.ldap.searchFilter | LDAP Query for searching users based on mapping of username to a particular LDAP attribute as well as any applicable additional filters, (ex: groups in Active Directory). |
auth.ldap.baseDN | The starting point an LDAP server uses when searching for users. |
auth.ldap.bindUser | The username used to connect to the authentication server. For active directory, this is a username. For LDAP, this is the full DN to the user. |
auth.ldap.bindPassword | The password used to connect to the authentication server. |
auth.ldap.tls.tlsCA | Path to the TLS certificate authority. |
auth.ldap.tls.tlsSkipVerify | Whether or not to skip TLS verification. |
auth.ldap.tls.tlsCert | Path to TLS certificate when mutual TLS is required. |
auth.ldap.tls.tlsKey | Path to TLS private key when mutual TLS is required. |
Active Directory Example
Active Directory authentication is enabled by setting auth.type
to active-directory
.
In this example, the domain controller's hostname is dc.corp.net
. The username bindplane
is used to bind to Active Directory. The searchFilter
is inserted by default when running bindplane init server --config <path to bindplane config.yaml
.
User login is restricted to the DN CN=Users,DC=corp,DC=net
.
Basic Example
In this example, the domain controller's hostname is ldap.corp.net
. The username bindplane
is used to bind to LDAP. The searchFilter
is inserted by default when running bindplane init server --config <path to bindplane config.yaml
.
User login is restricted to the DN CN=Users,DC=corp,DC=net
.
Initialization
The init
command is useful for bootstrapping a server or client.
Server
After installing BindPlane server, simply run the following command and follow the prompts.
One finished, the server must be restarted.
Client
Client initialization will create a new profile if one is not
already set. If an existing profile is in use, init will update
that profile. You can learn more about profiles in the client profiles section.
Client Profiles
The profile
command offers a convenient way to create and use multiple client configurations.
In this example, it is assumed that the BindPlane server is running at 10.99.1.10
on port 3001
.
See bindplane profile help
for more profile sub commands.
Example Configurations
The following examples assume the use of observIQ collectors.
Basic
This configuration assumes that the BindPlane server is running on
IP address 192.168.1.10
.
Server Configuration
Client Profile
Create a profile named basic
:
A profile will be created at ~/.bindplane/profiles/basic.yaml
:
Collector Manager Configuration
TLS
BindPlane OP has support for server side TLS and mutual TLS.
What is a server? A server is the process running from the bindplane serve
command.
What is a client?
- bindplane cli
- OpAMP collectors
- Web browsers
Keep in mind that all certificate files must be readable by the user running the bindplane, client,
and collector processes.
Server Side TLS
Server Configuration
Server side TLS is configured by setting network.tlsCert
and network.tlsKey
on the server.
Note that remoteURL have a tls protocol set (https
).
Client Profile
All clients must trust the certificate authority that signed the server's
certificate. This can be accomplished by setting tlsCa
on the client or
by importing the certificate authority into your operating system's trust store.
Create a profile named tls
:
A profile will be created at ~/.bindplane/profiles/tls.yaml
:
If the server's certificate authority is already imported into the client's operating system trust
store, it is not required to be set in the configuration.
Browsers will show a TLS warning unless the certificate authority is trusted by
your operating system.
Collector Manager Configuration
If the server's certificate authority is already imported into the client's operating system trust
store, it is not required to be set in the configuration.
Mutual TLS
In this example, three certificate authorities are referenced:
my-corp-ca.crt
: Signed the server's certificate, must be trusted by all clients / collectorsclient-ca.crt
: Signed all client certificates, must be set in the server configurationcollector-ca.crt
: Signed all collector certificates, must be set in the server configuration
Server Configuration
Mutual TLS is configured by setting network.tlsCert
, network.tlsKey
, and network.tlsCA
on the server.
Note that remoteURL have a tls protocol set (https
).
Note that multiple certificate authorities can be specified. This example will trust
incoming connections from certificates signed by client-ca
and collector-ca
.
Client Profile
All clients must trust the certificate authority that signed the server's
certificate. This can be accomplished by setting network.tlsCA
on the client or
by importing the certificate authority into your operating system's trust store.
Create a profile named mtls
:
A profile will be created at ~/.bindplane/profiles/mtls.yaml
:
If the server's certificate authority is already imported into the client's operating system trust
store, it is not required to be set in the configuration.
Browsers will show a TLS warning unless the certificate authority is trusted by
your operating system.
Collector Manager Configuration
If the server's certificate authority is already imported into the client's operating system trust
store, it is not required to be set in the configuration.