keenauth_management_client
La ressource keenauth_management_client définit l'accès à l'API de gestion d'une application dont app_type = "management" : les autorisations et la liste d'autorisation d'adresses IP avec lesquelles le client machine-à-machine de l'application peut appeler l'API de gestion. Une application ne possède au plus qu'un seul enregistrement, identifié par l'ID de l'application.
Privilège minimal
Cette ressource accorde l'accès à l'API de gestion. Limitez-le au strict nécessaire :
- Ne listez que les autorisations dont l'automatisation a besoin, par exemple
users:readplutôt que toutes les autorisationsusers:*. - Restreignez
allowed_cidrsaux réseaux dans lesquels le client s'exécute. - Utilisez une application de gestion par automatisation, afin que chacune puisse être restreinte ou supprimée indépendamment.
La clé d'API qui applique la configuration ne peut accorder que les autorisations et les réseaux qu'elle possède elle-même.
resource "keenauth_application" "ops" {
key = "ops-automation"
name = "Ops automation"
app_type = "management"
party = "first_party"
}
resource "keenauth_management_client" "ops" {
application_id = keenauth_application.ops.id
permissions = ["users:read", "applications:read"]
allowed_cidrs = ["203.0.113.0/24"]
}
Clés de signature
La ressource ne contient aucun secret ni aucune clé. Enregistrez la clé publique de l'application avec POST /v1/applications/{application_id}/credentials (type: public_key) dans la CLI ou le tableau de bord. L'API rejette jwks_uri et public_keys sur cette ressource.
allowed_cidrs dans le plan
- Si vous omettez
allowed_cidrslors de la création de l'enregistrement, l'API écrit la liste propre à la clé d'API appelante. Si cette clé n'a pas de liste, le client n'a aucune restriction d'adresses IP. Le plan affiche(known after apply). - Une fois l'enregistrement créé, l'omission de l'attribut conserve la valeur actuelle. Le retrait de l'attribut de la configuration ne réinitialise pas la liste, et une modification effectuée en dehors de la configuration est acceptée sans différence affichée. Écrivez la liste explicitement pour la gérer.
- Une liste vide est rejetée au moment de la planification, car l'API transforme
[]en liste de la clé appelante. Omettez plutôt l'attribut. - Écrivez chaque bloc sous sa forme canonique : l'adresse réseau, et l'IPv6 en minuscules. Par exemple, écrivez
10.0.0.0/24, et non10.0.0.5/24.
Erreurs
| Erreur | Signification |
|---|---|
403 insufficient_permissions |
Seule une clé d'API peut gérer ces enregistrements ; utilisez un fournisseur configuré avec api_key, et non client_id + private_key. Avec une clé d'API, une clé restreinte ne dispose pas de management-clients:read ou de management-clients:write. |
403 permission_escalation |
L'enregistrement aurait des autorisations ou des réseaux que la clé d'API ne possède pas. |
404 lors de la création |
L'application n'existe pas dans l'environnement de la clé d'API. |
409 |
L'application possède déjà un enregistrement. Importez-le. |
422 sur application_id |
L'application n'est pas de type management. |
412 |
L'enregistrement a changé après le plan. Rien n'a été modifié ; exécutez de nouveau plan. |
Import
Importez par ID d'application :
tofu import keenauth_management_client.ops app_01j9zq3v8c5m2x7k4t6r1n0b3d