Configuration file reference

Every configuration file isg reads, and every key it accepts in one.

Keys are listed as dotted paths in Go struct-declaration order, not alphabetically: that is the order the shipped *.example.yaml files follow, so the two read side by side. A [] segment marks a list — rules[].pattern is the pattern key of each element of rules.

Files live under the config root — $ISG_HOME, or /var/lib/isg in the system-unit layout. Every one of them is optional; each loader defines what its file's absence means, and a config root with no files at all is a valid first-run state.

A top-level key not listed here REFUSES isg serve's start, with no escape switch (BACKLOG B192). Nested keys are NOT checked — see internal/configkeys' package doc for why that limit is where it is, and do not read a clean start as evidence that a nested key is spelled right.

Where a file has more than one consumer, the keys below are the UNION of what those structs declare, because that is what the gate enforces. Each file ships an example at the repository root; that one-to-one correspondence is not a convention but a tested invariant, in both directions (cmd/isg/config_keys_test.go's TestConfigKeyRegistryCoversEveryExampleFile), so the links below cannot go stale without a red test.

agent.yaml

Consumers: agent.Config
Example: agent.example.yaml

Key Type
ca_renew_url string
ca_cert string
host string
renewable_cert string
renewable_key string
access_cert string
access_key string
renew_interval agent.Duration

apps.yaml

Consumers: appproxy.Config
Example: apps.example.yaml

Key Type
listen string
tls_cert_file string
tls_key_file string
webui_url string
assertion_key_file string
assertion_issuer string
assertion_ttl_seconds int
idle_timeout_seconds int
max_duration_seconds int
reserved_usernames []string
credential_kv_prefix string
apps[] []appproxy.App
apps[].id string
apps[].name string
apps[].display_name string
apps[].host string
apps[].upstream string
apps[].upstream_ca_file string
apps[].identity string
apps[].audience string
apps[].assertion_header string
apps[].allow_groups []string
apps[].role_map[] []appproxy.RoleMap
apps[].role_map[].group string
apps[].role_map[].role string
apps[].default_role string
apps[].reserved_usernames []string
apps[].logout_paths []string
apps[].record_query bool
apps[].record_body bool
apps[].record_body_max_bytes int
apps[].record_body_mask_fields []string
apps[].credentials[] []appproxy.Credential
apps[].credentials[].name string
apps[].credentials[].groups []string
apps[].credentials[].kind string
apps[].credentials[].header string
apps[].credentials[].form *appproxy.FormLogin
apps[].credentials[].form.steps[] []appproxy.FormStep
apps[].credentials[].form.steps[].method string
apps[].credentials[].form.steps[].path string
apps[].credentials[].form.steps[].encoding string
apps[].credentials[].form.steps[].fields appproxy.FormFields
apps[].credentials[].form.steps[].extract[] []appproxy.FormExtract
apps[].credentials[].form.steps[].extract[].name string
apps[].credentials[].form.steps[].extract[].from string
apps[].credentials[].form.steps[].extract[].regex string
apps[].credentials[].form.success appproxy.FormSuccess
apps[].credentials[].form.success.status []int
apps[].credentials[].form.success.cookie string
apps[].credentials[].form.success.redirect_prefix string
apps[].credentials[].form.logged_out appproxy.FormLoggedOut
apps[].credentials[].form.logged_out.status []int
apps[].credentials[].form.logged_out.redirect_prefix string
apps[].credentials[].form.logged_out.unless_body_contains []string
apps[].credentials[].form.browser_cookies []string
apps[].require_approval bool
apps[].approval_timeout_seconds int
apps[].approval_max_grant_seconds int
apps[].approval_single_use bool
apps[].approval_mode string
apps[].approval_reason_min_len *int
apps[].approval_reason_pattern string
apps[].level int
apps[].mode string
apps[].rdp_cert_fingerprints []string
apps[].rdp_ignore_cert bool
apps[].viewer_grace_seconds int
dynamic_apps_domain string

audit.yaml

Consumers: auditcfg.Config
Example: audit.example.yaml

Key Type
strict auditcfg.StrictConfig
strict.cert_issued bool
strict.break_glass_approval_bypassed bool
syslog auditcfg.SyslogConfig
syslog.enabled bool
syslog.address string
syslog.tls_ca_file string
syslog.timeout_seconds int
syslog.facility string
syslog.app_name string
syslog.queue_size int

breakglass.yaml

Consumers: main.breakglassFileConfig
Example: breakglass.example.yaml

Key Type
breakglass_log_target string
breakglass_log_protocol string
breakglass_ca_fingerprint string
breakglass_drill_max_age_days *int

broker.yaml

Consumers: brokercfg.Config
Example: broker.example.yaml

Key Type
id string
public_name string
ssh_port int

ca.yaml

Consumers: ca.IssuancePolicy, ca.signerModeYAML
Example: ca.example.yaml

Key Type
service_accounts[] []ca.ServiceAccountSpec
service_accounts[].account string
service_accounts[].principal string
service_accounts[].hosts []string
service_accounts[].ttl_seconds int
renewable_ttl_days int
host_cert_ttl string
human_access *ca.HumanAccessConfig
human_access.enforce bool
human_access.requested_by_enforce bool
human_access.require_broker bool
human_access.require_broker_host_labels map[string]string
human_access.allow[] []ca.HumanAccessRule
human_access.allow[].principals []string
human_access.allow[].requested_by []string
human_access.allow[].require_group string
human_access.allow[].host_labels map[string]string
human_access.allow[].hosts []string
issue_requester_authz *ca.IssueRequesterAuthzConfig
issue_requester_authz.enforce bool
signer string

cmdb.yaml

Consumers: inventory.CMDBConfig
Example: cmdb.example.yaml

Key Type
resolver string
mock_file string
label_rules[] []inventory.LabelRule
label_rules[].label string
label_rules[].value string
label_rules[].level int
default_level int
cache_ttl int
on_unavailable string
miss_level *int

connect.yaml

Consumers: connectcfg.Config
Example: connect.example.yaml

Key Type
allow_password_auth bool
host_key_check string
human_auth string
target_domain string

diag.yaml

Consumers: diagcfg.Config
Example: diag.example.yaml

Key Type
enabled bool
listen string
auth_token string
per_host_labels bool
scrape_staleness_warn string

hostgroup.yaml

Consumers: hostgroupcfg.Config
Example: hostgroup.example.yaml

Key Type
label_required_groups map[string][]string
enforce bool

jira.yaml

Consumers: ticket.Config
Example: jira.example.yaml

Key Type
provider string
endpoint string
project_key string
auth_email string
auth_token string
outbox_path string
ticket_min_level *int
timeout_seconds int
webui_base_url string
browse_base_url string
disabled bool
auth_token_expires_at string

ldap.yaml

Consumers: main.ldapFileConfig
Example: ldap.example.yaml

Key Type
url string
start_tls bool
tls_ca_file string
allow_plaintext bool
bind_dn string
bind_password string
base_dn string
group_base_dn string
user_attr string
role_attr string
display_name_attr string
timeout_seconds int
approver_group string
approver_group_required bool
mfa_reset_group string
mfa_reset_group_required bool
ca_admin_group string
ca_admin_group_required bool
session_admin_group string
session_admin_group_required bool
auditor_group string
breakglass_group string
breakglass_group_required bool
service_account_marker_attr string
service_account_marker_value string
service_account_gate_group string

license.yaml

Consumers: license.File
Example: license.example.yaml

Key Type
key_id string
payload string
signature string

mfa.yaml

Consumers: mfacfg.Config
Example: mfa.example.yaml

Key Type
pre_auth_ttl_seconds int
user_max_attempts int
user_lockout_seconds int
ip_max_attempts int
ip_lockout_seconds int
mfa_mode string
gateway_session_step_up bool
store string
lockout_mode string

notify.yaml

Consumers: notify.Config
Example: notify.example.yaml

Key Type
webhook *notify.WebhookConfig
webhook.url string
outbox *notify.OutboxConfig
outbox.path string
lock_mail notify.LockMailConfig
lock_mail.enabled bool
lock_mail.mail_locked_user bool

policy.yaml

Consumers: policy.Config
Example: policy.example.yaml

Key Type
version string
rules[] []policy.RuleSpec
rules[].name string
rules[].pattern string
rules[].category string
rules[].action string
rules[].reason string
rules[].timeout_seconds int
rules[].min_level int
rules[].roles []string
require_recording bool
idle_timeout_seconds int
max_duration_seconds int
sudo_allowed_commands []string
dynamic_construct_action string
http_rules[] []policy.HTTPRuleSpec
http_rules[].name string
http_rules[].action string
http_rules[].apps []string
http_rules[].methods []string
http_rules[].path string
http_rules[].roles []string
http_rules[].when *policy.HTTPWhenSpec
http_rules[].when.days []string
http_rules[].when.time string
http_rules[].when.dates string
http_rules[].when.source []string
http_rules[].reason string
http_rules[].valid_for string
http_app_modes[] []policy.HTTPAppModeSpec
http_app_modes[].apps []string
http_app_modes[].mode string
rdp_channels[] []policy.RDPChannelRuleSpec
rdp_channels[].name string
rdp_channels[].apps []string
rdp_channels[].roles []string
rdp_channels[].allow []string
timezone string

rbi-agent.yaml

Consumers: rbiagent.Config
Example: rbi-agent.example.yaml

Key Type
brokers []string
server_name string
ca_cert string
identity_cert string
identity_key string
sessions_dir string
recordings_dir string
image string
memory string
pids_limit int
max_sessions int
podman string

rbi.yaml

Consumers: rbi.Config
Example: rbi.example.yaml

Key Type
agents[] []rbi.AgentConfig
agents[].name string
agents[].guacd string
guacd_ca_file string
app_ca_file string
session_start_timeout_seconds int
poll_wait_seconds int
agent_stale_seconds int
viewer_grace_seconds int
recording_max_mb int

retention.yaml

Consumers: retention.Config
Example: retention.example.yaml

Key Type
session_records retention.Rule
session_records.minimum_retention string
session_records.retention_period string
approval_records retention.Rule
approval_records.minimum_retention string
approval_records.retention_period string
recordings retention.Rule
recordings.minimum_retention string
recordings.retention_period string
transcripts retention.Rule
transcripts.minimum_retention string
transcripts.retention_period string
sweep retention.SweepConfig
sweep.enabled bool
sweep.interval string

servers.yaml

Consumers: inventory.Config
Example: servers.example.yaml

Key Type
default_level int
servers map[string]int

smtp.yaml

Consumers: auth.SMTPConfig
Example: smtp.example.yaml

Key Type
host string
port int
from string
username string
password string
tls bool
timeout_seconds int

sso.yaml

Consumers: ssocfg.Config
Example: sso.example.yaml

Key Type
enabled bool
issuer string
client_id string
client_secret_file string
redirect_url string
scopes []string
username_claim string
mfa string
idp_mfa_amr []string
idp_mfa_acr string
web string
cli string
device_max_rounds int
rp_logout string
protocol string
saml_idp_metadata_url string
saml_idp_metadata_file string
saml_sp_entity_id string
saml_acs_url string
saml_username_attribute string
saml_use_name_id bool
saml_idp_mfa_authn_context []string
saml_clock_skew_seconds int

storage.yaml

Consumers: streamstore.Config, recordstore.Config
Example: storage.example.yaml

Key Type
recordings streamstore.RecordingsConfig
recordings.backend string
recordings.dir streamstore.DirConfig
recordings.dir.path string
recordings.s3 streamstore.S3Config
recordings.s3.endpoint string
recordings.s3.bucket string
recordings.s3.prefix string
recordings.s3.region string
recordings.s3.path_style bool
recordings.s3.credentials_file string
records recordstore.RecordsConfig
records.backend string
records.postgres recordstore.PostgresConfig
records.postgres.dsn_file string
records.postgres.dsn_ro_file string

tls.yaml

Consumers: tlscfg.Config
Example: tls.example.yaml

Key Type
webui tlscfg.WebUIConfig
webui.cert_file string
webui.key_file string

vault.yaml

Consumers: vaultsigner.Config, vaultkv.Config
Example: vault.example.yaml

Key Type
address string
token_file string
ssh_mount string
roles vaultsigner.Roles
roles.access string
roles.human string
roles.host string
timeout_seconds int
tls_ca_file string
kv_mount string
kv_path_prefix string