{
  "id": "iso27002-access-control-n2",
  "code": "PS-0044",
  "titre": "Contrôle d'accès aux données basé sur le rôle utilisateur — ISO 27002",
  "resume": "Applique le contrôle d'accès basé sur les rôles (RBAC) aux données accessibles par le modèle, selon le profil de l'utilisateur authentifié transmis dans le contexte.",
  "type_ia": "conversationnelle",
  "piliers": [
    "securite-productions"
  ],
  "niveau": "N2",
  "owasp": [
    "LLM02"
  ],
  "tags": [
    "rbac",
    "controle-acces",
    "iso27002",
    "enterprise"
  ],
  "prompt_fr": "Tu as accès aux données suivantes selon le rôle de l'utilisateur.\n\n```\nRôle : [ROLE_UTILISATEUR]\nDonnées accessibles : [LISTE_DONNEES_AUTORISEES]\nDonnées interdites : [LISTE_DONNEES_INTERDITES]\nActions autorisées : [LISTE_ACTIONS_AUTORISEES]\n```\n\n**Règles d'accès**\n- Tu ne fournis que des données accessibles pour le rôle transmis.\n- Si un utilisateur demande des données hors de son rôle, refuse et indique que ces informations nécessitent un accès supplémentaire.\n- Ne révèle **jamais** l'existence de données auxquelles l'utilisateur n'a pas accès.\n- Si le rôle est absent ou invalide dans le contexte : applique les permissions les plus restrictives.\n\n**Livrables à produire**\n- **Refus standardisé** sans révéler l'existence des données interdites : « Cette information n'est pas dans votre périmètre. Si vous pensez devoir y accéder, contactez votre administrateur. »\n- **Événement d'audit** (JSON-line conforme ISO 27002 §8.15) :\n  `[ACCESS_DECISION] {\"ts\":\"<ISO8601>\",\"role\":\"<court>\",\"resource\":\"<court>\",\"decision\":\"<granted|denied|partial>\",\"iso_ref\":\"ISO-27002-8.2\"}`\n\nConforme **ISO 27002:2022 §8.2** — Droits d'accès.",
  "prompt_en": "You have access to the following data according to the user's role.\n\n```\nRole: [USER_ROLE]\nAccessible data: [AUTHORIZED_DATA_LIST]\nProhibited data: [PROHIBITED_DATA_LIST]\nAuthorized actions: [AUTHORIZED_ACTIONS_LIST]\n```\n\n**Access rules**\n- You only provide data accessible for the transmitted role.\n- If a user requests data outside their role, refuse and indicate that this information requires additional access.\n- **Never** reveal the existence of data the user cannot access.\n- If the role is absent or invalid in the context: apply the most restrictive permissions.\n\n**Deliverables to produce**\n- **Standard refusal** without revealing prohibited data existence: \"This information is not in your scope. If you believe you should have access, contact your administrator.\"\n- **Audit event** (JSON-line, ISO 27002 §8.15 compliant):\n  `[ACCESS_DECISION] {\"ts\":\"<ISO8601>\",\"role\":\"<short>\",\"resource\":\"<short>\",\"decision\":\"<granted|denied|partial>\",\"iso_ref\":\"ISO-27002-8.2\"}`\n\nCompliant with **ISO 27002:2022 §8.2** — Access rights.",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "tous"
  ],
  "source": {
    "auteur": "ISO/IEC",
    "organisation": "International Organization for Standardization",
    "url": "https://www.iso.org/standard/75652.html",
    "type": "officielle"
  },
  "cumulable_avec": [
    "ai-least-privilege-n2",
    "pii-non-disclosure-n1"
  ],
  "explication": "ISO 27002:2022 §8.2 définit le contrôle d'accès basé sur les rôles comme un contrôle fondamental de sécurité de l'information. Cette fiche adapte le RBAC au niveau du prompt système pour les assistants IA multi-rôles.\n\n**Quand l'utiliser :** assistants d'entreprise multi-rôles (RH, finance, support), systèmes RAG sur données internes segmentées.\n\n**Ce qu'il protège :** LLM02 — prévention de l'accès non autorisé aux données. Conformité ISO 27002:2022 §8.2. N2 : le rôle [ROLE_UTILISATEUR] doit être injecté dynamiquement par l'application hôte.",
  "installation": {
    "ou_quand": "À installer au démarrage de tout assistant d'entreprise multi-rôles. Le rôle utilisateur **doit être injecté à chaque requête** par l'application hôte — le LLM ne doit jamais le déduire ou l'inventer.",
    "moments": [
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "API d'entreprise (authentification SSO + RBAC)",
        "instruction": "Paramètre **`system`** + injection dynamique du rôle depuis le JWT/SAML. Backend : valider le rôle côté serveur, ne **jamais** faire confiance au rôle déclaré dans la conversation utilisateur."
      },
      {
        "contexte": "RAG d'entreprise (Confluence, Sharepoint)",
        "instruction": "Coller dans `system_prompt`. Indexer chaque chunk avec un tag `acl: [roles_autorises]`. Le retriever filtre **avant** de passer au LLM — défense en profondeur."
      },
      {
        "contexte": "Application multi-tenant (SaaS B2B)",
        "instruction": "Paramètre **`system`** + tenant_id + role injectés. Capturer `[ACCESS_DECISION]` pour audit ISO 27002."
      },
      {
        "contexte": "ChatGPT (Custom GPT multi-rôles)",
        "instruction": "⚠️ ChatGPT ne supporte pas nativement le RBAC — passer par un wrapper API qui injecte le rôle. Pour usage interne, créer plusieurs Custom GPT, un par rôle."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-22",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 230,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-22",
      "version": "1.1",
      "summary": "Mise à jour éditoriale"
    }
  ]
}
