Gå til innholdet

Classify, Then Protect

Dette innholdet er ikke tilgjengelig på ditt språk.

The question this module answers: Which protection does each kind of data get, for every consumer, and what does it cost?

Back in chapter 5 we classified Steve Trucking’s data. The Recipient’s phone number: personal data. The home address: personal data. Delivery notes, which may hold a gate code or “dog in the yard”: sensitive. A DC code: not worth the governance energy. And I said it then: classification without enforcement is decoration.

This module is the enforcement. Mark the gate code Restricted and change nothing else, and every crew member, every care agent, the partner integration and the Recipient’s agent can still read it. The label is honest. The data is just as exposed as it was yesterday.

When I teach this live, I ask the room: “Somebody tell me, where do I classify data?” Someone always finds it: on the field, in Setup, public, internal, confidential, restricted or mission critical. Good. That’s the input. Now the architect’s question starts: what are we going to do differently because of that label?

Who can see it? Can it be changed, and by whom? Should it be encrypted, and does it still need to be searchable after? Can a sandbox hold the real value? Can an integration retrieve it? Can an agent? Can it go into a prompt to a large language model? How long do we keep it? Every one of those is a design decision, and the classification is what makes the decision repeatable instead of a fresh argument for every field.

Sensitivity and Use: Two Questions, Not One

Section titled “Sensitivity and Use: Two Questions, Not One”

A level tells you how sensitive the data is. It doesn’t tell you how the data is used, and the use changes the protection.

Take two Restricted fields at Steve Trucking. The gate code on a delivery: nobody ever searches by it. The crew assigned to that delivery reads it at the gate, and nobody else should. And a crew member’s driver’s license number, on the Crew Member HR record we split out in module 1: the HR team looks people up by it when a license is renewed, and the compliance check matches it against the state’s records.

Same level. Very different use. One is never searched; the other has to be found by an exact value. When we get to encryption, that difference decides the encryption scheme. So for every sensitive field I want two answers in the design, side by side: how sensitive is it, and what must it still be able to do?

Salesforce gives every field a Data Sensitivity Level, and its default values are Public, Internal, Confidential, Restricted and MissionCritical. They’re a picklist you can change: the values live in a standard value set your org can edit (Salesforce, Object Reference, FieldSecurityClassification (opens in a new tab), API version 68.0, checked 2026-10-28). Salesforce’s Well-Architected guidance uses four tiers: Public, Internal, Confidential and Restricted (Trust (opens in a new tab), checked 2026-10-21).

Five levels, then. What does each one add? Public, Internal, Confidential and Restricted cover the range most organizations deal with: from anyone may see it, to a small approved group, often because a law or a contract says so. MissionCritical is the level above that: a very small group, for information where exposure would do serious damage and the handling rules are usually set by law or regulation, such as national security work, critical infrastructure or certain government programs.

Most companies never need it. If nothing in your organization sits above Restricted, a fifth level is a column in the matrix that no field ever uses, and a choice people get wrong because they can’t tell it from the fourth. So for most organizations, four levels are the useful set, and that’s what Steve Trucking uses. If your company does handle that kind of information, keep the fifth level, and give it controls that are clearly stronger than Restricted, or it isn’t a level.

Whatever the number, every organization decides what its levels mean, and a level only earns its place if it changes a control. At a trucking company, the most sensitive tier might be a crew member’s medical record and the code to someone’s gate. At a manufacturer building components for defense systems, the top tier carries obligations of a different order entirely. Classification is organizational policy. Architecture implements that policy.

Steve Trucking’s four levels, with an example of each:

  • Public: the tracking page’s “out for delivery” and the delivery window; DC addresses.
  • Internal: Work Orders, Manifests, routes, truck numbers, the partner’s service levels.
  • Confidential: the Recipient’s name, phone and address; partner contract rates; damage claim amounts.
  • Restricted: gate codes and access notes; a crew member’s driver’s license number and medical certificate; the bank details for a partner’s damage credits.

Here’s how I make the policy visible. Instead of security scattered across permission sets, encryption settings, sandbox refresh steps, integration users and agent configuration, put it in one matrix: the levels down the side, the controls across the top. This is Steve Trucking’s starting point. It’s not a Salesforce standard, and it’s not my policy for your company. It’s the shape of the decision, with defaults you adapt.

LevelWho sees itEncryptionOutside productionApplicationsAgentsMay enter an AI prompt?Audit
PublicAnyone, including the tracking pageNone neededReal values are fineAny approved integrationAny agentYesStandard
InternalEmployees and contractors; partners see their own through sharingNone by defaultReal values are fine unless combined with personal dataApproved integrations, through their own integration usersEmployee agents, as the userYes, inside approved agentsStandard
ConfidentialField-level security limited to the roles that need itWhen a law, contract or customer requires itMaskedOnly an integration whose job needs itOnly an agent whose job needs it; never a public-facing agentOnly the fields the task needs; masking is a safety net, not the planField history on key fields
RestrictedA small group; a separate object when the audience differsYes: Shield, probabilistic unless the use requires exact matchNever the real valueExplicitly approved, one integration at a time, auditedNo direct access by default; a controlled action that returns only the answerNo, unless a reviewed exception says soField Audit Trail; Event Monitoring on access

Read it across a row and you get the rules for one level of data. Read it down a column and you get the rules for one kind of consumer. Most organizations already have the first three columns somewhere, in a policy document nobody opens. The last three are the ones I find missing: applications, agents and AI prompts. That’s the new world, and it’s why this matrix gets a column for each.

As sensitivity goes up, every column tightens: fewer people, more justification to store or copy or move the data, more proof that the controls work. An architect can step outside a default when a real business requirement justifies it. The point is that the exception is deliberate, written down and reviewed, not something we discover in an audit.

The protection matrix Steve Trucking's protection matrix: four levels of data side by side, each a shade darker than the last, each answering the same six questions. Public, such as the tracking page: anyone may see it, no encryption, real values are fine outside production, any approved integration, any agent, and it may go into an AI prompt. Internal, such as Work Orders and routes: employees and contractors, with partners seeing their own; no encryption by default; real values outside production unless they're personal; integrations through their own integration user; employee agents running as the user; AI prompts inside approved agents. Confidential, such as a Recipient's phone: only the roles that need it; encrypted when a law or contract asks; masked outside production; applications and agents only if the job needs it, never a public agent; only the fields the task needs go into a prompt. Restricted, such as the gate code: a small group, its own object if needed; encrypted with Shield; never the real value outside production; one approved, audited application; agents get an action, not the value; no AI prompts unless reviewed. Underneath: a starting point to adapt, not a Salesforce standard; the last three questions are the new ones. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.50.0", "built": "2026-10-28", "id": "DGM-DA-DS-30", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "comparison 0.5.0", "theme": "stevetecharc 1.4.0"} Public the tracking page PEOPLE Anyone ENCRYPTION None needed OUTSIDE PRODUCTION Real values are fine APPLICATIONS Any approved integration AGENTS Any agent AI PROMPTS Yes Internal Work Orders, routes PEOPLE Employees, contractors Partners see their own ENCRYPTION None by default OUTSIDE PRODUCTION Real values, unless personal APPLICATIONS Their own integration user AGENTS Employee agents, as the user AI PROMPTS Yes, in approved agents Confidential a Recipient's phone PEOPLE Only the roles that need it ENCRYPTION When a law or contract asks OUTSIDE PRODUCTION Masked APPLICATIONS Only if the job needs it AGENTS Only if the job needs it Never a public agent AI PROMPTS Only the fields the task needs Restricted the gate code PEOPLE A small group Its own object if needed ENCRYPTION Yes: Shield OUTSIDE PRODUCTION Never the real value APPLICATIONS One approved, audited AGENTS An action, not the value AI PROMPTS No, unless reviewed A starting point to adapt, not a Salesforce standard. The last three questions are the new ones. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Test knowledge. Know Salesforce’s data classification fields on every standard and custom field: Data Owner, Field Usage, Data Sensitivity Level (default values Public, Internal, Confidential, Restricted, MissionCritical) and Compliance Categorization (such as PII, GDPR, CCPA, HIPAA, PCI). Know that they’re labels: they don’t restrict access, encrypt or mask anything by themselves.

When someone says “this field is sensitive,” the first answer I hear in the room is “encrypt it.” Maybe. But walk through what encryption at rest actually changes at Steve Trucking.

Encrypt the gate code, then leave it readable by 2,000 users. Did encryption solve the access problem? No: every one of them still sees the decrypted value on the screen. Encrypt it, then the nightly integration copies it to the partner’s warehouse in plain text. Did encryption protect it there? No. Encrypt it, then a care agent pastes it into an email. Same answer.

Encryption at rest protects the stored data from a particular set of threats, such as someone who gets at the underlying storage. It doesn’t replace access control, minimization, masking, audit, retention or integration design. So don’t start with “which encryption checkbox do I need?” Start with: what am I protecting, from whom, and while it’s doing what?

Encryption at rest is often a regulatory requirement, or a contractual one. A health regulation, a payment card standard, a customer’s security addendum: these are the usual reasons a field must be encrypted, and my position from chapter 5 holds: Shield is the answer for key regulatory requirements like it.

In the matrix, that becomes a rule by level:

  • Restricted: encrypt. These are the fields a breach report would name.
  • Confidential: encrypt when a law, contract or customer requires it, and document which one. Otherwise rely on access control, masking and audit.
  • Internal and Public: don’t encrypt by default. Encrypting everything doesn’t make you more secure; it makes the org harder to use and harder to change, and it hides the fields that really matter among the ones that don’t.

I’ll be blunt about that last point because I’ve watched it happen: don’t encrypt every field. Encrypt the fields your policy names, and know why each one is on the list.

Salesforce now offers two ways to encrypt data at rest under Shield, and the trade-offs depend on which one you have.

Field-level encryption (Shield Platform Encryption, the one most of us know) encrypts chosen fields and files in the application tier. It’s where the classic trade-offs live. With the default probabilistic scheme, an encrypted field can’t be used to filter, sort or group in queries; deterministic encryption gives up a little strength so you can filter on exact values (chapter 5 module 6 listed the considerations).

Database Encryption is newer. It encrypts the “Full transactional database,” it requires Hyperforce, and it supports filtering, sorting and search (Salesforce Help, Differences Between FLE and Database Encryption (opens in a new tab), checked 2026-10-27). That removes many of the functional costs, and it changes the conversation: the question becomes what each layer protects against, and what your regulation or contract actually asks for.

So before designing around encryption’s limits, find out which kind the org has, or will have. A design that avoids filtering on an encrypted field because of field-level encryption may not need to on Database Encryption, and a design built for Database Encryption may break if the org only licenses field-level encryption.

Check availability, too. Database Encryption comes with Salesforce Shield, and Salesforce says it “hasn’t yet been deployed to all Hyperforce regions and instances” (Salesforce Shield Platform Encryption Architecture (opens in a new tab), no page date, checked 2026-10-29). Ask your account team whether it’s available for your org before a design depends on it.

Test knowledge. Know that Shield Platform Encryption encrypts data at rest, separate from encryption in transit, and that field-level encryption limits what you can do with an encrypted field, while Database Encryption (Hyperforce) encrypts the whole transactional database and keeps filtering, sorting and search.

Probabilistic by Default, Deterministic When the Use Requires It

Section titled “Probabilistic by Default, Deterministic When the Use Requires It”

With field-level encryption, each encrypted field gets a scheme, and this is where the use from earlier comes back.

Probabilistic is the default. The same value encrypts to different ciphertext every time, so a pattern in the stored data reveals nothing. It’s the stronger choice, and its cost is that the field can’t be filtered: you can’t find a record by it.

Deterministic encrypts the same value the same way, so the platform can match it. Salesforce’s Help says deterministic encryption supports filtering in reports, list views and SOQL WHERE clauses, and unique and external ID fields, as case-sensitive or exact-match case-insensitive matches (Salesforce Help, Filter Encrypted Data with Deterministic Encryption (opens in a new tab), checked 2026-10-27). Exact match: not “contains”, not “starts with”.

My rule, from the interview I did for this chapter: probabilistic by default; deterministic only where exact-match filtering is essential. Back to the two Restricted fields:

  • The gate code is never searched. Probabilistic.
  • The driver’s license number must be found by an exact value when a license is renewed and when compliance checks it. Deterministic, case-insensitive.
  • And the Recipient’s phone, if a regulation or contract makes us encrypt it, is used by duplicate matching and by the care team to find a delivery when someone calls. Deterministic, exact match. Then check that the matching rules still work, because matching on encrypted fields has its own considerations.

The question isn’t “which scheme sounds more secure?” It’s what must the field still be able to do after I protect it?

Choosing the encryption A decision flow for one sensitive field, such as the gate code, a license number or a phone. First question: do access control, masking and audit meet the policy? If yes, don't encrypt it, which is the answer for most Public, Internal and Confidential fields. If no: does Database Encryption meet the policy? If yes, use Database Encryption, which needs Hyperforce and keeps filtering, sorting and search. If no, field-level encryption: must the field be found by an exact value? If yes, deterministic, an exact match that's case-sensitive or not, as for the license number and the phone. If no, probabilistic, the default and the strongest, which can't be filtered, as for the gate code. Underneath: whatever you choose, turn it on early and retest everything that uses the field. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.50.0", "built": "2026-10-28", "id": "DGM-DA-DS-31", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "flow/decision 0.1.0", "theme": "stevetecharc 1.4.0"} A sensitive field the gate code, a license number, a phone Do access, masking and audit meet the policy? Don't encrypt it most Public, Internal and Confidential fields Does Database Encryption meet the policy? Database Encryption Hyperforce; filtering, sorting and search kept Must it be found by an exact value? Deterministic exact match, case-sensitive or not: the license number, the phone Probabilistic, the default the strongest; can't be filtered: the gate code yes no yes no yes no Whatever you choose, turn it on early and retest everything that uses the field. HOW TO READ IT a step a question an answer yes goes right to an answer; no goes down to the next question © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Test knowledge. Know probabilistic (the default, strongest, can’t be filtered) and deterministic (exact-match filtering in reports, list views and SOQL WHERE, case-sensitive or exact-match case-insensitive, at a small cost in strength). Choose by the field’s use.

Don’t Turn On Shield a Week Before Go-Live

Section titled “Don’t Turn On Shield a Week Before Go-Live”

Here’s the story I tell in class. A project gets to the last week before go-live, someone from security reads the policy, and the request comes in: turn on Shield. Don’t let them turn on Shield a week before go-live.

Encryption changes how fields behave. Reports that filtered on a field stop filtering. A matching rule stops matching. An integration that looked records up by a value can’t find them. A formula or a flow that used the field may need to change. None of that is visible until you test it.

So turn it on early, in a full sandbox, with the real configuration, and test everything that touches the encrypted fields: the reports, the list views, the matching rules, the integrations, the automation. Encryption is an architecture decision, which means it belongs at the start of the design, not the end of the project.

Don’t Weaken Protection for a Bad Requirement

Section titled “Don’t Weaken Protection for a Bad Requirement”

Sometimes the conversation goes: “We need deterministic encryption because everybody searches by this sensitive number.” Maybe. Before agreeing, ask why everybody searches by it, and whether they should.

At Steve Trucking, if the care team finds deliveries by the Recipient’s phone, could they find them by the delivery number on the tracking text instead? If HR looks crew members up by license number, could they use the employee number, and keep the license number for the one compliance check that needs it? Sometimes the requirement is real. Sometimes a process has grown around a sensitive value, and we’re about to weaken a control to keep the process. Don’t only ask how to make the requirement work. Ask: should this requirement exist?

Encrypt the partner’s bank account number, and the care agent who opens the record still sees all of it. Encryption at rest did its job. The exposure is on the screen.

Most people who open that record need the last four digits to confirm they’re looking at the right account, nothing more. That’s a different control: limit what’s displayed, through field-level security and a field that holds only the last four digits, or a component that shows a masked value. Security covers the whole path: stored, retrieved, displayed, copied, exported, integrated and used by an agent. One control rarely covers all of it.

Masking: This Environment Doesn’t Need the Real Value

Section titled “Masking: This Environment Doesn’t Need the Real Value”

Encryption says: protect this value, and let the people and systems who need it recover it. Masking says something stronger: this environment, or this consumer, doesn’t need the real value at all.

The obvious place is the sandbox. Developers need realistic deliveries to test the routing. They don’t need real Recipients’ names, phones and gate codes. We want realistic shape, not real identity. The matrix says it per level: Public and Internal can be copied as they are; Confidential is masked; Restricted never leaves production as a real value. Chapter 5 covered the tooling and a dated change: the Data Mask managed package reaches end of service on 31 December 2026, and Data Mask & Seed is its successor.

And the question comes before the tool: if realistic, made-up data can do the testing, that’s better than masking real data.

The Best Sensitive Data Is Data You Don’t Have

Section titled “The Best Sensitive Data Is Data You Don’t Have”

Security teams spend a lot of time protecting data. Architects should also ask why we’re storing it.

Steve Trucking pays damage credits to Retail Partners. Someone proposes a bank account field on the partner account. My first question isn’t which encryption scheme. It’s: why do we need the account number in Salesforce? The payment provider already holds it. Salesforce can hold the provider’s token and the last four digits, and the payment integration can pay against the token. Now there’s no bank account number in the org to leak, export, copy to a sandbox, show on a screen or hand to an agent.

The same thinking applies to a crew member’s medical certificate. Does Salesforce need the document, or only its expiry date and a “verified” flag, with the document in the HR system that already protects it? Data you don’t collect can’t be leaked from your org. Minimization is a security control too, and often the cheapest one.

And for personal data, “why do we even have it?” isn’t only good architecture. It’s what the privacy laws ask. GDPR says personal data must be “adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed,” and kept in a form that identifies people “for no longer than is necessary” for those purposes (Article 5(1)(c) and (e), Regulation (EU) 2016/679 (opens in a new tab), checked 2026-10-28). California’s law says the same thing in its own words: a business’s “collection, use, retention, and sharing of a consumer’s personal information shall be reasonably necessary and proportionate” to the purposes it was collected for (California Civil Code section 1798.100(c) (opens in a new tab), as amended by the CPRA, checked 2026-10-28).

So at Steve Trucking, every personal field in the design needs a purpose someone can state. The Recipient’s phone: so the crew can call on arrival, and so the care team can find the delivery. The gate code: so the assigned crew can get in, for that delivery, and no longer, which is why it shouldn’t still be sitting on a Work Order years later. A crew member’s medical certificate: required for the job, but the purpose is met by the expiry date and a verified flag. When the purpose can’t be stated, the field shouldn’t be there; when the purpose ends, the data shouldn’t stay. Chapter 5 covered these laws and what they have in common (Privacy Laws). Here’s where they show up in the protection design: the first protection decision for personal data is whether you’re allowed to keep it at all.

One caution on the bank details: a Retail Partner is a company, so its business bank account isn’t personal data under those laws. Minimizing it is still the right security decision. It just isn’t the law asking.

Test knowledge. Know data minimization and storage limitation as privacy principles: GDPR limits personal data to what’s necessary for its purpose and keeps it identifiable no longer than necessary; the CCPA, as amended by the CPRA, requires collection, use, retention and sharing to be reasonably necessary and proportionate. In a design, they show up as fields you don’t create, copies you don’t make and retention you set at design time.

Module 1 introduced three kinds of consumers: humans, applications and agents. The matrix gives applications their own column because their needs often differ from the people’s.

The payment integration needs the token to pay a damage credit; the care agent doesn’t. That’s not a reason to make the field broadly visible. It’s a reason to give that integration’s own integration user exactly that access, audit it, and keep everyone else out. The reverse is just as true: a human seeing a field doesn’t mean every integration should be able to read it. The partner integration from module 1 runs as Redrock’s own integration user, and it has no business reading crew HR records just because some employees can.

This is the new world, and it needs two columns, not one.

The agents column asks what an agent may retrieve and do. It’s a different question from what the human using it may see. An employee might have a good reason to open one sensitive record on a screen. An agent that can search thousands of records and combine sources in milliseconds has a different risk, even when it runs as that same employee. So my position is job-based agent access: each agent gets only the data and the actions its defined job needs, and human access doesn’t automatically mean the same agent access. Module 4 goes deep on this. Here, the classification is where the policy gets written down.

The AI prompts column asks something new: which data may be sent to a large language model at all. Salesforce’s own guidance is clear about what the Einstein Trust Layer does and doesn’t do. It says the Trust Layer “operates on data in motion during inference” and “doesn’t govern data at rest in Salesforce, access controls on grounding sources.” Zero data retention by the model provider “is a contractual commitment in Salesforce agreements with LLM partners, not a technical control you can verify from your org.” And it says to “determine which data classifications can enter LLM inference for your regulatory context” (Salesforce Well-Architected, Trust for the Agentic Enterprise (opens in a new tab), checked 2026-10-28).

That last sentence is the AI prompts column. Salesforce is telling the architect to decide it, level by level. And on masking, the same page says: “Don’t design agents to send full record context to LLM inference assuming PII masking handles everything … send only fields and data the agent requires.” Chapter 3 noted that Salesforce now turns off prompt masking for agents, because it can strip the context an agent needs. So the design can’t depend on it: send fewer fields, and treat masking as the safety net.

At Steve Trucking, the Recipient’s agent that answers “where’s my delivery?” needs the delivery window and status, which are Public. It doesn’t need the Recipient’s phone to answer, and it must never see the gate code. That’s the agents column and the prompts column, filled in for one agent.

Test knowledge. Know that the Einstein Trust Layer protects data in transit to the model (masking, zero data retention by contract, audit), not data at rest or the access rules on grounding sources; that data minimization, sending only the fields the task needs, comes before masking; and that an agent’s access should follow its job, not simply the maximum access of the user running it.

Protect the Value, or Protect the Capability

Section titled “Protect the Value, or Protect the Capability”

Here’s the most useful pattern in this module, and we’ve already used it once. In module 1, only the assigned crew can see the gate code, so we built a controlled door: a component that checks the assignment before it reads the code. The crew never gets field-level access to the gate code. They get the capability to see it for their own delivery.

The same idea works for every consumer. Sometimes a consumer needs the value. Sometimes it only needs an answer derived from the value.

  • The payment integration needs the token to pay. That’s the value, to the one consumer that needs it.
  • The care agent needs to confirm the partner’s account on file. “Ending in 4471” is enough.
  • An agent asked “has this partner’s bank account been verified?” needs a yes or a no. It can call an action, Verify Partner Bank Account, and get verified = true, without ever touching the number.
  • The Recipient’s agent asked “will the crew be able to get in?” needs “access instructions are on file,” not the gate code.

“The agent can’t see it” can mean two very different designs: the agent’s identity can’t retrieve the field at all, or the agent can’t retrieve the raw value but can call an approved action that answers the question. The second is often the better boundary, because the agent can still do its job. Instead of “here’s the secret, please use it responsibly,” the design says: here’s the capability you’re allowed to use.

Protect the value or the capability Three columns. On the right, the protected data: the partner's bank details, held by the payment provider, with Salesforce keeping only a token. On the left, three consumers. The payment integration, which pays a damage credit, gets the token, the value, as the one consumer that needs it; the provider pays against it. A care agent, who confirms the account on file, sees only "ending in 4471", the last four digits. A finance agent, asked whether Redrock's account is verified, calls an action, Verify Partner Bank Account, highlighted, which checks the bank details and returns only "verified, yes". Underneath: give the value only to the consumer that needs the value; everyone else gets the answer. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.50.0", "built": "2026-10-28", "id": "DGM-DA-DS-32", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "cells 0.4.0", "theme": "stevetecharc 1.4.0"} THREE CONSUMERS WHAT EACH ONE GETS THE PROTECTED DATA Payment integration pays a damage credit A care agent confirms the account on file A finance agent asked: is Redrock's account verified? The token the value, to the one consumer that needs it; the provider pays against it Ending in 4471 the last four digits, nothing more Verify Partner Bank Account an action that returns: verified, yes Partner bank details held by the payment provider; Salesforce keeps the token gets sees calls checks Give the value only to the consumer that needs the value. Everyone else gets the answer. HOW TO READ IT the capability: the answer, never the value © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

We classify the gate code Restricted. Then the nightly integration copies delivery data to Redrock’s warehouse. What is the gate code there? Still Restricted. Copied into Data 360 for analytics? Still Restricted. Into a sandbox? Still Restricted, which is why it’s masked. Into a search index an agent uses for grounding? Still Restricted.

The classification belongs to the information, not to the Salesforce field where someone set the picklist. Moving the data doesn’t reset its sensitivity. So every arrow on the integration landscape that carries a Restricted field needs an answer: does it need to carry that field at all, and if so, what protects it at the other end? When the data passes through middleware or another system along the way, encrypt the data itself, not only the connection. A secure channel protects the data while it moves. It doesn’t protect it while it sits in the middle.

The last trap is what someone can work out.

Steve Trucking never exposes a Recipient’s home security details. But a delivery history that shows “delivered Tuesdays between 2 and 4 p.m., left at the back door” tells you when nobody is home and where the door is. No single field is Restricted. Together they reveal something that should be.

The same happens with aggregates, with a formula that exposes part of a protected field, with three Internal fields an agent can combine. Agents make this sharper, because combining sources is exactly what they’re good at. So classification can’t stop at “which field has the label.” Ask what the fields reveal together, and classify the combination, the report, the export or the index that brings them together.

The policy says what should happen. Testing proves what does. Take the three users from module 2, one who should see the data, one who shouldn’t and the one who set it up, and add the other consumers:

  • Can the crew member who isn’t assigned see the gate code? On the page, in a report, in a list view, in global search?
  • Can the partner’s integration user retrieve it?
  • Does the sandbox have real values after the last refresh?
  • Can the Recipient’s agent retrieve it directly? Through a related record? By calling an action that returns more than it should?
  • Does the field still work where it must: the license lookup, the duplicate matching, the reports that filter on it?

Trust, but verify. A matrix nobody tests is the same as a label nobody enforces.

  • How many levels the organization uses, and what each one means in controls, not just in words.
  • The protection matrix: for each level, who sees it, encryption, outside production, applications, agents, AI prompts and audit.
  • Which fields are encrypted, with which Shield layer, and which scheme, decided by the field’s use, and tested early.
  • Where masking or minimization beats protection, including data we decide not to store, and a stated purpose for every personal field, as the privacy laws require.
  • Which consumers get the value and which get only a capability, through a controlled action.
  • How classification travels with data into integrations, analytics, sandboxes and AI grounding, and what derived data reveals.

Beyond the exam: the agents and AI prompts columns are new, and most organizations haven’t filled them in yet. The architect who brings a matrix with those two columns to the first agent design meeting changes the conversation from “can we turn it on?” to “which data may it use, and for what job?” Module 4 takes that further.

Classification Should Change the Architecture

Section titled “Classification Should Change the Architecture”

Classification isn’t documentation we add after the model is built. If something is Restricted, fewer people see it; maybe it moves to its own object; maybe it’s encrypted; it’s masked outside production; maybe it doesn’t go downstream; maybe an integration gets it while people don’t; maybe an agent gets an action instead of the value; and maybe we decide not to store it at all.

So don’t stop at “what classification is this field?” Ask: what are we going to do differently because of it? Classify, then protect.