
# keenauth_role

Die Ressource `keenauth_role` verwaltet eine Rolle der Umgebung und deren vollständige Berechtigungsmenge. Eine Rolle, die zu einer Organisation gehört, ist eine andere Ressource, `keenauth_organization_role`. Die Data Source `keenauth_role` liest eine Rolle anhand von `id` oder `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"
}
```

## Lebenszyklus

- `key` ist in der Umgebung eindeutig, erscheint im `org_roles`-Claim und kann nicht geändert werden: ein neuer Schlüssel ersetzt die Rolle.
- `name` hat 1 bis 128 Zeichen und `description` höchstens 1024. Beide dürfen weder mit noch auf Leerzeichen beginnen oder enden, da die API sie kürzt.
- `permission_ids` ist die vollständige Menge (höchstens 500). Sie wird mit einer separaten Anfrage nach den Rollenfeldern geschrieben; schlägt diese Anfrage beim Anlegen fehl, bleibt die Rolle als tainted im State und wird beim nächsten Apply ersetzt. Eine Berechtigung, die an anderer Stelle hinzugefügt oder entfernt wird, setzt das nächste Apply zurück.
- `is_privileged` markiert eine privilegierte Rolle. Im Self-Service kann nur ein Administrator sie zuweisen, der die Rolle der Organisations-Administration innehat; eine externe Gruppenzuordnung zu ihr benötigt `roles:write` und eine Genehmigung. Wird eine bestehende Rolle privilegiert, bleiben ihre Gruppenzuordnungen bis zu ihrer Genehmigung unbestätigt. Der Standardwert ist `false`; wenn Sie eine privilegierte Rolle importieren, schreiben Sie `is_privileged = true` explizit, sonst macht das nächste Apply die Rolle nicht privilegiert.
- Aktualisierungen und Löschungen senden `If-Match` mit dem zuletzt gelesenen ETag. Hat sich die Rolle geändert, nachdem der Plan erstellt wurde, antwortet die API mit `412` und nichts ändert sich; führen Sie `plan` erneut aus.
- Mit `force_destroy = true` wird eine zugewiesene Rolle ebenfalls gelöscht und ihre Zuweisungen werden in derselben Anfrage entfernt; andernfalls schlägt das Löschen einer zugewiesenen Rolle mit `409 role_in_use` fehl. Eine Rolle, die als Admin- oder Standard-Mitgliederrolle einer Organisation verwendet wird, kann gar nicht gelöscht werden. Eine Änderung nur von `force_destroy` sendet keine Anfrage.
- Zuweisungen von Rollen an Benutzer und Mitgliedschaften sind keine Ressourcen. Sie sind personenbezogene Daten und gelangen nie in den State; verwalten Sie sie über die API, die CLI oder das Dashboard.

## Import

Importieren Sie nach Schlüssel oder ID:

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