
# keenauth_environment_settings

`keenauth_environment_settings` 리소스는 환경 설정을 관리합니다. 언어, 시간대, 세션, 가입, 보안 알림, 계정 복구, MFA, Front-Channel Logout, 허용된 첫 번째 인증 요소가 여기에 포함됩니다. 공격 방어는 이 설정에 포함되지 않습니다.

## 환경당 객체 하나

설정은 환경마다 하나만 존재하며 항상 존재합니다. 프로바이더 구성마다 이 리소스는 최대 한 번만 선언하세요. 리소스를 만들 때는 현재 설정을 읽고, 구성에서 변경한 부분만 기록합니다. 삭제하면 상태에서만 제거되며, 환경의 설정은 그대로 유지됩니다.

## 작성한 항목만 관리됩니다

구성에서 생략한 속성이나 그룹은 현재 값을 유지합니다. 구성에서 속성을 제거하면 마지막 값이 유지됩니다. `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` | 두 번째 인증 요소로서의 이메일과 그 보증 수준, TOTP 발급자 레이블, 복구 코드와 그 개수. |
| `frontchannel_logout_enabled` | OpenID Connect Front-Channel Logout. |
| `allowed_first_factors` | 환경에서 허용된 첫 번째 인증 요소. 애플리케이션 및 조직 정책은 이 집합을 좁힐 수만 있습니다. |

## 안전한 변경

- 업데이트는 변경된 필드만 `If-Match`와 함께 JSON 병합 패치로 보냅니다. 계획을 세운 뒤 누군가 설정을 바꾸었다면 API는 `412`를 반환하고 아무것도 바뀌지 않습니다. `plan`을 다시 실행하세요.
- 대시보드에서 한 변경은 다음 `plan`에서 드리프트로 나타나며, 관리하는 속성에 대해 `apply`가 이를 되돌립니다.
- 정책을 강화하면(세션 단축, 세션 제한 하향, 가입이나 복구 강화, 첫 번째 인증 요소 제거) 새 세션과 로그인에 즉시 적용됩니다. 기존 세션은 수명이 끝날 때까지 유지됩니다.

## 가져오기

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