Control 1.14: Data Minimization and Agent Scope Control
Overview
Control ID: 1.14 Control Name: Data Minimization and Agent Scope Control Pillar: Security Regulatory Reference: GLBA 501(b), SEC Reg S-P, FINRA 4511, CCPA §1798.100 Setup Time: 1-2 hours
Purpose
Data minimization ensures that Copilot Studio agents access only the data strictly necessary to perform their intended functions—nothing more. This control implements the principle of least privilege at the data layer, preventing agents from accumulating excessive permissions or accessing sensitive financial information beyond their operational requirements. In financial services, over-permissioned agents represent significant regulatory and security risks.
This control addresses key FSI requirements:
- Principle of Least Privilege: Agents should have minimum necessary access
- Scope Creep Prevention: Regular audits to identify permission drift
- Data Access Justification: Document business need for each data source
- Regulatory Minimization: US privacy expectations (e.g., CCPA) require collecting only necessary personal information
Prerequisites
Primary Owner Admin Role: Power Platform Admin Supporting Roles: SharePoint Admin, Purview Compliance Admin
Required Licenses
| License | Purpose |
|---|---|
| Power Platform per-user or per-app | Agent development access |
| Microsoft 365 E5 or E5 Compliance | Advanced governance features |
| Microsoft Purview (any tier) | Data classification and access auditing |
Required Permissions
| Permission | Scope | Purpose |
|---|---|---|
| Power Platform Admin | Tenant-wide | Review and modify agent configurations |
| Environment Admin | Production environments | Manage environment-level settings |
| Global Reader | Entra ID | Access review and permission auditing |
| Compliance Administrator | Microsoft Purview | Review data access patterns |
| SharePoint Admin | SharePoint Online | Manage site access permissions |
Dependencies
- Control 1.2: Agent Registry - Agent inventory
- Control 1.3: SharePoint Content Governance - Content access
- Control 1.4: Advanced Connector Policies - Connector restrictions
- Control 1.18: RBAC - Role assignments
Pre-Setup Checklist
- [ ] Complete agent inventory with data source mapping
- [ ] Document business justification for each agent's data access
- [ ] Identify data classification for all connected sources
- [ ] Establish data access review schedule
- [ ] Define scope creep alerting thresholds
Governance Levels
Baseline (Level 1)
Restrict agent access to minimum necessary data sources; document data requirements per agent.
Recommended (Level 2-3)
Environment-level access controls; quarterly scope reviews; automated scope validation.
Regulated/High-Risk (Level 4)
Mandatory minimal scope; legal review required; continuous monitoring and alerting for scope violations.
Setup & Configuration
Step 1: Inventory Agent Data Access
Portal Path: Power Platform Admin Center → Environments → [Environment] → Resources → Copilot Studio agents
- Navigate to Power Platform Admin Center (admin.powerplatform.microsoft.com)
- Select Environments from the left navigation
- For each production environment:
- Click the environment name
- Navigate to Resources → Copilot Studio agents
- Export agent list for analysis
- For each agent, document:
- Connected data sources (SharePoint, Dataverse, external APIs)
- Connector permissions and OAuth scopes
- Knowledge sources (documents, websites, files)
- User context and impersonation settings
- Create data access matrix mapping agents to data sources
Step 2: Establish Data Access Justification Framework
Create Data Access Request Process:
- Business Justification Template:
- Agent Name and ID
- Data Source name and type
- Data Classification (Public/Internal/Confidential/Restricted)
- Business Need (specific use case)
- Minimum Data Required (specific fields/tables)
- Approver signatures (Business Owner + Security)
-
Quarterly review date
-
Approval Workflow:
- Tier 1 agents: Self-service with documentation
- Tier 2 agents: Manager + Data Owner approval
- Tier 3 agents: CISO + Compliance + Data Owner approval
Step 3: Configure Connector Scope Restrictions
Portal Path: Power Platform Admin Center → Data policies → [Policy Name] → Connectors
- Navigate to Power Platform Admin Center
- Select Data policies from left navigation
- For each DLP policy:
- Click Edit policy → Connectors
- Review each connector's classification
- Click connector → Configure connector
- Restrict OAuth Scopes where available:
- SharePoint: Limit to specific site collections
- Microsoft Graph: Restrict to specific API permissions
- Dataverse: Limit to specific tables
- Block unnecessary connectors - remove all not explicitly required
Step 4: Implement SharePoint Content Restrictions
Portal Path: SharePoint Admin Center → Sites → Active sites → [Site] → Permissions
- Navigate to SharePoint Admin Center (admin.sharepoint.com)
- Select Sites → Active sites
- For each site used by agents:
- Click site → Membership tab
- Review all groups and permissions
- Remove agent service accounts from unnecessary sites
- Apply Site-Level Restrictions:
- Use SharePoint groups with minimal permissions
- Create dedicated "Agent Access" groups
- Enable Limited Access where full control isn't needed
- Configure Information Access Governance (IAG) for Restricted Discovery
Step 5: Configure Knowledge Source Minimization
Portal Path: Copilot Studio → [Agent] → Knowledge → Manage sources
- Open Copilot Studio (copilotstudio.microsoft.com)
- Select the agent to configure
- Navigate to Knowledge → Manage sources
- For each knowledge source:
- Review content scope (entire site vs. specific folders)
- Narrow scope to minimum required content
- Remove outdated or unnecessary sources
- Best Practices:
- Use specific document libraries instead of entire sites
- Exclude archives and historical data
- Regular review and cleanup of knowledge sources
Step 6: Enable Data Access Monitoring
Portal Path: Microsoft Purview → Audit → Audit search
- Navigate to Microsoft Purview (compliance.microsoft.com)
- Select Audit from the left navigation
- Configure audit search for agent activities:
- Activities: FileAccessed, FileDownloaded, SearchQueryPerformed
- Users: Agent service accounts
- Date range: Last 30 days
- Create Saved Searches:
- "Agent Data Access - All"
- "Agent Data Access - Sensitive Content"
- "Agent Scope Changes"
Step 7: Implement Automated Scope Alerts
Portal Path: Microsoft Purview → Alerts → Alert policies
- Navigate to Microsoft Purview → Alerts
- Click + Create alert policy
- Configure scope creep alerts:
- Name: "Agent Data Access Scope Expansion"
- Severity: Medium for Tier 2, High for Tier 3
- Activity Conditions:
- Agent accesses new SharePoint site
- Agent connector configuration changes
- New knowledge source added
- Set appropriate recipients
Step 8: Establish Quarterly Data Access Reviews
Create Review Process:
- Generate Access Report:
- Export agent-to-data-source mapping
- Include access frequency and volume
-
Flag new data sources since last review
-
Review Criteria:
- Is data access still required?
- Has scope expanded unnecessarily?
-
Are there less-privileged alternatives?
-
Review Actions:
- Remove unnecessary permissions
- Document continued access justifications
- Update agent inventory and risk classification
PowerShell Configuration
Audit Agent Connector Usage
# Connect to Power Platform
Connect-PowerApps -TenantId "your-tenant-id"
# Get all environments
$environments = Get-AdminPowerAppEnvironment
# Initialize connector usage report
$connectorReport = @()
foreach ($env in $environments) {
Write-Host "Analyzing environment: $($env.DisplayName)" -ForegroundColor Cyan
# Get connections in environment
$connections = Get-AdminPowerAppConnections -EnvironmentName $env.EnvironmentName
foreach ($conn in $connections) {
$connectorReport += [PSCustomObject]@{
Environment = $env.DisplayName
ConnectionName = $conn.DisplayName
ConnectorType = $conn.ConnectorName
CreatedDate = $conn.CreatedTime
LastModified = $conn.LastModifiedTime
}
}
}
# Export connector usage report
$connectorReport | Export-Csv -Path "AgentConnectorUsage_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
# Identify potentially over-permissioned connections
$highRiskConnectors = @("commondataservice", "sharepointonline", "sql", "azureblob")
$overPermissioned = $connectorReport | Where-Object {
$highRiskConnectors -contains $_.ConnectorType
}
Write-Host "`n=== Connections with High-Risk Connectors ===" -ForegroundColor Yellow
$overPermissioned | Format-Table Environment, ConnectionName, ConnectorType -AutoSize
Audit SharePoint Site Access
# Connect to SharePoint Online and Exchange Online
Connect-SPOService -Url "https://yourtenant-admin.sharepoint.com"
Connect-ExchangeOnline
# Define agent service account
$agentServiceAccount = "copilot-agent-service@yourtenant.onmicrosoft.com"
# Search for agent SharePoint access (last 30 days)
$startDate = (Get-Date).AddDays(-30)
$endDate = Get-Date
$siteAccess = Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate `
-UserIds $agentServiceAccount `
-Operations "FileAccessed","FileDownloaded","FileViewed" `
-ResultSize 5000
# Parse and summarize by site
$siteSummary = $siteAccess | ForEach-Object {
$auditData = $_.AuditData | ConvertFrom-Json
[PSCustomObject]@{
Site = $auditData.SiteUrl
}
} | Group-Object Site | Select-Object @{N='Site';E={$_.Name}}, @{N='AccessCount';E={$_.Count}}
Write-Host "=== Agent Site Access Summary ===" -ForegroundColor Cyan
$siteSummary | Sort-Object AccessCount -Descending | Format-Table -AutoSize
# Flag sites with excessive access
$threshold = 1000
$excessiveSites = $siteSummary | Where-Object { $_.AccessCount -gt $threshold }
if ($excessiveSites) {
Write-Host "WARNING: Sites with excessive agent access:" -ForegroundColor Red
$excessiveSites | Format-Table -AutoSize
}
Generate Data Minimization Report
# Data Minimization Assessment Script
param(
[string]$OutputPath = ".\DataMinimizationReport_$(Get-Date -Format 'yyyyMMdd').csv"
)
# Get production environments
$environments = Get-AdminPowerAppEnvironment | Where-Object {
$_.EnvironmentType -eq "Production"
}
$report = @()
foreach ($env in $environments) {
$connections = Get-AdminPowerAppConnections -EnvironmentName $env.EnvironmentName
foreach ($conn in $connections) {
$highRisk = @("commondataservice", "sql", "azureblob", "http", "sftp") -contains $conn.ConnectorName
$report += [PSCustomObject]@{
Environment = $env.DisplayName
ConnectionName = $conn.DisplayName
ConnectorType = $conn.ConnectorName
HighRisk = $highRisk
ReviewRequired = $highRisk
Created = $conn.CreatedTime
}
}
}
$report | Export-Csv -Path $OutputPath -NoTypeInformation
Write-Host "Report exported to: $OutputPath" -ForegroundColor Green
# Summary
Write-Host "`n=== Summary ===" -ForegroundColor Cyan
Write-Host "Total Connections: $($report.Count)"
Write-Host "High-Risk Connections: $(($report | Where-Object HighRisk).Count)"
Financial Sector Considerations
Regulatory Alignment
| Regulation | Requirement | Data Minimization Implementation |
|---|---|---|
| GLBA 501(b) | Safeguard customer information | Limit agent access to NPI to minimum necessary |
| SEC Reg S-P | Privacy of consumer financial info | Document data access justification per agent |
| FINRA 4511 | Books and records | Audit trail for data access decisions |
| CCPA §1798.100 | Collect only necessary personal info | Quarterly review of data collection scope |
Zone-Specific Configuration
| Configuration | Zone 1 (Personal Productivity) | Zone 2 (Team Collaboration) | Zone 3 (Enterprise Managed) |
|---|---|---|---|
| Data Access Review | Annual | Quarterly | Monthly |
| Connector Restrictions | Standard DLP | Enhanced DLP | Strict allowlist |
| Scope Change Approval | Self-service | Manager | CISO |
| Knowledge Source Limit | 10 sources | 20 sources | Unlimited + justification |
| Access Monitoring | Basic logging | Weekly audit | Real-time |
FSI Use Case Example
Scenario: Customer Service Agent scope reduction
Before Minimization:
- Agent had read/write access to entire CRM
- Could access all customer records globally
- Connected to legacy order database with full SELECT
After Minimization:
- Read-only access to CRM
- Limited to customers in agent's assigned region
- Order database restricted to recent orders only
- Removed access to archived records
Regulatory Benefit: Reduced GLBA/Reg S-P exposure by 70%, clear audit trail for examiner questions
Verification & Testing
Verification Steps
- Connector Audit:
- [ ] Export list of all agent connectors
- [ ] Verify each has documented business justification
- [ ] Confirm no unused connectors remain
-
[ ] Validate OAuth scopes are minimum necessary
-
Knowledge Source Review:
- [ ] Document all knowledge sources per agent
- [ ] Verify sources are scoped to specific folders
-
[ ] Confirm sensitive content is excluded
-
Permission Verification:
- [ ] Review SharePoint group memberships
- [ ] Verify Dataverse permissions are row-filtered
-
[ ] Test access denials for removed permissions
-
Audit Trail Validation:
- [ ] Verify data access logging enabled
- [ ] Confirm access justifications documented
- [ ] Validate alert policies functioning
Compliance Checklist
- [ ] All agents have documented data access justification
- [ ] Quarterly access review process established
- [ ] Scope creep alerts configured and tested
- [ ] Data minimization policy published
- [ ] High-risk agents reviewed monthly
Troubleshooting & Validation
Issue 1: Agent Functionality Broken After Permission Removal
Symptoms: Agent errors, failed connector calls
Resolution:
- Review agent error logs in Copilot Studio
- Identify specific permission causing failure
- Evaluate minimum alternative permission
- Restore with documentation if required
- Update data access justification
Issue 2: Unable to Scope Connector Permissions
Symptoms: Connector doesn't support granular control
Resolution:
- Check connector documentation for scope options
- Use Power Automate flow as intermediary
- Implement row-level filtering in data source
- Use sensitivity labels to restrict content
- Document compensating control
Issue 3: Scope Creep Alert False Positives
Symptoms: Excessive alerts for legitimate access
Resolution:
- Review and adjust alert thresholds
- Create allowlist for approved patterns
- Tune time-based conditions
- Document tuning decisions
Issue 4: Quarterly Review Bottleneck
Symptoms: Reviews backlogged
Resolution:
- Prioritize Tier 3 agents
- Automate report generation
- Delegate Tier 1 reviews to owners
- Consider GRC tool integration
Additional Resources
- Data minimization in Microsoft 365
- Power Platform DLP policies
- Configure connector permissions
- SharePoint permissions
- Microsoft Purview audit logs
Related Controls
| Control ID | Control Name | Relationship |
|---|---|---|
| 1.2 | Agent Registry | Inventory for data mapping |
| 1.3 | SharePoint Governance | Content access restrictions |
| 1.4 | Advanced Connector Policies | Connector restrictions |
| 1.5 | DLP and Sensitivity Labels | Data classification |
| 1.7 | Audit Logging | Access monitoring |
| 1.18 | RBAC | Role-based permissions |
Support & Questions
For implementation support or questions about this control, contact:
- AI Governance Lead (governance direction)
- Compliance Officer (regulatory requirements)
- Technical Implementation Team (platform setup)
Updated: Dec 2025
Version: v1.0 Beta (Dec 2025)
UI Verification Status: ❌ Needs verification