
# keenauth_environment_settings

La risorsa `keenauth_environment_settings` gestisce le impostazioni dell'ambiente: lingue, fuso orario, sessioni, registrazione, notifiche di sicurezza, recupero dell'account, MFA, Front-Channel Logout e i primi fattori consentiti. La protezione dagli attacchi non fa parte di queste impostazioni.

## Un oggetto per ambiente

Le impostazioni esistono una sola volta per ambiente e sono sempre presenti. Dichiara la risorsa al massimo una volta per configurazione del provider. Creare la risorsa legge le impostazioni attuali e scrive solo ciò che la tua configurazione modifica. Distruggerla la rimuove solo dallo stato; l'ambiente conserva le sue impostazioni.

## Viene gestito solo ciò che scrivi

Un attributo o un gruppo che ometti mantiene il valore attuale. Rimuovere un attributo dalla configurazione mantiene il suo ultimo valore. Elenchi come `allowed_first_factors` e `signup.email_domains` sono insiemi, quindi il loro ordine non conta.

```terraform
resource "keenauth_environment_settings" "this" {
  default_zoneinfo      = "Europe/Istanbul"
  allowed_first_factors = ["passkey", "password", "social"]

  locales = {
    enabled = ["en", "tr"]
    default = "en"
  }

  session = {
    idle_timeout_s     = 86400
    absolute_timeout_s = 1209600
  }

  signup = {
    mode              = "open"
    email_domain_mode = "denylist"
    email_domains     = ["mailinator.com"]
  }
}
```

## Gruppi

| Attributo | Cosa controlla |
|---|---|
| `locales` | Lingue abilitate e lingua predefinita. La lingua predefinita deve essere abilitata. |
| `default_zoneinfo` | Fuso orario IANA predefinito. |
| `session` | Timeout di inattività e assoluto in secondi, limite di sessioni contemporanee e cosa succede al limite, azione in caso di anomalia. Il timeout di inattività non può superare quello assoluto. |
| `signup` | Modalità di registrazione e la lista di domini e-mail consentiti o bloccati. Scrivi i domini in minuscolo; i nomi internazionalizzati come A-label (`xn--…`). |
| `security_notifications` | Interruttore generale e gli eventi che inviano un'e-mail di notifica. |
| `account_recovery` | Modalità di recupero, periodo di attesa in ore e il link di supporto mostrato quando il recupero è disabilitato. |
| `mfa` | L'e-mail come secondo fattore e il suo livello di garanzia, l'etichetta dell'emittente TOTP, i codici di recupero e il loro numero. |
| `frontchannel_logout_enabled` | OpenID Connect Front-Channel Logout. |
| `allowed_first_factors` | Primi fattori consentiti nell'ambiente. Le policy di applicazioni e organizzazioni possono solo restringere questo insieme. |

## Modifiche sicure

- Un aggiornamento invia solo i campi modificati come JSON merge patch con `If-Match`. Se qualcuno ha modificato le impostazioni dopo la creazione del piano, l'API risponde `412` e nulla cambia. Esegui di nuovo `plan`.
- Una modifica fatta nella dashboard compare al `plan` successivo come deriva (drift), e `apply` la ripristina per gli attributi che gestisci.
- Rendere più restrittiva una policy (sessioni più brevi, un limite di sessioni più basso, registrazione o recupero più severi, rimozione di un primo fattore) si applica subito alle nuove sessioni e ai nuovi accessi. Le sessioni esistenti durano fino alla fine della loro validità.

## Importazione

```shell
tofu import keenauth_environment_settings.this environment-settings
```
