
# 조직 세션 및 MFA 정책

`keenauth_session_policy`와 `keenauth_mfa_policy` 리소스는 조직 고유의 세션 수명과 다단계 인증 규칙을 설정합니다. 조직 정책은 환경 설정(`keenauth_environment_settings`)보다 엄격하게만 설정할 수 있습니다. 더 느슨한 값은 `422 policy_weaker_than_parent`로 실패합니다.

```terraform
resource "keenauth_session_policy" "acme" {
  organization_id   = keenauth_organization.acme.id
  idle_minutes      = 60
  absolute_minutes  = 720
  refresh_idle_days = 7
}

resource "keenauth_mfa_policy" "acme" {
  organization_id       = keenauth_organization.acme.id
  required_for          = "admins"
  allowed_factors       = ["webauthn", "totp"]
  enrollment_grace_days = 7
}
```

## 세션 정책

| 속성 | 범위 | 설명 |
|---|---|---|
| `idle_minutes` | 5–144000 | 세션 유휴 시간 제한. `absolute_minutes` 이하여야 합니다. |
| `absolute_minutes` | 60–525600 | 세션의 절대 수명. |
| `refresh_idle_days` | 1–365 | 새로 고침 토큰의 유휴 수명. `refresh_absolute_days` 이하여야 합니다. |
| `refresh_absolute_days` | 1–365 | 새로 고침 토큰의 절대 수명. |

- 속성을 하나 이상 설정하세요. 생략한 속성은 환경에서 상속됩니다.
- 수명을 줄이면 기존 세션의 조직 컨텍스트가 종료됩니다.
- 세션 정책에는 Enterprise 플랜이 필요합니다(`403 plan_feature_unavailable`). 개발 환경에서는 사용할 수 있습니다.

## MFA 정책

| 속성 | 값 | 설명 |
|---|---|---|
| `required_for` | `none`, `admins`, `all` | 두 번째 인증 요소를 사용해야 하는 대상. `admins`는 조직 관리자 역할과 `idp_` 시스템 권한을 가진 구성원을 포함합니다. |
| `allowed_factors` | `totp`, `webauthn`, `sms`, `email` | 구성원이 사용할 수 있는 두 번째 인증 요소. 하나 이상이어야 하며, 각각 환경에서 활성화되어 있어야 합니다. |
| `enrollment_grace_days` | 0–30 | 필수 요소를 등록하기 전에 구성원이 로그인할 수 있는 일수. 기본값은 `0`입니다. |

## 수명 주기

- 조직은 종류별로 정책을 하나씩 가집니다. 리소스 ID는 조직 ID입니다.
- 모든 쓰기 작업은 전체 정책을 보냅니다. 생성은 기존 정책을 덮어쓰지 않습니다. 조직에 이미 정책이 있으면(대시보드 또는 관리자 포털에서 설정된 경우) API가 `428`로 응답하며, 대신 가져와야 합니다.
- 수정과 삭제는 `If-Match`를 보냅니다. 프로바이더 밖에서 변경된 정책은 다음 `plan`에서 드리프트로 표시되며, 프로바이더 밖에서 삭제된 정책은 다시 생성됩니다.
- 리소스를 제거하면 정책이 삭제되고, 조직은 다시 환경 설정을 상속합니다.

## 가져오기

조직 ID로 가져오세요:

```shell
tofu import keenauth_session_policy.acme org_01j9zq3v8c5m2x7k4t6r1n0b3d
tofu import keenauth_mfa_policy.acme org_01j9zq3v8c5m2x7k4t6r1n0b3d
```
