Skip to content

Scenario Confidential Content on Trusted Providers

Thorsten Sommer edited this page Oct 31, 2026 · 2 revisions

Goal: For everyday tasks, your colleagues may use cloud models you approved. Confidential content, such as your internal knowledge bases and wiki, reaches only your own servers, and no tool carries it out again.

You need: at least one self-hosted language model for confidential content, the cloud providers you approved, and, for internal knowledge, ERI servers or a Confluence Data Center wiki.

Building blocks

What How
Approved cloud providers are usable, others aren't A CUSTOM scheme: your servers HIGH, approved cloud types MEDIUM, every type you leave out gets "Unknown"
Nothing unknown A global minimum of MEDIUM
Confidential knowledge bases only on your servers ERI data sources with the security policy SELF_HOSTED
The internal wiki only on your servers Search Confluence always requires HIGH, which only your servers have
No tool carries internal content out Outbound restrictions for data sources and internal pages
Confidential documents in the Document Analysis Assistant Policies with MinimumProviderConfidence = "HIGH"

The configuration

The header is the same as in Writing Configuration Plugins. Replace <PROVIDER_KEY> with the key of each approved cloud provider type, as the example plugin lists them.

CONFIG = {}

CONFIG["LLM_PROVIDERS"] = {}

-- Your own server, for confidential content:
CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = {
    ["Id"] = "4f6b3a8e-2d4c-4b1a-9e5f-7a8b9c0d1e2f",
    ["InstanceName"] = "Internal model (confidential content)",
    ["UsedLLMProvider"] = "SELF_HOSTED",
    ["Host"] = "VLLM",
    ["Hostname"] = "https://llm.intra.example.org",
    ["AdditionalJsonApiParameters"] = "",
    ["Model"] = {
        ["Id"] = "openai/gpt-oss-120b",
        ["DisplayName"] = "GPT OSS 120B",
    },
}

-- An approved cloud provider, for everyday tasks:
CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = {
    ["Id"] = "7c9e6d1b-5a7f-4e4d-8b8c-0d1e2f3a4b5c",
    ["InstanceName"] = "Cloud model (no confidential content)",
    ["UsedLLMProvider"] = "<PROVIDER_KEY>",
    ["Host"] = "NONE",
    ["Hostname"] = "",
    ["APIKey"] = "ENC:v2:<the encrypted key from your export>",
    ["AdditionalJsonApiParameters"] = "",
    ["Model"] = {
        ["Id"] = "<model ID>",
        ["DisplayName"] = "<model name>",
    },
}

CONFIG["DATA_SOURCES"] = {}
CONFIG["DATA_SOURCES"][#CONFIG["DATA_SOURCES"]+1] = {
    ["Id"] = "6a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
    ["Name"] = "Project archive",
    ["Type"] = "ERI_V1",
    ["Hostname"] = "https://eri.intra.example.org",
    ["Port"] = 443,
    ["AuthMethod"] = "TOKEN",
    ["Token"] = "ENC:v2:<the encrypted token from your export>",
    ["SecurityPolicy"] = "SELF_HOSTED",
    ["SelectedRetrievalId"] = "<retrieval process ID from the ERI server>",
    ["MaxMatches"] = 10,
}

CONFIG["SETTINGS"] = {}

-- Data sources are a preview feature:
CONFIG["SETTINGS"]["DataApp.EnabledPreviewFeatures"] = { "PRE_RAG_2024" }

-- Your servers high, approved cloud types medium, everything else unknown:
CONFIG["SETTINGS"]["DataConfidence.ConfidenceScheme"] = "CUSTOM"
CONFIG["SETTINGS"]["DataConfidence.CustomConfidenceScheme"] = {
    ["SELF_HOSTED"] = "HIGH",
    ["<PROVIDER_KEY>"] = "MEDIUM",
}
CONFIG["SETTINGS"]["DataConfidence.EnforceGlobalMinimumConfidence"] = true
CONFIG["SETTINGS"]["DataConfidence.GlobalMinimumConfidence"] = "MEDIUM"

-- Users may add providers of their own, but only approved types are usable:
CONFIG["SETTINGS"]["DataApp.AllowUserToAddProvider"] = true

-- Content from data sources stays with configured services, at least for links:
CONFIG["SETTINGS"]["DataSourceSecuritySettings.MinimumOutboundDataRestriction"] = "ONLY_LINKS_FROM_CHAT"

-- The internal wiki and internal pages:
CONFIG["SETTINGS"]["DataTools.LockedToolSettings"] = {
    ["search_confluence.baseUrl"] = "https://wiki.intra.example.org/confluence/",
    ["read_web_page.allowedPrivateHosts"] = "wiki.intra.example.org",
    ["read_web_page.internalPageOutboundDataRestriction"] = "ONLY_CONFIGURED_SERVICES",
}

-- Everyday work starts in the cloud:
CONFIG["SETTINGS"]["DataApp.PreselectedProvider"] = "7c9e6d1b-5a7f-4e4d-8b8c-0d1e2f3a4b5c"
CONFIG["SETTINGS"]["DataApp.PreselectedProvider.AllowUserOverride"] = true

Add a document analysis policy with ["MinimumProviderConfidence"] = "HIGH" for each kind of confidential document, see Assistants and Templates.

What users see

  • The provider selection offers your server and the approved cloud provider. AI Studio doesn't offer providers of other types that users added themselves.
  • In a chat with the project archive, only your server can answer. The confidence card explains why.
  • Once a chat found something in the archive or read a wiki page, web search is no longer available in that chat.

Check it

  1. Stage the configuration on a test device, see Testing and Exporting Configurations.
  2. Start a chat with the cloud provider and select the project archive as data source: AI Studio doesn't let the cloud provider see it.
  3. Switch to your server, ask about the archive, then try a web search in the same chat: it's no longer offered.
  4. Add a provider of a type you didn't approve: the provider selection doesn't offer it.

Limits

  • Local files and folders as data sources: each has a required confidence, which users set when they add it. You can't enforce it centrally. Tell your users to set "High" for confidential folders, so that only your servers see them.
  • Assistants: the global minimum applies to all of them. A higher minimum can be managed centrally only for a few, see Assistants and Templates.
  • Confidence belongs to a type. A provider that a user adds with a private account of an approved type gets MEDIUM as well. If that's not acceptable, don't let users add providers of that type.

Where to go next

Clone this wiki locally