--- title: Teleport Resources Reference description: The detailed reference documentation for Teleport Configuration Resources h1: Teleport Configuration Resources Reference --- ## Introduction A Teleport administrator has two tools to configure a Teleport cluster: - The [configuration file](./config.mdx) is used for static configuration settings such as the cluster name. - The [`tctl`](./cli.mdx#tctl) admin tool is used for configuring the Teleport Auth Service, and can be used to manage dynamic records like Teleport users. A Teleport administrator can configure a Teleport cluster by using the [`tctl`](./cli.mdx#tctl) admin tool to manage dynamic records like Teleport users. (!docs/pages/includes/tctl.mdx!) ### `tctl` concepts [`tctl`](./cli.mdx#tctl) has convenient sub-commands for dynamic configuration, such as `tctl users` or `tctl nodes`. For more advanced management tasks, like connecting clusters together or troubleshooting trust, [`tctl`](./cli.mdx#tctl) offers the more powerful, lower-level CLI interface called `resources`. The concept is borrowed from the REST programming pattern. A cluster is composed of different objects (i.e., resources) and there are three common operations that can be performed on them: `get` , `create` , and `remove` . A resource is defined as a [YAML](https://en.wikipedia.org/wiki/YAML) file. Every resource in Teleport has three required fields: - `kind`: The type of resource - `name`: A required field in the `metadata` to uniquely identify the resource - `version`: The version of the resource format Everything else is resource specific and any component of a Teleport cluster can be manipulated with just three CLI commands: | Command | Description | Examples | | - | - | - | | [`tctl get`](./cli.mdx#tctl-get) | Get one or multiple resources. | `tctl get users` or `tctl get user/joe` | | [`tctl rm`](./cli.mdx#tctl-rm) | Delete a resource by type/name. | `tctl rm user/joe` | | [`tctl create`](./cli.mdx#tctl-create) | Create a new resource from a YAML file. Use the `-f` flag to update existing resources. | `tctl create -f joe.yaml` | By default, Teleport uses [YAML format](https://en.wikipedia.org/wiki/YAML) to describe resources. YAML is a human-readable alternative to JSON or XML, but it's sensitive to white space. Pay attention to spaces versus tabs. ### `tctl` example Here's an example of a YAML resource definition for a user named `joe`. It can be retrieved by executing `tctl get user/joe`. ```yaml kind: user version: v2 metadata: name: joe spec: roles: admin status: # Users can be temporarily locked in a Teleport system, but this # functionality is reserved for internal use for now. is_locked: false lock_expires: 0001-01-01T00:00:00Z locked_time: 0001-01-01T00:00:00Z traits: # These are "allowed logins" which are usually specified as the # last argument to `tctl users add`. logins: - joe - root # Any resource in Teleport can automatically expire. expires: 0001-01-01T00:00:00Z # For internal use only created_by: time: 0001-01-01T00:00:00Z user: name: builtin-Admin ``` Some of the fields you will see when printing resources are used only internally and are not meant to be changed. Others are reserved for future use. ## Dynamic resources Here's the list of resources currently exposed via [`tctl`](./cli.mdx#tctl): | Resource Kind | Description | | - | - | | [user](#user) | A user record in the internal Teleport user DB. | | [role](#role) | A role assumed by interactive and non-interactive users. | | connector | Authentication connectors for [Single Sign-On](../access-controls/sso.mdx) (SSO) for SAML, OIDC and GitHub. | | node | A registered SSH node. The same record is displayed via `tctl nodes ls` | | cluster | A trusted cluster. See [here](../management/admin/trustedclusters.mdx) for more details on connecting clusters together. | | login_rule | A Login Rule, see the [Login Rules guide](../access-controls/login-rules.mdx) for more info. | | device | A Teleport Trusted Device, see the [Device Trust guide](../access-controls/guides/device-trust.mdx) for more info. | | [ui_config](#ui-config) | Configuration for the Web UI served by the Proxy Service | **Examples:** ```code # List all connectors: $ tctl get connectors # Dump a SAML connector called "okta": $ tctl get saml/okta # Delete a SAML connector called "okta": $ tctl rm saml/okta # Delete an OIDC connector called "gworkspace": $ tctl rm oidc/gworkspace # Delete a github connector called "myteam": $ tctl rm github/myteam # Delete a local user called "admin": $ tctl rm users/admin # Show all devices: $ tctl get devices # Fetch a specific device: $ tctl get devices/ ``` Although `tctl get connectors` will show you every connector, when working with an individual connector you must use the correct `kind`, such as `saml` or `oidc`. You can see each connector's `kind` at the top of its YAML output from `tctl get connectors`. ### User Teleport supports interactive local users, non-interactive local users (bots) and single-sign on users that are represented as a resource. ```yaml kind: user version: v2 metadata: name: joe spec: # roles is a list of roles assigned to this user roles: - admin # status sets user temporarily locked in a Teleport system, for example # when users exceed predefined amount of failed login attempts status: is_locked: false lock_expires: 0001-01-01T00:00:00Z locked_time: 0001-01-01T00:00:00Z # traits are key, list of values pairs assigned to a user resource. # Traits can be used in role templates as variables. traits: logins: - joe - root # expires, if not empty, sets automatic expiry of the resource expires: 0001-01-01T00:00:00Z # created_by is a system property that tracks # identity of the author of this user resource. created_by: time: 0001-01-01T00:00:00Z user: name: builtin-Admin ``` ### Role Interactive and non-interactive users (bots) assume one or many roles. Roles govern access to databases, SSH servers, Kubernetes clusters, web services and applications and Windows Desktops. (!docs/pages/includes/role-spec.mdx!) ### Login Rules Login rules contain logic to transform SSO user traits during login. (!docs/pages/includes/login-rule-spec.mdx!) ### Device Device contains information identifying a trusted device. (!docs/pages/includes/device-spec.mdx!) ### UI config Global configuration options for the Web UI served by the Proxy Service. This resource is not set by default, which means a `tctl get ui` will result in an error if used before this resource has been set. (!docs/pages/includes/ui-config-spec.mdx!)