
# 組織のセッションと 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 | リフレッシュトークンの絶対的な有効期間。 |

- 少なくとも 1 つの属性を設定してください。省略した属性は環境から継承されます。
- 有効期間を短くすると、既存セッションの組織コンテキストが終了します。
- セッションポリシーには Enterprise プランが必要です（`403 plan_feature_unavailable`）。開発環境では利用できます。

## MFA ポリシー

| 属性 | 値 | 説明 |
|---|---|---|
| `required_for` | `none`, `admins`, `all` | 第 2 要素の使用が必須となる対象。`admins` は組織の管理者ロールと、`idp_` システム権限を持つメンバーを含みます。 |
| `allowed_factors` | `totp`, `webauthn`, `sms`, `email` | メンバーが使用できる第 2 要素。少なくとも 1 つが必要で、それぞれ環境で有効になっている必要があります。 |
| `enrollment_grace_days` | 0–30 | 必須の要素を登録する前に、メンバーがサインインできる日数。既定値は `0` です。 |

## ライフサイクル

- 組織は種類ごとに 1 つのポリシーを持ちます。リソース 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
```
