keenauth_directory
La ressource keenauth_directory crée un répertoire SCIM 2.0 pour une organisation. Un répertoire est le point de terminaison auquel le fournisseur d'identité de l'organisation (Okta, Entra ID et d'autres) provisionne les utilisateurs et les groupes.
resource "keenauth_directory" "acme_okta" {
organization_id = keenauth_organization.acme.id
name = "Okta"
scim_host = "acme.eu.keenauth.app"
}
output "scim_base_url" {
value = keenauth_directory.acme_okta.base_url
}
base_url est https://<scim_host>/scim/v2/<id>. Transmettez-la au fournisseur d'identité avec un jeton SCIM.
Modifications sur place et remplacements
name et les paramètres du répertoire sont modifiés sur place. Le provider envoie un JSON merge patch ne contenant que les champs modifiés, ainsi que l'ETag de la dernière lecture dans If-Match ; si le répertoire a été modifié en dehors de cette configuration après cette lecture, l'API répond 412, rien n'est modifié, et vous devez relancer plan. L'API n'accepte aucun paramètre à la création d'un répertoire : les paramètres configurés sont donc appliqués juste après la création, dans le même apply.
La modification de organization_id, scim_host ou type remplace le répertoire.
- Un remplacement supprime d'abord l'ancien répertoire. La suppression d'un répertoire est immédiate et définitive : ses jetons, utilisateurs provisionnés, groupes, appartenances aux groupes et retenues de déprovisionnement en attente disparaissent avec lui, et les requêtes SCIM du fournisseur d'identité reçoivent
401. Un nouveau répertoire a un nouvel ID et une nouvelle base URL ; le fournisseur d'identité doit être pointé vers lui avec un nouveau jeton. - Protégez un répertoire que vous ne pouvez pas vous permettre de perdre avec
lifecycle { prevent_destroy = true }. - Un nouveau répertoire est
inactive. Le provider ne l'active ni ne le désactive (keenauth directories activateetdeactivatele font) ;stateest en lecture seule. - La suppression de l'organisation supprime ses répertoires. Un répertoire supprimé en dehors du provider est retiré du state, puis de nouveau planifié.
Paramètres
resource "keenauth_directory" "acme_okta" {
organization_id = keenauth_organization.acme.id
name = "Okta"
scim_host = "acme.eu.keenauth.app"
provisioning_mode = "user_store"
attribute_allowlist = ["title", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:user:department"]
delete_action = "remove_membership"
mass_deprovision_guard = {
percent = 20
absolute_min = 50
}
}
| Paramètre | Valeurs | Valeur par défaut |
|---|---|---|
provisioning_mode |
user_store (les utilisateurs de l'environnement, les appartenances aux organisations et les rôles de groupe sont écrits) ou mirror (seuls les enregistrements du répertoire sont conservés) |
user_store |
attribute_allowlist |
Jusqu'à 40 attributs SCIM facultatifs conservés sur les utilisateurs du répertoire : title, usertype, phonenumbers et les clés de l'extension entreprise |
vide |
unverified_domain_action |
invite ou mirror_only, pour un utilisateur dont le domaine d'e-mail n'est pas vérifié pour l'organisation |
invite |
delete_action |
remove_membership ou delete_user, pour un DELETE /Users SCIM |
remove_membership |
on_delete_memberships |
keep, suspend ou remove, pour les appartenances issues du répertoire lorsqu'il est supprimé |
keep |
mass_deprovision_guard |
enabled, percent (5 à 50) et absolute_min (10 à 1000) ; les déprovisionnements dépassant les deux seuils dans un délai de 5 minutes sont retenus pour approbation |
activé, 10, 25 |
send_welcome_email |
true ou false : un e-mail d'activation de compte pour les nouveaux utilisateurs du répertoire |
false |
- Un paramètre que vous ne configurez pas conserve la valeur du serveur, et la suppression d'un paramètre de la configuration conserve sa dernière valeur. Dans
mass_deprovision_guard, un champ que vous ne renseignez pas conserve sa valeur. - La suppression d'une clé de
attribute_allowlistsupprime cet attribut de chaque enregistrement utilisateur du répertoire, dans la même mise à jour. Un ensemble vide ([]) vide la liste. provisioning_modene peut pas changer tant que le répertoire contient des enregistrements utilisateur ; l'API répond409.
Jetons SCIM
Le jeton SCIM est un secret. L'API le renvoie une seule fois, dans la réponse qui crée le répertoire, et aucun point de terminaison ne peut le lire ensuite. Le provider ne l'écrit jamais dans le state, un fichier de plan, une sortie ou un journal. Pour préserver cette garantie, et pour qu'aucun identifiant valide ne reste inconnu de tous, le provider révoque immédiatement le jeton renvoyé lors de la création.
Créez le jeton de votre fournisseur d'identité avec keenauth_directory_token. Il conserve le jeton dans le state, chiffré uniquement avec votre clé publique RSA, que vous déchiffrez avec votre clé privée.
Si le provider ne peut pas révoquer le jeton initial, l'apply réussit tout de même et affiche un avertissement contenant la commande qui le révoque (keenauth directories tokens delete <directory_id> <token_id>).
Arguments
scim_hostest l'hôte principal de l'environnement : son domaine personnalisé actif, sinon<slug>.<region>.keenauth.app. Il doit s'agir d'un nom DNS en minuscules qui route vers cet environnement, sans quoi l'API répond422. L'API ne vérifie pas qu'il s'agit de l'hôte principal, donc un domaine personnalisé secondaire est accepté.namecomprend de 1 à 64 caractères, sans caractères de contrôle et sans espaces en début ou en fin. Il n'est pas nécessaire qu'il soit unique.typevautscimet ne peut prendre aucune autre valeur dans GA-1.state,base_url,created_at,etagetidsont en lecture seule. L'API ne renvoie passcim_host; le provider le déduit donc de l'hôte debase_url.
Import
Importez par ID de répertoire :
tofu import keenauth_directory.acme_okta dir_01j9zq3v8c5m2x7k4t6r1n0b3d