
# keenauth_role

`keenauth_role` 리소스는 환경의 역할과 전체 권한 집합을 관리합니다. 하나의 조직에 속한 역할은 다른 리소스인 `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` 클레임에 나타나고 변경할 수 없습니다. 새 키를 지정하면 역할이 교체됩니다.
- `name`은 1자 이상 128자 이하이고 `description`은 최대 1024자입니다. API가 값을 정리(trim)하므로 두 값 모두 공백으로 시작하거나 끝날 수 없습니다.
- `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 또는 대시보드를 통해 관리하십시오.

## 가져오기

키 또는 ID로 가져옵니다.

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