
# keenauth_environment_settings

`keenauth_environment_settings` リソースは、環境の設定を管理します。言語、タイムゾーン、セッション、サインアップ、セキュリティ通知、アカウント復旧、MFA、Front-Channel Logout、許可された最初の認証要素が対象です。攻撃対策はこの設定には含まれません。

## 環境ごとに 1 オブジェクト

設定は環境ごとに 1 つだけ存在し、常に存在します。プロバイダー構成ごとに、このリソースは最大 1 回だけ宣言してください。リソースを作成すると現在の設定を読み取り、構成で変更する部分だけを書き込みます。削除するとステートから取り除かれるだけで、環境の設定はそのまま残ります。

## 記述した項目だけが管理されます

構成から省略した属性やグループは、現在の値を保持します。構成から属性を削除した場合は、最後の値が保持されます。`allowed_first_factors` や `signup.email_domains` などのリストは集合として扱われるため、順序は問題になりません。

```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"]
  }
}
```

## グループ

| 属性 | 制御する内容 |
|---|---|
| `locales` | 有効な言語と既定の言語。既定の言語は有効になっている必要があります。 |
| `default_zoneinfo` | 既定の IANA タイムゾーン。 |
| `session` | 秒単位のアイドルおよび絶対タイムアウト、同時セッション数の上限と上限到達時の動作、異常検知時の動作。アイドルタイムアウトは絶対タイムアウトより大きくできません。 |
| `signup` | サインアップのモードと、メールドメインの許可リストまたは拒否リスト。ドメインは小文字で記述し、国際化名は A ラベル(`xn--…`)で記述します。 |
| `security_notifications` | マスタースイッチと、通知メールを送信するイベント。 |
| `account_recovery` | 復旧モード、待機時間(時間単位)、復旧が無効な場合に表示されるサポートリンク。 |
| `mfa` | 第 2 要素としてのメールとその保証レベル、TOTP の発行者ラベル、リカバリーコードとその数。 |
| `frontchannel_logout_enabled` | OpenID Connect の Front-Channel Logout。 |
| `allowed_first_factors` | 環境で許可された最初の認証要素。アプリケーションおよび組織のポリシーで絞り込めるのは、この集合の範囲内だけです。 |

## 安全な変更

- 更新では、変更されたフィールドだけを `If-Match` 付きの JSON merge patch として送信します。プランを作成した後に誰かが設定を変更していた場合、API は `412` を返し、何も変更されません。`plan` を再実行してください。
- ダッシュボードでの変更は次の `plan` でドリフトとして表示され、管理対象の属性については `apply` で元に戻ります。
- ポリシーを厳しくする変更(セッションの短縮、セッション上限の引き下げ、サインアップや復旧の厳格化、最初の認証要素の削除)は、新しいセッションとサインインに即座に適用されます。既存のセッションは有効期間の終わりまで続きます。

## インポート

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