
# keenauth_role

La ressource `keenauth_role` gère un rôle de l'environnement et l'ensemble complet de ses autorisations. Un rôle qui appartient à une seule organisation est une ressource différente, `keenauth_organization_role`. La source de données `keenauth_role` lit un rôle par `id` ou `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"
}
```

## Cycle de vie

- `key` est unique dans l'environnement, apparaît dans la revendication `org_roles` et ne peut pas être modifiée : une nouvelle clé remplace le rôle.
- `name` comporte de 1 à 128 caractères et `description` au plus 1024. Ni l'un ni l'autre ne peut commencer ou se terminer par un espace, car l'API les tronque.
- `permission_ids` est l'ensemble complet (500 au maximum). Il est écrit par une requête distincte après les champs du rôle ; si cette requête échoue à la création, le rôle reste dans l'état marqué comme altéré (tainted) et est remplacé lors de l'application suivante. Une autorisation ajoutée ou retirée ailleurs est rétablie par l'application suivante.
- `is_privileged` marque un rôle privilégié. En libre-service, seul un administrateur détenant le rôle d'administrateur de l'organisation peut l'attribuer, et un mappage de groupe externe vers ce rôle nécessite `roles:write` et une approbation. Rendre privilégié un rôle existant laisse ses mappages de groupes non approuvés tant qu'ils ne sont pas approuvés. La valeur par défaut est `false` ; lorsque vous importez un rôle privilégié, écrivez explicitement `is_privileged = true`, sinon l'application suivante rendra le rôle non privilégié.
- Les mises à jour et les suppressions envoient `If-Match` avec le dernier ETag lu. Si le rôle a changé après la création du plan, l'API répond `412` et rien ne change ; relancez `plan`.
- Avec `force_destroy = true`, un rôle attribué est lui aussi supprimé et ses attributions sont retirées dans la même requête ; sinon, la suppression d'un rôle attribué échoue avec `409 role_in_use`. Un rôle utilisé comme rôle d'administrateur ou de membre par défaut d'une organisation ne peut pas être supprimé du tout. Modifier uniquement `force_destroy` n'envoie aucune requête.
- Les attributions de rôles aux utilisateurs et les appartenances ne sont pas des ressources. Ce sont des données personnelles et elles ne sont jamais enregistrées dans l'état ; gérez-les avec l'API, la CLI ou le tableau de bord.

## Importation

Importez par clé ou par identifiant :

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