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

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 configurer l’accès aux modèles et aux outils hébergés ainsi que la conservation des données d’un projet existant. Ces paramètres déterminent les modèles et les outils que les charges de travail du projet peuvent utiliser, ainsi que la politique de conservation approuvée qui s’applique au projet. Ils n’accordent aucun accès au projet aux utilisateurs ni aux comptes de service.

À l’issue du workflow principal, vous disposerez d’une configuration réutilisable qui :

  • Limite l’accès du projet à un ensemble de modèles approuvés.
  • Définit explicitement si chaque outil hébergé pris en charge est autorisé.
  • Applique au projet la politique de conservation des données par défaut de l’organisation.

Avant de commencer

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

  • L’identifiant d’un projet existant.
  • Les identifiants des modèles disponibles pour votre organisation.
  • Une organisation pour laquelle les contrôles de conservation des données sont activés, si vous comptez 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é dans un projet, la politique de l’organisation doit déjà réserver cet outil à certains projets. Un projet ne peut pas désactiver un outil que l’organisation a activé pour tous ses projets.

Limitez l’accès aux modèles

openai_project_model_permissions applique à un projet une liste de modèles autorisés ou 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"]
}

Attribuez à mode l’une des valeurs suivantes :

  • allow_list pour autoriser uniquement les modèles figurant dans model_ids.
  • deny_list pour autoriser tous les modèles disponibles sauf ceux qui figurent dans model_ids.

Chaque identifiant de modèle doit être visible pour l’organisation. Cette exigence vaut aussi pour 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 de modèles lors de la génération du prochain plan, puis les met en œuvre lorsque vous appliquez ce plan.

Configurez les outils hébergés

openai_project_hosted_tool_permissions gère les autorisations de cinq outils au niveau du projet. Renseignez chaque champ pour que la configuration que vous examinez décrive la politique dans son intégralité :

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
}

Ces champs contrôlent l’accès à la recherche dans les fichiers, à la recherche web, à la génération d’images, aux serveurs MCP distants et à l’Interpréteur de code. Pour chaque outil hébergé, l’organisation dispose de trois modes : autoriser l’outil pour tous les projets, l’interdire pour tous les projets ou le réserver à certains projets. La valeur true autorise le projet à utiliser l’outil, sous réserve des autres conditions d’éligibilité et de conservation des données de l’organisation. La valeur 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 tentative de définir ce champ sur false échoue. Modifiez la politique de l’organisation pour réserver l’outil à certains projets avant de le désactiver dans un projet donné.

Terraform actualise les cinq valeurs à partir de celles d’OpenAI. Si elles ont été modifiées dans le tableau de bord, le prochain plan signale l’écart.

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 en vigueur dans l’organisation, sauf si une dérogation a été approuvée pour ce projet :

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

Le fournisseur accepte également les valeurs 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 un paramètre dérogatoire pour un projet.

Gérez la politique par défaut de l’organisation

Utilisez openai_organization_data_retention uniquement si Terraform gère le paramètre de conservation déjà en place 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 ne permet pas d’inscrire l’organisation à un programme de conservation des données. Selon les niveaux de conservation concernés, certaines transitions nécessitent l’intervention de l’assistance ou sont impossibles.

Si vous retirez openai_project_hosted_tool_permissions ou openai_project_data_retention de la configuration, Terraform retire la ressource de son état, mais conserve les paramètres distants. En revanche, si vous retirez openai_project_model_permissions, Terraform supprime la configuration des autorisations d’accès aux modèles du projet. Tenez compte de ces différences lorsque vous examinez un plan de destruction.

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 que vous avez examinée :

terraform plan -detailed-exitcode

Le code de sortie 0 indique qu’il n’y a aucune modification, 2 que le plan contient des modifications et 1 que Terraform a rencontré une erreur. Examinez toute modification inattendue avant d’appliquer le plan. Si un administrateur a effectué une modification en urgence, déterminez d’abord à quoi elle sert avant de laisser une automatisation l’écraser.

Exécutez l’exemple complet

L’exemple suivant gère les trois contrôles du projet dans une même configuration. Créez le fichier 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 le fichier terraform.tfvars en indiquant l’identifiant d’un projet existant, les identifiants de modèles visibles pour l’organisation, la politique d’accès 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"

Cet exemple active tous les outils hébergés pour pouvoir s’exécuter lorsque la politique de l’organisation les autorise pour tous les projets. Ne passez une valeur à false qu’une fois que la politique de l’organisation réserve l’outil correspondant à certains projets. Avant d’appliquer le plan, vérifiez que l’identifiant du modèle et le type de conservation sont disponibles pour votre organisation.

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

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

Le premier plan devrait prévoir l’ajout de trois ressources. Pour les outils hébergés et la conservation des données, chaque ajout signifie que Terraform prend en charge un paramètre existant, unique pour le projet. Aucun objet distant distinct n’est créé. La ressource qui gère les autorisations d’accès aux modèles crée ou met à jour la configuration de ces autorisations pour le projet.

Exécutez de nouveau terraform plan pour vérifier que la configuration n’entraîne aucune autre modification. Si le plan signale un écart, vérifiez si un autre administrateur ou une automatisation a modifié un paramètre du projet avant d’appliquer une nouvelle mise à jour.