For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Contrôles des modèles, des outils et des données avec Terraform

Configurez l’accès aux modèles, les outils hébergés et la conservation des données d’un projet.

Suivez ce guide pour appliquer des contrôles des modèles, des outils hébergés et de la conservation des données à un projet existant. Ces contrôles déterminent ce que les workloads du projet peuvent utiliser et quelle politique de conservation approuvée s’applique. Ils n’accordent pas aux utilisateurs ni aux comptes de service l’accès au projet.

Une fois le workflow principal terminé, vous disposerez d’une configuration reproductible qui :

  • Limite le projet à un ensemble de modèles approuvés.
  • Définit une autorisation explicite pour chaque outil hébergé pris en charge.
  • Applique au projet la politique de conservation des données par défaut de l’organisation.

Avant de commencer

Effectuez la configuration du fournisseur Terraform et exportez une clé d’API d’administration dans la variable OPENAI_ADMIN_KEY. Vous aurez également besoin des éléments suivants :

  • L’ID d’un projet existant.
  • Les ID des modèles disponibles pour votre organisation.
  • Une organisation dont les contrôles de conservation des données sont activés, si vous prévoyez de gérer la conservation des données du projet.

Utilisez un projet de test pour évaluer le workflow. Pour désactiver un outil hébergé pour un projet, la politique de l’organisation relative à cet outil doit déjà en limiter l’accès à certains projets. Un projet ne peut pas désactiver un outil que l’organisation a activé pour tous les projets.

Restreignez l’accès aux modèles

openai_project_model_permissions applique à un projet soit une liste de modèles autorisés, soit une liste de modèles interdits. Cet exemple autorise uniquement gpt-5.4-mini :

resource "openai_project_model_permissions" "application" {
  project_id = "proj_123"
  mode       = "allow_list"
  model_ids  = ["gpt-5.4-mini"]
}

Définissez mode sur :

  • allow_list pour autoriser uniquement les modèles figurant dans model_ids.
  • deny_list pour autoriser les modèles disponibles, à l’exception de ceux figurant dans model_ids.

Chaque ID de modèle doit être visible pour l’organisation. Cela inclut tous les instantanés de modèles affinés que vous ajoutez à la politique. Terraform prend en compte les modifications du mode et de la liste des modèles lors de la prochaine planification et de son application.

Configurez les outils hébergés

openai_project_hosted_tool_permissions gère cinq autorisations d’outils au niveau du projet. Renseignez chaque champ pour que la configuration révisée décrive l’intégralité de la politique :

resource "openai_project_hosted_tool_permissions" "application" {
  project_id               = "proj_123"
  file_search_enabled      = true
  web_search_enabled       = false
  image_generation_enabled = false
  mcp_enabled              = false
  code_interpreter_enabled = true
}

Les champs contrôlent la recherche de fichiers, la recherche web, la génération d’images, les serveurs MCP distants et l’Interpréteur de code. La politique de chaque organisation relative aux outils hébergés comporte trois modes : autoriser tous les projets, interdire tous les projets ou autoriser certains projets. Définir un champ sur true autorise cet outil pour le projet, sous réserve des autres exigences de l’organisation en matière d’éligibilité et de conservation des données. Définir un champ sur false retire le projet de la liste des projets autorisés à utiliser cet outil. Si l’organisation autorise actuellement l’outil pour tous les projets, la définition du champ sur false échoue. Modifiez la politique de l’organisation relative à cet outil pour n’autoriser que certains projets avant de le désactiver pour un projet donné.

Terraform actualise les cinq valeurs à partir d’OpenAI et signale les modifications effectuées dans le tableau de bord comme des écarts de configuration dans le plan suivant.

Configurez la conservation des données

openai_project_data_retention applique un type de conservation approuvé à un projet. Faites hériter le projet de la politique actuelle de l’organisation, sauf s’il bénéficie d’une dérogation approuvée :

resource "openai_project_data_retention" "application" {
  project_id = "proj_123"
  type       = "organization_default"
}

Le fournisseur accepte également none, zero_data_retention, modified_abuse_monitoring, enhanced_zero_data_retention et enhanced_modified_abuse_monitoring. Les modes disponibles et les transitions autorisées dépendent de la configuration de votre organisation et de la région de résidence des données du projet.

Consultez la page Vos données et le contrat de votre organisation avec OpenAI avant de choisir une dérogation pour un projet.

Gérez le paramètre par défaut de l’organisation

Utilisez openai_organization_data_retention uniquement lorsque Terraform gère le paramètre existant au niveau de l’organisation :

resource "openai_organization_data_retention" "default" {
  type = "zero_data_retention"
}

Cette ressource modifie un paramètre existant de l’organisation ; elle n’inscrit pas une organisation à un programme de conservation des données. Certaines transitions entre niveaux de conservation nécessitent l’intervention de l’assistance ou ne sont pas disponibles.

Supprimer openai_project_hosted_tool_permissions ou openai_project_data_retention de la configuration retire la ressource de l’état Terraform, mais laisse les paramètres distants inchangés. Supprimer openai_project_model_permissions supprime la configuration des autorisations des modèles du projet. Examinez les plans de destruction en tenant compte de ces différences de comportement.

Détectez les modifications effectuées en dehors de Terraform

Générez un plan pour actualiser l’état distant et le comparer à la configuration révisée :

terraform plan -detailed-exitcode

Le code de sortie 0 indique qu’il n’y a aucune modification, 2 indique que le plan contient des modifications et 1 indique que Terraform a rencontré une erreur. Examinez les modifications inattendues avant d’appliquer le plan. N’écrasez pas automatiquement une modification administrative effectuée en urgence sans en avoir d’abord compris la raison.

Exécutez l’exemple complet

L’exemple suivant gère les trois contrôles du projet ensemble. Créez main.tf :

terraform {
  required_version = ">= 1.0"

  required_providers {
    openai = {
      source  = "openai/openai"
      version = ">= 1.0.0"
    }
  }
}

provider "openai" {}

variable "project_id" {
  type        = string
  description = "ID of the existing OpenAI project."
}

variable "model_permission_mode" {
  type        = string
  description = "Whether model_ids is an allowlist or denylist."
  default     = "allow_list"

  validation {
    condition     = contains(["allow_list", "deny_list"], var.model_permission_mode)
    error_message = "The model permission mode must be allow_list or deny_list."
  }
}

variable "model_ids" {
  type        = list(string)
  description = "Model IDs included in the project model policy."
}

variable "hosted_tools" {
  type = object({
    file_search      = bool
    web_search       = bool
    image_generation = bool
    mcp              = bool
    code_interpreter = bool
  })
  description = "Hosted tools enabled for the project."
}

variable "project_data_retention_type" {
  type        = string
  description = "Approved data-retention type for the project."

  validation {
    condition = contains([
      "organization_default",
      "none",
      "zero_data_retention",
      "modified_abuse_monitoring",
      "enhanced_zero_data_retention",
      "enhanced_modified_abuse_monitoring",
    ], var.project_data_retention_type)
    error_message = "Provide a supported project data-retention type."
  }
}

resource "openai_project_model_permissions" "application" {
  project_id = var.project_id
  mode       = var.model_permission_mode
  model_ids  = var.model_ids
}

resource "openai_project_hosted_tool_permissions" "application" {
  project_id               = var.project_id
  file_search_enabled      = var.hosted_tools.file_search
  web_search_enabled       = var.hosted_tools.web_search
  image_generation_enabled = var.hosted_tools.image_generation
  mcp_enabled              = var.hosted_tools.mcp
  code_interpreter_enabled = var.hosted_tools.code_interpreter
}

resource "openai_project_data_retention" "application" {
  project_id = var.project_id
  type       = var.project_data_retention_type
}

output "controlled_project_id" {
  value = var.project_id
}

output "model_permission_mode" {
  value = openai_project_model_permissions.application.mode
}

output "project_data_retention_type" {
  value = openai_project_data_retention.application.type
}

Créez terraform.tfvars en y indiquant l’ID d’un projet existant, des ID de modèles visibles, la politique relative aux outils hébergés et un type de conservation approuvé :

project_id            = "proj_123"
model_permission_mode = "allow_list"
model_ids             = ["gpt-5.4-mini"]

hosted_tools = {
  file_search      = true
  web_search       = true
  image_generation = true
  mcp              = true
  code_interpreter = true
}

project_data_retention_type = "organization_default"

L’exemple active tous les outils hébergés afin de pouvoir s’exécuter lorsque la politique de l’organisation active les outils pour tous les projets. Ne passez une valeur à false qu’une fois que la politique correspondante de l’organisation limite l’accès à certains projets. Vérifiez que l’ID de modèle et le type de conservation sont disponibles pour votre organisation avant d’appliquer le plan.

Initialisez Terraform, puis examinez et appliquez un plan enregistré :

terraform init
terraform fmt
terraform validate
terraform plan -out=tfplan
terraform show tfplan
terraform apply tfplan

Le premier plan devrait contenir trois ressources à ajouter. Pour les contrôles des outils hébergés et de la conservation des données, un ajout signifie que Terraform commence à gérer un paramètre existant qui n’a qu’une seule instance par projet ; il ne crée pas d’objet distant distinct. Les autorisations des modèles créent ou mettent à jour la configuration des autorisations des modèles du projet.

Exécutez à nouveau terraform plan pour vérifier que la configuration ne produit plus de modifications. Si des écarts apparaissent, déterminez si un autre administrateur ou une automatisation a modifié un contrôle du projet avant d’appliquer une nouvelle mise à jour.