Chapter 4 of 6
Decisions and stop conditions#
Scope and ownership#
Record one target scope: one-approved-fabric-ai-grounding-lakehouse. The lakehouse, workspace, tenant, AI consumer group, restricted group, Purview label, DLP policy, and delivery owner must all refer to that same scope.
Stop if the workspace is production, the lakehouse is shared with other grounding projects without owner approval, or the Fabric administrator cannot confirm the current tenant and item.
Tenant setting baseline#
The baseline covers the Fabric Copilot and AI tenant settings group. The Fabric administrator checks it before applying the OneLake role.
Stop if any setting differs from the recorded baseline and the baseline owner has not approved the change. Also stop if the customer wants to enable OpenAI as a Microsoft subprocessor, cross-geo processing, cross-geo storage, standalone Copilot, or Foundry observability export without a named owner decision.
OneLake role and DefaultReader#
Create one role named AiGroundingConsumerRead. It grants Read on the approved gold table path, uses the row predicate and allowed columns in the artifact, and includes one Microsoft Entra group: the AI consumer group.
Before saving the role, inspect DefaultReader. Remove the restricted consumer group and any other principal that would make the blocked-path check meaningless.
Stop if a consumer identity is Workspace Admin, Member, or Contributor, if the role includes a user instead of the approved group, or if the role payload would replace unrelated roles because the current ETag was not reviewed.
Label and DLP mode#
Apply the selected sensitivity label to the Fabric item through the approved Fabric or Purview path. Then create a custom Purview DLP policy for the Fabric location in simulation mode. Use the selected label as the condition and start with policy tips and alerts.
Stop if the label is unpublished for the relevant operators, if the DLP location is broader than the approved workspaces, if the policy is set to full enforcement, or if the Purview summary does not match the record.
Access checks#
The permitted and restricted checks use the same lakehouse, table, label, DLP policy, and consumer path. The only difference is the identity.
Stop if the restricted identity can read the gold data path, if the permitted identity cannot read the approved path, or if either check uses a different data path.
Field reference#
| Artifact field | What it means |
|---|---|
implementationSession | Must be optional-module-fabric-purview-ai-data-governance in every artifact. |
targetScope | Must be one-approved-fabric-ai-grounding-lakehouse in every artifact and script call. |
watchList[].title | The Fabric tenant setting title returned by the Admin REST API. |
rolePayload | The REST body for PUT /workspaces/{workspaceId}/items/{itemId}/dataAccessRoles. |
currentDataAccessRoleEtag | The ETag reviewed before applying the role. Send it in If-Match. |
restrictedPrincipalsRemovedFromDefaultReader | The restricted principal review that makes the blocked-path check meaningful. |
dlpPolicy.mode | Must stay simulation for this module. Enforcement needs a later Purview change. |
checks[].name | Must include intended-path and blocked-path. |