
# keenauth_role

`keenauth_role` リソースは、環境のロールとその権限セット全体を管理します。1 つの組織に属するロールは別のリソース `keenauth_organization_role` です。`keenauth_role` データソースは、`id` または `key` でロールを読み取ります。

```terraform
resource "keenauth_permission" "invoices_read" {
  api_id = "api_01j9zq3v8c5m2x7k4t6r1n0b3d"
  value  = "invoices:read"
}

resource "keenauth_role" "billing" {
  key         = "billing"
  name        = "Billing"
  description = "Invoices and payment methods."

  permission_ids = [keenauth_permission.invoices_read.id]
}

data "keenauth_role" "billing" {
  key = "billing"
}
```

## ライフサイクル

- `key` は環境内で一意であり、`org_roles` クレームに表示され、変更できません。新しい key を指定すると、ロールは置き換えられます。
- `name` は 1〜128 文字、`description` は最大 1024 文字です。API が前後の空白を削除するため、どちらも空白で始めたり終えたりすることはできません。
- `permission_ids` は完全なセットです（最大 500 件）。ロールのフィールドの後に、別のリクエストで書き込まれます。作成時にこのリクエストが失敗した場合、ロールは tainted としてステートに残り、次回の apply で置き換えられます。ほかの場所で追加または削除された権限は、次回の apply で元に戻されます。
- `is_privileged` は特権ロールであることを示します。セルフサービスでは、組織の管理者ロールを持つ管理者のみがこれを割り当てられます。特権ロールにマッピングされる外部グループには `roles:write` と承認が必要です。既存のロールを特権ロールにすると、承認されるまでそのグループマッピングは未承認のままになります。既定値は `false` です。特権ロールをインポートする場合は `is_privileged = true` を明示的に記述してください。記述しないと、次回の apply でロールは非特権になります。
- 更新と削除では、最後に読み取った ETag を含む `If-Match` が送信されます。プランの作成後にロールが変更されていると、API は `412` を返し、何も変更されません。`plan` を再実行してください。
- `force_destroy = true` の場合、割り当てられているロールも削除され、その割り当ては同じリクエストで削除されます。指定しない場合、割り当てられているロールの削除は `409 role_in_use` で失敗します。組織の管理者ロールまたは既定のメンバーロールとして使われているロールは、まったく削除できません。`force_destroy` のみを変更してもリクエストは送信されません。
- ユーザーへのロールの割り当てとメンバーシップは、リソースではありません。これらは個人データであり、ステートに保存されることはありません。API、CLI、またはダッシュボードで管理してください。

## インポート

key または ID でインポートします。

```shell
tofu import keenauth_role.billing billing
tofu import keenauth_role.billing rol_01j9zq3v8c5m2x7k4t6r1n0b3d
```
