Files
teleport/docs/pages/machine-id/reference/configuration.mdx
T
rsyracuse 6324bc58ad [Docs] Machine ID Host Certificate Support (#16989)
* [Docs] Machine ID Host Certificate Support

* general tech edits

* broken link fix

* typos/principal clarifications

* typo/spacing fix

* strideynet improvement

* ptgott fixes

* closing tab fix

* some additional copy fixes

* role fix

* heading fix

* clarify hosts involved

* scope fixes/spelling

* final-steps

* afornuto copy edits

* tech fixes, principal/openssh
2022-10-31 14:38:51 -04:00

162 lines
5.7 KiB
Plaintext

---
title: Machine ID Configuration Reference
description: Configuration reference for Teleport Machine ID.
---
The following snippet shows full YAML configuration of the Machine ID client
`tbot`. Assuming the file is written to `tbot.yaml`, it can be used with
`tbot -c /etc/tbot.yaml`.
```yaml
# Debug enables verbose logging to stderr.
debug: true
# Address of the Teleport Auth Server (on-prem installs) or Teleport Cloud tenant.
auth_server: "auth.example.com:3025" # or "example.teleport.sh:443" for Teleport Cloud
# TTL of short-lived machine certificates.
certificate_ttl: "5m"
# Interval at which short-lived certificates are renewed; must be less than
# the certificate TTL.
renewal_interval: "1m"
# If set, quit after the first renewal.
oneshot: true
# Onboarding values are only used on first connect.
onboarding:
# Cluster join method. Can be "token" or "iam".
join_method: "token"
# Token used to join the cluster. (only required for join_method: token)
#
# This can also be an absolute path to a file containing the token.
# The token can live in a temporary file that's deleted after tbot is first launched,
# but if tbot has to re-authenticate with the Auth Service, it will fail.
#
# File path example:
# token: /var/lib/teleport/tokenjoin
token: "00000000000000000000000000000000"
# CA Path used to validate the identity of the Teleport Auth Server on first connect.
ca_path: "/path/to/ca.pem"
# CA Pins used to validate the identity of the Teleport Auth Server on first connect.
ca_pins:
- "(=presets.ca_pin=)"
- "(=presets.ca_pin=)"
# Storage defines where Machine ID internal data is stored.
storage:
# Directory to store internal bot data. Access to this directory should be
# limited.
directory: /var/lib/teleport/bot
# Alternatively, internal data can be stored in memory. "directory" and
# "memory" are mutually exclusive. Note that the bot will not be able to
# restart without a new token if data is only stored in memory.
memory: true
# Destinations specifies where short-lived certificates are stored.
destinations:
# Directory specifies a filesystem directory where short-lived certificates
# are stored.
- directory:
# Configure the path at which to store certificates and other
# artifacts.
path: /opt/machine-id
# Configure symlink attack prevention. Requires Linux 5.6+.
# Possible values:
# * try-secure (default): Attempt to securely read and write certificates
# without symlinks, but fall back (with a warning) to insecure read
# and write if the host doesn't support this.
# * secure: Attempt to securely read and write certificates, with a hard error
# if unsupported.
# * insecure: Quietly allow symlinks in paths.
symlinks: try-secure
# Configure ACL use. Requires Linux with a file system that supports ACLs.
# Possible values:
# * try (default on Linux): Attempt to use ACLs, warn at runtime if ACLs
# are configured but invalid.
# * off (default on non-Linux): Do not attempt to use ACLs.
# * required: Always use ACLs, produce a hard error at runtime if ACLs
# are invalid.
acls: try
# One or more roles to request for this destination directory from among
# the roles granted by `tctl bots add --roles=...`
# By default, all roles specified during `tctl bots add ...` are
# included. A subset of these may be specified here to write short-lived
# certificates with different roles to different directories.
roles: [a, b, c]
# An optional database request. The database must exist, and no other
# special certificate requests may be present for this destination, such
# as apps or Kubernetes clusters.
database:
# The name of the database server as it exists in Teleport.
service: example-server
# The database user to connect as.
username: alice
# The database on the database server to use.
database: example
# A list of configuration templates to generate and write to this
# destination.
configs:
# Requests an SSH host certificate. Requires a role granting the `create` verb on `host_cert` resources.
- ssh_host_cert:
principals: [my.machineid.domain.com]
# ssh_client generates known_hosts and an ssh_config that can be
# included.
- ssh_client
# The `mongo` template outputs specially-formatted certificates for
# MongoDB.
- mongo
# The `cockroach` template generates specially-named certificates
# for use with CockroachDB.
- cockroach
# The `tls` template generates tls.key, tls.crt, and tls.cas for apps
# with file naming requirements. The always-present `tlscert` is
# usually sufficient for most apps.
- tls
```
If no configuration file is provided, a simple configuration is used based
entirely on provided CLI flags. Given the following sample CLI from
`tctl bots add ...`:
```code
$ tbot start \
--destination-dir=./tbot-user \
--token=00000000000000000000000000000000 \
--ca-pin=(=presets.ca_pin=) \
--auth-server=auth.example.com:3025
```
... it uses a configuration equivalent to the following:
```yaml
auth_server: auth.example.com:3025
onboarding:
join_method: "token"
token: "(=presets.tokens.first=)"
ca_pins:
- "(=presets.ca_pin=)"
storage:
directory: /var/lib/teleport/bot
destinations:
- directory:
path: ./tbot-user
```