2020-12-24 22:00:22 +00:00
# Configuration
2021-04-19 18:58:44 +00:00
2020-12-24 22:00:22 +00:00
- [Configuring the Fleet binary ](#configuring-the-fleet-binary )
2021-04-19 18:58:44 +00:00
- [High-level configuration overview ](#high-level-configuration-overview )
- [Commands ](#commands )
- [Options ](#options )
2020-12-24 22:00:22 +00:00
- [Managing osquery configurations ](#managing-osquery-configurations )
- [Running with systemd ](#running-with-systemd )
- [Configuring Single Sign On ](#configuring-single-sign-on )
2021-04-19 18:58:44 +00:00
- [Identity Provider (IDP) Configuration ](#identity-provider-IDP-configuration )
- [Fleet SSO Configuration ](#fleet-sso-configuration )
- [Creating SSO Users in Fleet ](#creating-sso-users-in-fleet )
2021-04-26 15:44:22 +00:00
- [Feature flags ](#feature-flags )
2020-12-24 22:00:22 +00:00
## Configuring the Fleet binary
2017-01-31 01:51:10 +00:00
2017-10-06 01:33:41 +00:00
For information on how to run the `fleet` binary, detailed usage information can be found by running `fleet --help` . This document is a more detailed version of the information presented in the help output text. If you prefer to use a CLI instead of a web browser, we hope that you like the binary interface to the Fleet application!
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
### High-level configuration overview
2017-01-31 01:51:10 +00:00
2017-09-21 22:51:26 +00:00
To get the most out of running the Fleet server, it is helpful to establish a mutual understanding of what the desired architecture looks like and what it's trying to accomplish.
2017-01-31 01:51:10 +00:00
2017-09-21 22:51:26 +00:00
Your Fleet server's two main purposes are:
2017-01-31 01:51:10 +00:00
- To serve as your [osquery TLS server ](https://osquery.readthedocs.io/en/stable/deployment/remote/ )
2020-12-10 19:26:00 +00:00
- To serve the Fleet web UI, which allows you to manage osquery configuration, query hosts, etc.
2017-01-31 01:51:10 +00:00
2021-09-01 19:50:52 +00:00
The Fleet server allows you persist configuration, manage users, etc. Thus, it needs a database. Fleet uses MySQL and requires you to supply configurations to connect to a MySQL server. It is also possible to configure connection to a MySQL replica in addition to the primary, to be used for reading only. Fleet also uses Redis to perform some more high-speed data access action throughout the lifecycle of the application (for example, distributed query result ingestion). Thus, Fleet also requires that you supply Redis connection configurations.
2021-05-20 16:21:20 +00:00
2021-06-02 16:34:51 +00:00
> Fleet does not support Redis Cluster or Redis Sentinel. Fleet can scale to hundreds of thousands of devices with a single Redis instance.
2017-01-31 01:51:10 +00:00
2021-06-07 01:10:58 +00:00
Since Fleet is a web application, when you run Fleet there are some other configurations that must be defined, such as:
2017-01-31 01:51:10 +00:00
2017-09-21 22:51:26 +00:00
- The TLS certificates that Fleet should use to terminate TLS.
2017-01-31 01:51:10 +00:00
2021-05-28 20:47:32 +00:00
When deploying Fleet, mitigate DoS attacks as you would when deploying any app.
2017-09-21 22:51:26 +00:00
Since Fleet is an osquery TLS server, you are also able to define configurations that can customize your experience there, such as:
2017-01-31 01:51:10 +00:00
- The destination of the osquery status and result logs on the local filesystem
- Various details about the refresh/check-in intervals for your hosts
2020-12-24 22:00:22 +00:00
### Commands
2017-01-31 01:51:10 +00:00
2017-10-06 01:33:41 +00:00
The `fleet` binary contains several "commands". Similarly to how `git` has many commands (`git status`, `git commit` , etc), the `fleet` binary accepts the following commands:
2017-01-31 01:51:10 +00:00
2017-10-06 01:33:41 +00:00
- `fleet prepare db`
- `fleet serve`
- `fleet version`
- `fleet config_dump`
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
### Options
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
#### How do you specify options?
2017-01-31 01:51:10 +00:00
In order of precedence, options can be specified via:
- A configuration file (in YAML format)
- Environment variables
- Command-line flags
2017-09-21 22:51:26 +00:00
For example, all of the following ways of launching Fleet are equivalent:
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
##### Using only CLI flags
2017-01-31 01:51:10 +00:00
```
2020-11-12 21:50:08 +00:00
/usr/bin/fleet serve \
--mysql_address=127.0.0.1:3306 \
2021-06-04 23:51:18 +00:00
--mysql_database=fleet \
2020-11-12 21:50:08 +00:00
--mysql_username=root \
--mysql_password=toor \
--redis_address=127.0.0.1:6379 \
--server_cert=/tmp/server.cert \
--server_key=/tmp/server.key \
2021-06-07 01:10:58 +00:00
--logging_json
2017-01-31 01:51:10 +00:00
```
2020-12-24 22:00:22 +00:00
##### Using only environment variables
2017-01-31 01:51:10 +00:00
```
2021-02-11 23:36:58 +00:00
FLEET_MYSQL_ADDRESS=127.0.0.1:3306 \
2021-06-04 23:51:18 +00:00
FLEET_MYSQL_DATABASE=fleet \
2021-02-11 23:36:58 +00:00
FLEET_MYSQL_USERNAME=root \
FLEET_MYSQL_PASSWORD=toor \
FLEET_REDIS_ADDRESS=127.0.0.1:6379 \
FLEET_SERVER_CERT=/tmp/server.cert \
FLEET_SERVER_KEY=/tmp/server.key \
FLEET_LOGGING_JSON=true \
2020-11-12 21:50:08 +00:00
/usr/bin/fleet serve
2017-01-31 01:51:10 +00:00
```
2020-12-24 22:00:22 +00:00
##### Using a config file
2017-01-31 01:51:10 +00:00
```
2020-11-12 21:50:08 +00:00
echo '
2017-01-31 01:51:10 +00:00
mysql:
address: 127.0.0.1:3306
2021-06-04 23:51:18 +00:00
database: fleet
2017-01-31 01:51:10 +00:00
username: root
password: toor
redis:
address: 127.0.0.1:6379
server:
cert: /tmp/server.cert
key: /tmp/server.key
logging:
json: true
2021-06-04 23:51:18 +00:00
' > /tmp/fleet.yml
fleet serve --config /tmp/fleet.yml
2017-01-31 01:51:10 +00:00
```
2020-12-24 22:00:22 +00:00
#### What are the options?
2017-01-31 01:51:10 +00:00
2021-02-11 23:36:58 +00:00
Note that all option names can be converted consistently from flag name to environment variable and visa-versa. For example, the `--mysql_address` flag would be the `FLEET_MYSQL_ADDRESS` . Further, specifying the `mysql_address` option in the config would follow the pattern:
2017-01-31 01:51:10 +00:00
```
mysql:
address: 127.0.0.1:3306
```
2021-09-01 19:50:52 +00:00
And `mysql_read_replica_address` would be:
```
mysql_read_replica:
address: 127.0.0.1:3307
```
2021-02-11 23:36:58 +00:00
Basically, just capitalize the option and prepend `FLEET_` to it in order to get the environment variable. The conversion works the same the opposite way.
2017-01-31 01:51:10 +00:00
2021-08-04 16:31:24 +00:00
All duration-based settings accept valid time units of `s` , `m` , `h` .
2020-12-24 22:00:22 +00:00
##### MySQL
2017-01-31 01:51:10 +00:00
2021-09-01 19:50:52 +00:00
This section describes the configuration options for the primary - if you also want to setup a read replica, the options are the same, except that the yaml section is `mysql_read_replica` , and the flags have the `mysql_read_replica_` prefix instead of `mysql_` (the corresponding environment variables follow the same transformation). Note that there is no default value for `mysql_read_replica_address` , it must be set explicitly for fleet to use a read replica.
2021-09-07 18:55:55 +00:00
###### mysql_address
2017-01-31 01:51:10 +00:00
2017-09-21 22:51:26 +00:00
The address of the MySQL server which Fleet should connect to. Include the hostname and port.
2017-01-31 01:51:10 +00:00
- Default value: `localhost:3306`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_ADDRESS`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
address: localhost:3306
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_database
2017-01-31 01:51:10 +00:00
2017-09-21 22:51:26 +00:00
The name of the MySQL database which Fleet will use.
2017-01-31 01:51:10 +00:00
2021-06-06 23:58:23 +00:00
- Default value: `fleet`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_DATABASE`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
2021-06-06 23:58:23 +00:00
database: fleet
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_username
2017-01-31 01:51:10 +00:00
The username to use when connecting to the MySQL instance.
2021-06-06 23:58:23 +00:00
- Default value: `fleet`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_USERNAME`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
2021-06-06 23:58:23 +00:00
username: fleet
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_password
2017-01-31 01:51:10 +00:00
The password to use when connecting to the MySQL instance.
2021-06-06 23:58:23 +00:00
- Default value: `fleet`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_PASSWORD`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
2021-06-06 23:58:23 +00:00
password: fleet
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_password_path
2021-01-04 15:58:43 +00:00
File path to a file that contains the password to use when connecting to the MySQL instance.
- Default value: `""`
2021-05-21 15:41:13 +00:00
- Environment variable: `FLEET_MYSQL_PASSWORD_PATH`
2021-01-04 15:58:43 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
2021-06-22 21:31:26 +00:00
password_path: '/run/secrets/fleetdm-mysql-password'
2021-04-19 18:58:44 +00:00
```
2021-01-04 15:58:43 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_tls_ca
2017-02-17 00:14:00 +00:00
The path to a PEM encoded certificate of MYSQL's CA for client certificate authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_TLS_CA`
2017-02-17 00:14:00 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
tls_ca: /path/to/server-ca.pem
```
2017-02-17 00:14:00 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_tls_cert
2017-02-17 00:14:00 +00:00
The path to a PEM encoded certificate use for tls authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_TLS_CERT`
2017-02-17 00:14:00 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
tls_cert: /path/to/certificate.pem
```
2017-02-17 00:14:00 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_tls_key
2017-02-17 00:14:00 +00:00
The path to a PEM encoded private key use for tls authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_TLS_KEY`
2017-02-17 00:14:00 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
tls_key: /path/to/key.pem
```
2017-02-17 00:14:00 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_tls_config
2017-02-17 00:14:00 +00:00
The tls value in a MYSQL DSN. Can be `true` ,`false`,`skip-verify` or the CN value of the certificate.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_TLS_CONFIG`
2017-02-17 00:14:00 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
tls_config: true
```
2017-02-17 00:14:00 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_tls_server_name
2017-02-17 00:14:00 +00:00
The server name or IP address used by the client certificate.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_TLS_SERVER_NAME`
2017-02-17 00:14:00 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
servername: 127.0.0.1
```
2017-02-17 00:14:00 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_max_open_conns
2018-11-01 21:43:24 +00:00
Maximum open connections to database
- Default value: 50
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_MAX_OPEN_CONNS`
2018-11-01 21:43:24 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
max_open_conns: 50
```
2018-11-01 21:43:24 +00:00
2021-09-07 18:55:55 +00:00
###### mysql_max_idle_conns
2018-11-01 21:43:24 +00:00
Maximum idle connections to database. This value should be equal to or less than `mysql_max_open_conns`
- Default value: 50
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_MAX_IDLE_CONNS`
2018-11-01 21:43:24 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
max_idle_conns: 50
```
2018-11-01 21:43:24 +00:00
2021-09-07 18:55:55 +00:00
###### conn_max_lifetime
2020-07-30 16:00:42 +00:00
Maximum amount of time, in seconds, a connection may be reused.
- Default value: 0 (Unlimited)
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_MYSQL_CONN_MAX_LIFETIME`
2020-07-30 16:00:42 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
mysql:
conn_max_lifetime: 50
```
2020-07-30 16:00:42 +00:00
2020-12-24 22:00:22 +00:00
##### Redis
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### redis_address
2017-01-31 01:51:10 +00:00
2017-10-06 01:33:41 +00:00
The address of the Redis server which Fleet should connect to. Include the hostname and port.
2017-01-31 01:51:10 +00:00
- Default value: `localhost:6379`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_REDIS_ADDRESS`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
redis:
address: 127.0.0.1:7369
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### redis_password
2017-01-31 01:51:10 +00:00
The password to use when connecting to the Redis instance.
- Default value: `<empty>`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_REDIS_PASSWORD`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
redis:
password: foobar
```
2021-09-07 18:55:55 +00:00
###### redis_database
2020-07-30 15:57:25 +00:00
The database to use when connecting to the Redis instance.
- Default value: `0`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_REDIS_DATABASE`
2020-07-30 15:57:25 +00:00
- Config file format:
```
redis:
database: 14
```
2021-05-21 15:41:13 +00:00
2021-09-07 18:55:55 +00:00
###### redis_duplicate_results
2021-05-13 23:01:31 +00:00
Whether or not to duplicate Live Query results to another Redis channel named `LQDuplicate` . This is useful in a scenario that would involve shipping the Live Query results outside of Fleet, near-realtime.
- Default value: `false`
- Environment variable: `FLEET_REDIS_DUPLICATE_RESULTS`
- Config file format:
```
redis:
duplicate_results: true
```
2017-01-31 01:51:10 +00:00
2021-09-08 20:55:12 +00:00
###### redis_connect_timeout
Timeout for redis connection.
- Default value: 5s
- Environment variable: `FLEET_REDIS_CONNECT_TIMEOUT`
- Config file format:
```
redis:
connect_timeout: 10s
```
###### redis_keep_alive
Interval between keep alive probes.
- Default value: 10s
- Environment variable: `FLEET_REDIS_KEEP_ALIVE`
- Config file format:
```
redis:
keep_alive: 30s
```
2020-12-24 22:00:22 +00:00
##### Server
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### server_address
2017-01-31 01:51:10 +00:00
2019-01-24 17:39:32 +00:00
The address to serve the Fleet webserver.
2017-01-31 01:51:10 +00:00
- Default value: `0.0.0.0:8080`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_ADDRESS`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
address: 0.0.0.0:443
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### server_cert
2017-01-31 01:51:10 +00:00
The TLS cert to use when terminating TLS.
2021-04-19 18:58:44 +00:00
See [TLS certificate considerations ](./1-Installation.md#tls-certificate-considerations ) for more information about certificates and Fleet.
2021-06-06 23:58:23 +00:00
- Default value: `./tools/osquery/fleet.crt`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_CERT`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
2021-06-06 23:58:23 +00:00
cert: /tmp/fleet.crt
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### server_key
2017-01-31 01:51:10 +00:00
The TLS key to use when terminating TLS.
2021-06-06 23:58:23 +00:00
- Default value: `./tools/osquery/fleet.key`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_KEY`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
2021-06-06 23:58:23 +00:00
key: /tmp/fleet.key
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### server_tls
2017-01-31 01:51:10 +00:00
Whether or not the server should be served over TLS.
- Default value: `true`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_TLS`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
tls: false
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### server_tls_compatibility
2019-01-07 23:03:51 +00:00
2021-01-20 16:34:14 +00:00
Configures the TLS settings for compatibility with various user agents. Options are `modern` and `intermediate` . These correspond to the compatibility levels [defined by the Mozilla OpSec team ](https://wiki.mozilla.org/index.php?title=Security/Server_Side_TLS&oldid=1229478 ) (updated July 24, 2020).
2019-01-07 23:03:51 +00:00
2021-02-03 19:48:48 +00:00
- Default value: `intermediate`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_TLS_COMPATIBILITY`
2019-01-07 23:03:51 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
2021-06-04 15:44:36 +00:00
tls_compatibility: intermediate
2021-04-19 18:58:44 +00:00
```
2021-09-07 18:55:55 +00:00
###### server_url_prefix
2019-10-16 23:40:45 +00:00
Sets a URL prefix to use when serving the Fleet API and frontend. Prefixes should be in the form `/apps/fleet` (no trailing slash).
Note that some other configurations may need to be changed when modifying the URL prefix. In particular, URLs that are provided to osquery via flagfile, the configuration served by Fleet, the URL prefix used by `fleetctl` , and the redirect URL set with an SSO Identity Provider.
- Default value: Empty (no prefix set)
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SERVER_URL_PREFIX`
2019-10-16 23:40:45 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
server:
url_prefix: /apps/fleet
```
2019-01-07 23:03:51 +00:00
2021-09-07 18:55:55 +00:00
###### server_keepalive
2021-05-08 00:29:54 +00:00
Controls the server side http keep alive property.
Turning off keepalives has helped reduce outstanding TCP connections in some deployments.
- Default value: true
- Environment variable: `FLEET_SERVER_KEEPALIVE`
- Config file format:
```
server:
keepalive: true
```
2020-12-24 22:00:22 +00:00
##### Auth
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### auth_bcrypt_cost
2017-01-31 01:51:10 +00:00
The bcrypt cost to use when hashing user passwords.
- Default value: `12`
2021-05-21 15:41:13 +00:00
- Environment variable: `FLEET_AUTH_BCRYPT_COST`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
auth:
bcrypt_cost: 14
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### auth_salt_key_size
2017-01-31 01:51:10 +00:00
The key size of the salt which is generated when hashing user passwords.
- Default value: `24`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_AUTH_SALT_KEY_SIZE`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
auth:
salt_key_size: 36
```
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
##### App
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### app_token_key_size
2017-01-31 01:51:10 +00:00
2017-01-31 05:13:08 +00:00
Size of generated app tokens.
2017-01-31 01:51:10 +00:00
- Default value: `24`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_APP_TOKEN_KEY_SIZE`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
app:
token_key_size: 36
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### app_invite_token_validity_period
2017-01-31 01:51:10 +00:00
How long invite tokens should be valid for.
- Default value: `5 days`
2021-05-21 15:41:13 +00:00
- Environment variable: `FLEET_APP_INVITE_TOKEN_VALIDITY_PERIOD`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
app:
invite_token_validity_period: 1d
```
2017-01-31 01:51:10 +00:00
2021-06-21 22:57:50 +00:00
##### License
2021-09-07 18:55:55 +00:00
###### license_key
2021-06-21 22:57:50 +00:00
2021-08-19 17:50:21 +00:00
The license key provided to Fleet customers which provides access to Fleet Premium features.
2021-06-21 22:57:50 +00:00
- Default value: none
- Environment variable: `FLEET_LICENSE_KEY`
- Config file format:
```
license:
key: foobar
```
2020-12-24 22:00:22 +00:00
##### Session
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### session_key_size
2017-01-31 01:51:10 +00:00
The size of the session key.
- Default value: `64`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SESSION_KEY_SIZE`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
session:
key_size: 48
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### session_duration
2017-01-31 01:51:10 +00:00
The amount of time that a session should last for.
2021-08-04 16:31:24 +00:00
Valid time units are `s` , `m` , `h` .
2021-06-07 01:28:47 +00:00
- Default value: `4 hours`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_SESSION_DURATION`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
session:
2021-06-07 01:28:47 +00:00
duration: 24h
2021-04-19 18:58:44 +00:00
```
2017-01-31 01:51:10 +00:00
2020-12-24 22:00:22 +00:00
##### Osquery
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_node_key_size
2017-01-31 01:51:10 +00:00
The size of the node key which is negotiated with `osqueryd` clients.
- Default value: `24`
2021-04-19 18:58:44 +00:00
- Environment variable: `FLEET_OSQUERY_NODE_KEY_SIZE`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
node_key_size: 36
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_host_identifier
2021-03-09 02:35:17 +00:00
The identifier to use when determining uniqueness of hosts.
2021-03-25 00:32:25 +00:00
Options are `provided` (default), `uuid` , `hostname` , or `instance` .
2021-03-09 02:35:17 +00:00
2021-03-09 05:26:09 +00:00
This setting works in combination with the `--host_identifier` flag in osquery. In most deployments, using `instance` will be the best option. The flag defaults to `provided` -- preserving the existing behavior of Fleet's handling of host identifiers -- using the identifier provided by osquery. `instance` , `uuid` , and `hostname` correspond to the same meanings as for osquery's `--host_identifier` flag.
Users that have duplicate UUIDs in their environment can benefit from setting this flag to `instance` .
2021-03-09 02:35:17 +00:00
- Default value: `provided`
2021-04-19 18:58:44 +00:00
- Environment variable: `FLEET_OSQUERY_HOST_IDENTIFIER`
2021-03-09 02:35:17 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
host_identifier: uuid
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_enroll_cooldown
2021-03-09 05:26:09 +00:00
The cooldown period for host enrollment. If a host (uniquely identified by the `osquery_host_identifier` option) tries to enroll within this duration from the last enrollment, enroll will fail.
This flag can be used to control load on the database in scenarios in which many hosts are using the same identifier. Often configuring `osquery_host_identifier` to `instance` may be a better solution.
- Default value: `0` (off)
2021-05-21 15:41:13 +00:00
- Environment variable: `FLEET_OSQUERY_ENROLL_COOLDOWN`
2021-03-09 05:26:09 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
enroll_cooldown: 1m
```
2021-03-09 05:26:09 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_label_update_interval
2019-04-08 18:47:15 +00:00
The interval at which Fleet will ask osquery agents to update their results for label queries.
2020-03-02 19:08:08 +00:00
Setting this to a higher value can reduce baseline load on the Fleet server in larger deployments.
2021-08-04 16:31:24 +00:00
Valid time units are `s` , `m` , `h` .
2019-04-08 18:47:15 +00:00
- Default value: `1h`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_OSQUERY_LABEL_UPDATE_INTERVAL`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
label_update_interval: 30m
```
2020-03-02 19:08:08 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_detail_update_interval
2020-03-02 19:08:08 +00:00
The interval at which Fleet will ask osquery agents to update host details (such as uptime, hostname, network interfaces, etc.)
Setting this to a higher value can reduce baseline load on the Fleet server in larger deployments.
2021-08-04 16:31:24 +00:00
Valid time units are `s` , `m` , `h` .
2020-03-02 19:08:08 +00:00
- Default value: `1h`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_OSQUERY_DETAIL_UPDATE_INTERVAL`
2020-03-02 19:08:08 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
detail_update_interval: 30m
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_status_log_plugin
2019-04-08 18:47:15 +00:00
Which log output plugin should be used for osquery status logs received from clients.
2021-02-24 18:02:26 +00:00
Options are `filesystem` , `firehose` , `kinesis` , `lambda` , `pubsub` , and `stdout` .
2019-04-08 18:47:15 +00:00
- Default value: `filesystem`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_OSQUERY_STATUS_LOG_PLUGIN`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
status_log_plugin: firehose
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### osquery_result_log_plugin
2019-04-08 18:47:15 +00:00
Which log output plugin should be used for osquery result logs received from clients.
2021-02-24 18:02:26 +00:00
Options are `filesystem` , `firehose` , `kinesis` , `lambda` , `pubsub` , and `stdout` .
2019-04-08 18:47:15 +00:00
- Default value: `filesystem`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_OSQUERY_RESULT_LOG_PLUGIN`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
osquery:
result_log_plugin: firehose
```
2019-04-08 18:47:15 +00:00
2020-12-24 22:00:22 +00:00
##### Logging (Fleet server logging)
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### logging_debug
2017-01-31 01:51:10 +00:00
Whether or not to enable debug logging.
- Default value: `false`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_LOGGING_DEBUG`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
logging:
debug: true
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### logging_json
2017-01-31 01:51:10 +00:00
Whether or not to log in JSON.
- Default value: `false`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_LOGGING_JSON`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
logging:
json: true
```
2017-01-31 01:51:10 +00:00
2021-09-07 18:55:55 +00:00
###### logging_disable_banner
2017-01-31 01:51:10 +00:00
Whether or not to log the welcome banner.
- Default value: `false`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_LOGGING_DISABLE_BANNER`
2017-01-31 01:51:10 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
logging:
disable_banner: true
```
2019-04-08 18:47:15 +00:00
2020-12-24 22:00:22 +00:00
##### Filesystem
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### filesystem_status_log_file
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `filesystem` (the default value).
The path which osquery status logs will be logged to.
- Default value: `/tmp/osquery_status`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FILESYSTEM_STATUS_LOG_FILE`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
filesystem:
status_log_file: /var/log/osquery/status.log
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### filesystem_result_log_file
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_result_log_plugin` is set to `filesystem` (the default value).
The path which osquery result logs will be logged to.
- Default value: `/tmp/osquery_result`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FILESYSTEM_RESULT_LOG_FILE`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
filesystem:
result_log_file: /var/log/osquery/result.log
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### filesystem_enable_log_rotation
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_result_log_plugin` or `osquery_status_log_plugin` are set to `filesystem` (the default value).
This flag will cause the osquery result and status log files to be automatically
rotated when files reach a size of 500 Mb or an age of 28 days.
- Default value: `false`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FILESYSTEM_ENABLE_LOG_ROTATION`
2019-04-08 18:47:15 +00:00
- Config file format:
```
filesystem:
enable_log_rotation: true
```
2021-09-07 18:55:55 +00:00
###### filesystem_enable_log_compression
2020-09-09 20:33:32 +00:00
This flag only has effect if `filesystem_enable_log_rotation` is set to `true` .
This flag will cause the rotated logs to be compressed with gzip.
- Default value: `false`
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FILESYSTEM_ENABLE_LOG_COMPRESSION`
2020-09-09 20:33:32 +00:00
- Config file format:
```
filesystem:
enable_log_compression: true
```
2020-12-24 22:00:22 +00:00
##### Firehose
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_region
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `firehose` .
AWS region to use for Firehose connection
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_REGION`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
region: ca-central-1
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_access_key_id
2019-04-08 18:47:15 +00:00
2020-05-12 20:30:14 +00:00
This flag only has effect if `osquery_status_log_plugin` or `osquery_result_log_plugin` are set to `firehose` .
If `firehose_access_key_id` and `firehose_secret_access_key` are omitted, Fleet will try to use [AWS STS ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html ) credentials.
2019-04-08 18:47:15 +00:00
AWS access key ID to use for Firehose authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_ACCESS_KEY_ID`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
access_key_id: AKIAIOSFODNN7EXAMPLE
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_secret_access_key
2019-04-08 18:47:15 +00:00
2020-05-12 20:30:14 +00:00
This flag only has effect if `osquery_status_log_plugin` or `osquery_result_log_plugin` are set to `firehose` .
2019-04-08 18:47:15 +00:00
AWS secret access key to use for Firehose authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_SECRET_ACCESS_KEY`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_sts_assume_role_arn
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `firehose` .
AWS STS role ARN to use for Firehose authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_STS_ASSUME_ROLE_ARN`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
sts_assume_role_arn: arn:aws:iam::1234567890:role/firehose-role
```
2019-04-08 18:47:15 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_status_stream
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `firehose` .
Name of the Firehose stream to write osquery status logs received from clients.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_STATUS_STREAM`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
status_stream: osquery_status
```
2019-04-08 18:47:15 +00:00
2020-08-19 21:56:44 +00:00
The IAM role used to send to Firehose must allow the following permissions on
the stream listed:
2021-04-19 18:58:44 +00:00
- `firehose:DescribeDeliveryStream`
- `firehose:PutRecordBatch`
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### firehose_result_stream
2019-04-08 18:47:15 +00:00
This flag only has effect if `osquery_result_log_plugin` is set to `firehose` .
Name of the Firehose stream to write osquery result logs received from clients.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_FIREHOSE_RESULT_STREAM`
2019-04-08 18:47:15 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
firehose:
result_stream: osquery_result
```
2019-07-16 22:41:50 +00:00
2020-08-19 21:56:44 +00:00
The IAM role used to send to Firehose must allow the following permissions on
the stream listed:
2021-04-19 18:58:44 +00:00
- `firehose:DescribeDeliveryStream`
- `firehose:PutRecordBatch`
2020-08-19 21:56:44 +00:00
2020-12-24 22:00:22 +00:00
##### Kinesis
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_region
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `kinesis` .
AWS region to use for Kinesis connection
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_REGION`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
region: ca-central-1
```
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_access_key_id
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `kinesis` .
If `kinesis_access_key_id` and `kinesis_secret_access_key` are omitted, Fleet
will try to use
[AWS STS ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html )
credentials.
AWS access key ID to use for Kinesis authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_ACCESS_KEY_ID`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
access_key_id: AKIAIOSFODNN7EXAMPLE
```
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_secret_access_key
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `kinesis` .
AWS secret access key to use for Kinesis authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_SECRET_ACCESS_KEY`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_sts_assume_role_arn
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `kinesis` .
AWS STS role ARN to use for Kinesis authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_STS_ASSUME_ROLE_ARN`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
sts_assume_role_arn: arn:aws:iam::1234567890:role/kinesis-role
```
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_status_stream
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `kinesis` .
Name of the Kinesis stream to write osquery status logs received from clients.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_STATUS_STREAM`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
status_stream: osquery_status
```
2020-08-19 21:56:44 +00:00
The IAM role used to send to Kinesis must allow the following permissions on
the stream listed:
2021-04-19 18:58:44 +00:00
- `kinesis:DescribeStream`
- `kinesis:PutRecords`
2020-08-19 21:56:44 +00:00
2021-09-07 18:55:55 +00:00
###### kinesis_result_stream
2020-08-19 21:56:44 +00:00
This flag only has effect if `osquery_result_log_plugin` is set to `kinesis` .
Name of the Kinesis stream to write osquery result logs received from clients.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_KINESIS_RESULT_STREAM`
2020-08-19 21:56:44 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
kinesis:
result_stream: osquery_result
```
2020-08-19 21:56:44 +00:00
The IAM role used to send to Kinesis must allow the following permissions on
the stream listed:
2021-04-19 18:58:44 +00:00
- `kinesis:DescribeStream`
- `kinesis:PutRecords`
2020-08-19 21:56:44 +00:00
2021-02-24 18:02:26 +00:00
##### Lambda
2021-09-07 18:55:55 +00:00
###### lambda_region
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `lambda` .
AWS region to use for Lambda connection
- Default value: none
- Environment variable: `FLEET_LAMBDA_REGION`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
region: ca-central-1
```
2021-02-24 18:02:26 +00:00
2021-09-07 18:55:55 +00:00
###### lambda_access_key_id
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `lambda` .
If `lambda_access_key_id` and `lambda_secret_access_key` are omitted, Fleet
will try to use
[AWS STS ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html )
credentials.
AWS access key ID to use for Lambda authentication.
- Default value: none
- Environment variable: `FLEET_LAMBDA_ACCESS_KEY_ID`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
access_key_id: AKIAIOSFODNN7EXAMPLE
```
2021-02-24 18:02:26 +00:00
2021-09-07 18:55:55 +00:00
###### lambda_secret_access_key
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `lambda` .
AWS secret access key to use for Lambda authentication.
- Default value: none
- Environment variable: `FLEET_LAMBDA_SECRET_ACCESS_KEY`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```
2021-02-24 18:02:26 +00:00
2021-09-07 18:55:55 +00:00
###### lambda_sts_assume_role_arn
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_status_log_plugin` or
`osquery_result_log_plugin` are set to `lambda` .
AWS STS role ARN to use for Lambda authentication.
- Default value: none
- Environment variable: `FLEET_LAMBDA_STS_ASSUME_ROLE_ARN`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
sts_assume_role_arn: arn:aws:iam::1234567890:role/lambda-role
```
2021-02-24 18:02:26 +00:00
2021-09-07 18:55:55 +00:00
###### lambda_status_function
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `lambda` .
Name of the Lambda function to write osquery status logs received from clients.
- Default value: none
- Environment variable: `FLEET_LAMBDA_STATUS_FUNCTION`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
status_function: statusFunction
```
2021-02-24 18:02:26 +00:00
The IAM role used to send to Lambda must allow the following permissions on
the function listed:
2021-04-19 18:58:44 +00:00
- `lambda:InvokeFunction`
2021-02-24 18:02:26 +00:00
2021-09-07 18:55:55 +00:00
###### lambda_result_function
2021-02-24 18:02:26 +00:00
This flag only has effect if `osquery_result_log_plugin` is set to `lambda` .
Name of the Lambda function to write osquery result logs received from clients.
- Default value: none
- Environment variable: `FLEET_LAMBDA_RESULT_FUNCTION`
- Config file format:
2021-04-19 18:58:44 +00:00
```
lambda:
result_function: resultFunction
```
2021-02-24 18:02:26 +00:00
The IAM role used to send to Lambda must allow the following permissions on
the function listed:
2021-04-19 18:58:44 +00:00
- `lambda:InvokeFunction`
2021-02-24 18:02:26 +00:00
2020-12-24 22:00:22 +00:00
##### PubSub
2019-07-16 22:41:50 +00:00
2021-09-07 18:55:55 +00:00
###### pubsub_project
2019-07-16 22:41:50 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `pubsub` .
The identifier of the Google Cloud project containing the pubsub topics to
publish logs to.
Note that the pubsub plugin uses [Application Default Credentials (ADCs) ](https://cloud.google.com/docs/authentication/production )
for authentication with the service.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_PUBSUB_PROJECT`
2019-07-16 22:41:50 +00:00
- Config file format:
```
pubsub:
project: my-gcp-project
```
2021-09-07 18:55:55 +00:00
###### pubsub_result_topic
2019-07-16 22:41:50 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `pubsub` .
The identifier of the pubsub topic that client results will be published to.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_PUBSUB_RESULT_TOPIC`
2019-07-16 22:41:50 +00:00
- Config file format:
```
pubsub:
result_topic: osquery_result
```
2021-09-07 18:55:55 +00:00
###### pubsub_status_topic
2019-07-16 22:41:50 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `pubsub` .
The identifier of the pubsub topic that osquery status logs will be published to.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_PUBSUB_STATUS_TOPIC`
2019-07-16 22:41:50 +00:00
- Config file format:
```
pubsub:
status_topic: osquery_status
```
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### pubsub_add_attributes
2021-05-08 19:29:52 +00:00
This flag only has effect if `osquery_status_log_plugin` is set to `pubsub` .
2021-05-21 15:41:13 +00:00
Add Pub/Sub attributes to messages. When enabled, the plugin parses the osquery result
2021-05-08 19:29:52 +00:00
messages, and adds the following Pub/Sub message attributes:
- `name` - the `name` attribute from the message body
- `timestamp` - the `unixTime` attribute from the message body, converted to rfc3339 format
- Each decoration from the message
This feature is useful when combined with [subscription filters ](https://cloud.google.com/pubsub/docs/filtering ).
- Default value: false
- Environment variable: `FLEET_PUBSUB_ADD_ATTRIBUTES`
- Config file format:
```
pubsub:
status_topic: osquery_status
```
2020-12-24 22:00:22 +00:00
##### S3 file carving backend
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### s3_bucket
2020-12-16 17:16:55 +00:00
Name of the S3 bucket to use to store file carves.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_S3_BUCKET`
2020-12-16 17:16:55 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
s3:
bucket: some-carve-bucket
```
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### s3_prefix
2020-12-16 17:16:55 +00:00
Prefix to prepend to carve objects.
All carve objects will also be prefixed by date and hour (UTC), making the resulting keys look like: `<prefix><year>/<month>/<day>/<hour>/<carve-name>` .
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_S3_PREFIX`
2020-12-16 17:16:55 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
s3:
prefix: carves-go-here/
```
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### s3_access_key_id
2020-12-16 17:16:55 +00:00
AWS access key ID to use for S3 authentication.
If `s3_access_key_id` and `s3_secret_access_key` are omitted, Fleet will try to use
[the default credential provider chain ](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials ).
The IAM identity used in this context must be allowed to perform the following actions on the bucket: `s3:PutObject` , `s3:GetObject` , `s3:ListMultipartUploadParts` , `s3:ListBucket` , `s3:GetBucketLocation` .
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_S3_ACCESS_KEY_ID`
2020-12-16 17:16:55 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
s3:
access_key_id: AKIAIOSFODNN7EXAMPLE
```
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### s3_secret_access_key
2020-12-16 17:16:55 +00:00
AWS secret access key to use for S3 authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_S3_SECRET_ACCESS_KEY`
2020-12-16 17:16:55 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
s3:
secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```
2020-12-16 17:16:55 +00:00
2021-09-07 18:55:55 +00:00
###### s3_sts_assume_role_arn
2020-12-16 17:16:55 +00:00
AWS STS role ARN to use for S3 authentication.
- Default value: none
2021-02-11 23:36:58 +00:00
- Environment variable: `FLEET_S3_STS_ASSUME_ROLE_ARN`
2020-12-16 17:16:55 +00:00
- Config file format:
2021-04-19 18:58:44 +00:00
```
s3:
sts_assume_role_arn: arn:aws:iam::1234567890:role/some-s3-role
```
2020-12-24 22:00:22 +00:00
2021-08-18 21:16:59 +00:00
##### Vulnerabilities
2021-09-07 18:55:55 +00:00
###### databases_path
2021-08-18 21:16:59 +00:00
The path specified needs to exist and fleet needs to be able to read and write to and from it. This is the only mandatory configuration needed for vulnerability processing to work.
2021-09-01 19:50:52 +00:00
When `current_instance_checks` is set to `auto` (the default), Fleet instances will try to create the `databases_path` if it doesn't exist.
2021-08-30 15:29:05 +00:00
2021-08-18 21:16:59 +00:00
- Default value: none
- Environment variable: `FLEET_VULNERABILITIES_DATABASES_PATH`
- Config file format:
```
vulnerabilities:
databases_path: /some/path
```
2021-09-07 18:55:55 +00:00
###### periodicity
2021-08-18 21:16:59 +00:00
How often vulnerabilities are checked.
- Default value: `1hr`
- Environment variable: `FLEET_VULNERABILITIES_PERIODICITY`
- Config file format:
```
vulnerabilities:
periodicity: 1hr
```
2021-09-07 18:55:55 +00:00
###### cpe_database_url
2021-08-18 21:16:59 +00:00
URL to fetch the CPE dictionary database from. Some users want to control where fleet gets its database from. When Fleet sees this value defined, it downloads the file directly. It expects a file in the same format as can be found in https://github.com/fleetdm/nvd/releases. If this value is not defined, Fleet checks for the latest release in Github and only downloads it if needed.
- Default value: `""`
- Environment variable: `FLEET_VULNERABILITIES_CPE_DATABASE_URL`
- Config file format:
```
vulnerabilities:
cpe_database_url: ""
```
2021-09-07 18:55:55 +00:00
###### cve_feed_prefix_url
2021-08-18 21:16:59 +00:00
Similarly to the CPE dictionary, we allow users to define where to get the CVE feeds from. In this case, the url should be a host that serves the files in the path /feeds/json/cve/1.1/. Fleet expects to find there all the JSON Feeds that can be found in https://nvd.nist.gov/vuln/data-feeds. When not defined, Fleet downloads from the nvd.nist.gov host.
- Default value: `""`
- Environment variable: `FLEET_VULNERABILITIES_CVE_FEED_PREFIX_URL`
- Config file format:
```
vulnerabilities:
cve_database_url: ""
```
2021-09-07 18:55:55 +00:00
###### current_instance_checks
2021-08-18 21:16:59 +00:00
When running multiple instances of the Fleet server, by default, one of them dynamically takes the lead in vulnerability processing. This lead can change over time. Some Fleet users want to be able to define which deployment is doing this checking. If you wish to do this, you'll need to deploy your Fleet instances with this set explicitly to no and one of them set to yes.
- Default value: `auto`
- Environment variable: `FLEET_VULNERABILITIES_CURRENT_INSTANCE_CHECKS`
- Config file format:
```
vulnerabilities:
current_instance_checks: yes
```
2020-12-24 22:00:22 +00:00
## Managing osquery configurations
2021-06-06 23:58:23 +00:00
We recommend that you use an infrastructure configuration management tool to manage these osquery configurations consistently across your environment. If you're unsure about what configuration management tools your organization uses, contact your company's system administrators. If you are evaluating new solutions for this problem, the founders of Fleet have successfully managed configurations in large production environments using [Chef ](https://www.chef.io/chef/ ) and [Puppet ](https://puppet.com/ ).
2020-12-24 22:00:22 +00:00
## Running with systemd
2021-06-06 23:58:23 +00:00
Once you've verified that you can run Fleet in your shell, you'll likely want to keep Fleet running in the background and after the server reboots. To do that we recommend using [systemd ](https://coreos.com/os/docs/latest/getting-started-with-systemd.html ).
2020-12-24 22:00:22 +00:00
Below is a sample unit file.
```
[Unit]
Description=Fleet
After=network.target
[Service]
LimitNOFILE=8192
ExecStart=/usr/local/bin/fleet serve \
--mysql_address=127.0.0.1:3306 \
2021-06-06 23:58:23 +00:00
--mysql_database=fleet \
2020-12-24 22:00:22 +00:00
--mysql_username=root \
--mysql_password=toor \
--redis_address=127.0.0.1:6379 \
--server_cert=/tmp/server.cert \
--server_key=/tmp/server.key \
--logging_json
[Install]
WantedBy=multi-user.target
```
Once you created the file, you need to move it to `/etc/systemd/system/fleet.service` and start the service.
```
sudo mv fleet.service /etc/systemd/system/fleet.service
sudo systemctl start fleet.service
sudo systemctl status fleet.service
sudo journalctl -u fleet.service -f
```
### Making changes
Sometimes you'll need to update the systemd unit file defining the service. To do that, first open /etc/systemd/system/fleet.service in a text editor, and make your modifications.
Then, run
```
sudo systemctl daemon-reload
sudo systemctl restart fleet.service
```
2021-04-19 18:58:44 +00:00
2020-12-24 22:00:22 +00:00
## Configuring Single Sign On
2021-07-15 19:55:12 +00:00
Fleet supports SAML single sign on capability.
Fleet supports both SP-initiated SAML login and IDP-initiated login, however IDP-initiated login must be enabled in the web interface's SAML Single Sign On Options.
Fleet supports the SAML Web Browser SSO Profile using the HTTP Redirect Binding.
2020-12-24 22:00:22 +00:00
### Identity Provider (IDP) Configuration
2021-07-15 19:55:12 +00:00
Setting up the connected application (Fleet) with an identity provider generally requires the following information:
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Assertion Consumer Service_ - This is the call back URL that the identity provider
will use to send security assertions to Fleet. In Okta, this field is called _Single sign on URL_ . The value that you supply will be a fully qualified URL
consisting of your Fleet web address and the callback path `/api/v1/fleet/sso/callback` . For example,
if your Fleet web address is https://fleet.acme.org, then the value you would
use in the identity provider configuration would be:
2020-12-24 22:00:22 +00:00
```
2021-02-10 20:13:11 +00:00
https://fleet.acme.org/api/v1/fleet/sso/callback
2020-12-24 22:00:22 +00:00
```
2021-07-15 19:55:12 +00:00
- _Entity ID_ - This value is a URI that you define. It identifies your Fleet instance as the service provider that issues authorization requests. The value must exactly match the Entity ID that you define in the Fleet SSO configuration.
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Name ID Format_ - The value should be `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` . This may be shortened in the IDP setup to something like `email` or `EmailAddress` .
2020-12-24 22:00:22 +00:00
2021-07-15 19:55:12 +00:00
- _Subject Type (Application username in Okta)_ - `email` .
2020-12-24 22:00:22 +00:00
2021-07-15 19:55:12 +00:00
After supplying the above information, the IDP will generate an issuer URI and a metadata URL that will be used to configure Fleet as a service provider.
2020-12-24 22:00:22 +00:00
#### Example Okta IDP Configuration
2021-06-15 23:16:16 +00:00
![Example Okta IDP Configuration ](https://raw.githubusercontent.com/fleetdm/fleet/main/docs/images/okta-idp-setup.png )
2020-12-24 22:00:22 +00:00
2021-09-01 19:50:52 +00:00
> The names of the items required to configure an Identity Provider may vary from provider to provider and may not conform to the SAML spec.
2021-07-15 19:55:12 +00:00
2021-09-01 19:50:52 +00:00
> Individual users must also be setup on the IDP before they can sign in to Fleet.
2020-12-24 22:00:22 +00:00
### Fleet SSO Configuration
2021-09-01 19:50:52 +00:00
A Fleet user must be assigned the Admin role to configure Fleet for SSO. In Fleet, SSO configuration settings are located in **Settings > Organization settings > SAML Single Sign On Options** .
2021-07-15 19:55:12 +00:00
2021-09-01 19:50:52 +00:00
If your IDP supports dynamic configuration, like Okta, you only need to provide an _Identity Provider Name_ and _Entity ID_ , then paste a link in the metadata URL field.
2021-07-15 19:55:12 +00:00
Otherwise, the following values are required:
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Identity Provider Name_ - A human friendly name of the IDP.
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Entity ID_ - A URI that identifies your Fleet instance as the issuer of authorization
requests. Assuming your company name is Acme, an example might be `fleet.acme.org` although
the value could be anything as long as it is unique to Fleet as a service provider
and matches the entity provider value used in the IDP configuration.
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Issuer URI_ - This value is obtained from the IDP.
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Metadata URL_ - This value is obtained from the IDP and is used by Fleet to
issue authorization requests to the IDP.
2020-12-24 22:00:22 +00:00
2021-04-19 18:58:44 +00:00
- _Metadata_ - If the IDP does not provide a metadata URL, the metadata must
be obtained from the IDP and entered. Note that the metadata URL is preferred if
the IDP provides metadata in both forms.
2020-12-24 22:00:22 +00:00
#### Example Fleet SSO Configuration
2021-06-15 23:16:16 +00:00
![Example SSO Configuration ](https://raw.githubusercontent.com/fleetdm/fleet/main/docs/images/sso-setup.png )
2020-12-24 22:00:22 +00:00
### Creating SSO users in Fleet
2021-07-15 19:55:12 +00:00
When an admin creates a new user to Fleet, they may select the `Enable Single Sign On` option. The
2021-09-01 19:50:52 +00:00
SSO enabled users will not be able to sign in with a regular user ID and password.
2021-07-15 19:55:12 +00:00
It is strongly recommended that at least one admin user is set up to use the traditional password
2020-12-24 22:00:22 +00:00
based log in so that there is a fallback method for logging into Fleet in the event of SSO
configuration problems.
2021-04-26 15:44:22 +00:00
## Feature flags
Fleet features are sometimes gated behind feature flags. This will usually be due to not-yet-stable APIs, or not-fully-tested performance characteristics.
Feature flags on the server are controlled by environment variables prefixed with `FLEET_BETA_` .
#### Software inventory
Enable by setting the environment variable `FLEET_BETA_SOFTWARE_INVENTORY=1` .
2021-05-27 21:18:41 +00:00
When enabled, Fleet will store a "software inventory" for hosts, updated along with the other host vitals. Note that it will take some time for the data to be available after setting this flag (it will be updated when the host details are next updated, configurable by [--osquery_detail_update_interval ](#osquery_detail_update_interval )).
2021-04-26 15:44:22 +00:00
This is currently feature flagged because we would like to evaluate the performance characteristics on larger deployments.
2021-05-27 21:18:41 +00:00
To read more about the software inventory feature, [check out the Fleet 3.11.0 release blog post ](https://medium.com/fleetdm/fleet-3-11-0-released-with-software-inventory-25d5a1efe19c ).