đ Security and Compliance Guide¶
Last Updated: 2025-01-21 | Version: 1.0.0
đ Table of Contents¶
- đĄī¸ Security Architecture
- đ¤ Identity and Access Management
- đ Data Protection
- đ Repository Security
- đ Network Security
- đ Compliance Requirements
- đ Audit and Monitoring
- đ¨ Incident Response
- â Security Checklists
- đ References
đĄī¸ Security Architecture¶
Microsoft Fabric Security Overview¶
Microsoft Fabric provides comprehensive security features built on Azure's enterprise-grade security foundation:
Source: Security in Microsoft Fabric
Defense in Depth¶
Our security architecture implements multiple layers of protection:
flowchart TB
subgraph L1["đ IDENTITY LAYER"]
A1["Entra ID"]
A2["Conditional Access"]
A3["MFA"]
A4["PIM"]
A5["RBAC"]
end
subgraph L2["đ NETWORK LAYER"]
B1["VNet"]
B2["NSG"]
B3["Private Endpoints"]
B4["Firewall"]
B5["DDoS Protection"]
end
subgraph L3["đą APPLICATION LAYER"]
C1["Fabric Workspace Security"]
C2["Row-Level Security"]
C3["Object-Level Security"]
end
subgraph L4["đž DATA LAYER"]
D1["Encryption at Rest"]
D2["Encryption in Transit"]
D3["Key Vault"]
D4["Purview"]
end
subgraph L5["đĄ MONITORING LAYER"]
E1["Azure Monitor"]
E2["Defender for Cloud"]
E3["Sentinel"]
E4["Audit Logs"]
end
L1 --> L2 --> L3 --> L4 --> L5 Security Control Matrix¶
| Layer | Controls | Tools |
|---|---|---|
| Identity | Authentication, Authorization | Microsoft Entra ID, MFA, PIM |
| Network | Segmentation, Filtering | VNet, NSG, Private Endpoints |
| Application | Access Control | Workspace Security, RLS |
| Data | Encryption, Classification | Key Vault, Purview |
| Monitoring | Detection, Response | Defender, Sentinel |
Security Requirements by Environment¶
The following state diagram shows how security controls progressively increase from development to production:
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#2196F3','primaryTextColor':'#fff','primaryBorderColor':'#1976D2','lineColor':'#FF9800','secondaryColor':'#4CAF50','tertiaryColor':'#F44336'}}}%%
stateDiagram-v2
[*] --> Development
Development --> Test: Code Review<br/>â Unit Tests Pass
Test --> Staging: Integration Tests<br/>â Security Scan
Staging --> Production: Penetration Test<br/>â Compliance Audit
state Development {
[*] --> DevControls
DevControls: đĩ Basic Controls
DevControls: âĸ Local Authentication
DevControls: âĸ Test Data Only
DevControls: âĸ No Encryption Required
DevControls: âĸ Limited Logging
}
state Test {
[*] --> TestControls
TestControls: đĄ Enhanced Controls
TestControls: âĸ Entra ID Auth
TestControls: âĸ Masked PII
TestControls: âĸ TLS 1.2+
TestControls: âĸ Audit Logging Enabled
TestControls: âĸ RBAC Basic
}
state Staging {
[*] --> StagingControls
StagingControls: đ Production-Like Controls
StagingControls: âĸ Entra ID + MFA
StagingControls: âĸ Full Encryption (Rest & Transit)
StagingControls: âĸ RLS Configured
StagingControls: âĸ Private Endpoints
StagingControls: âĸ Comprehensive Monitoring
StagingControls: âĸ Security Alerts Active
}
state Production {
[*] --> ProdControls
ProdControls: đ´ Maximum Controls
ProdControls: âĸ MFA + Conditional Access
ProdControls: âĸ Customer-Managed Keys
ProdControls: âĸ Full RBAC + RLS + OLS
ProdControls: âĸ Private Endpoints Required
ProdControls: âĸ Defender for Cloud
ProdControls: âĸ Sentinel SIEM
ProdControls: âĸ 24/7 SOC Monitoring
ProdControls: âĸ Compliance Validation
}
Production --> [*]: Decommission<br/>â Data Retention<br/>â Secure Deletion
note right of Development
Low security posture
Fast iteration
end note
note right of Production
Maximum security posture
Strict change control
end note đ¤ Identity and Access Management¶
Microsoft Entra ID Integration¶
| Feature | Configuration | Status |
|---|---|---|
| Authentication | Microsoft Entra ID SSO | Required |
| MFA | Required for all users | Required |
| Conditional Access | Location + device compliance | Recommended |
| Session timeout | 8 hours (configurable) | Default |
Authentication & Authorization Flow¶
The following sequence diagram illustrates how users authenticate and access Fabric resources:
%%{init: {'theme':'base', 'themeVariables': { 'actorBkg':'#2196F3','actorBorder':'#1976D2','actorTextColor':'#fff','signalColor':'#FF9800','signalTextColor':'#000','labelBoxBkgColor':'#4CAF50','labelBoxBorderColor':'#388E3C','labelTextColor':'#fff','loopTextColor':'#F44336','activationBkgColor':'#FFF3E0','activationBorderColor':'#FF9800','sequenceNumberColor':'#fff'}}}%%
sequenceDiagram
autonumber
actor User as đ¤ User
participant Browser as đ Browser
participant FabricUI as đ Fabric Portal
participant AAD as đ Entra ID
participant CA as đĄī¸ Conditional Access
participant MFA as đą MFA Service
participant Fabric as ⥠Fabric API
participant KV as đ Key Vault
participant Data as đž Data Lake
rect rgb(33, 150, 243, 0.1)
Note over User,AAD: Authentication Phase
User->>Browser: Navigate to Fabric
Browser->>FabricUI: Request access
FabricUI->>AAD: Redirect to login
AAD->>User: Present login page
User->>AAD: Submit credentials
AAD->>CA: Evaluate policies
CA->>CA: Check location, device,<br/>risk level
alt Conditional Access Requires MFA
CA->>MFA: Request MFA challenge
MFA->>User: Send push notification
User->>MFA: Approve
MFA-->>CA: MFA verified â
else Low Risk / Trusted Location
CA-->>AAD: Policy satisfied â
end
AAD->>AAD: Generate access token<br/>(JWT with claims)
AAD-->>Browser: Return token
end
rect rgb(76, 175, 80, 0.1)
Note over Browser,Fabric: Authorization Phase
Browser->>FabricUI: Access with token
FabricUI->>Fabric: Request data<br/>(Bearer token)
Fabric->>Fabric: Validate token signature
Fabric->>Fabric: Extract user claims<br/>(UPN, roles, groups)
Fabric->>Fabric: Check RBAC permissions<br/>(Workspace role)
alt User Has Required Role
Fabric->>Fabric: Apply RLS filters<br/>Based on user identity
Note over Fabric: Filter: Region = User.Region
else Insufficient Permissions
Fabric-->>FabricUI: 403 Forbidden â
FabricUI-->>User: Access Denied
end
end
rect rgb(255, 152, 0, 0.1)
Note over Fabric,Data: Data Access Phase
Fabric->>KV: Request encryption keys<br/>(Managed Identity)
KV->>KV: Verify identity
KV-->>Fabric: Return CMK â
Fabric->>Data: Query filtered data<br/>(TLS 1.2+)
Data->>Data: Decrypt using CMK
Data->>Data: Apply row-level filters
Data-->>Fabric: Return filtered results
Fabric->>Fabric: Log audit event<br/>(User, Query, Timestamp)
Fabric-->>FabricUI: Return data â
FabricUI-->>User: Display report đ
end
Note over User,Data: đ All communication encrypted with TLS 1.2+<br/>đ Tokens expire after 8 hours<br/>đ All access logged for audit đ Security Note: This flow implements defense-in-depth with multiple validation points: token signature, RBAC permissions, and row-level security filters.
Role-Based Access Control (RBAC)¶
Fabric implements a layered permission model that controls access at the workspace, item, and data levels:
Source: Permission model in Fabric
Fabric Workspace Roles¶
| Role | Permissions | Typical Users |
|---|---|---|
| đ´ Admin | Full control | Workspace owners |
| đ Member | Edit all items | Data engineers |
| đĄ Contributor | Create/edit (no share) | Developers |
| đĸ Viewer | Read-only | Business users |
đ Click to expand: Custom RBAC & RLS Examples
#### Custom RBAC Example{
"Name": "Fabric Data Engineer",
"Description": "Can manage data items but not workspace settings",
"AssignableScopes": ["/subscriptions/{sub-id}"],
"Permissions": [{
"Actions": [
"Microsoft.Fabric/capacities/read",
"Microsoft.Fabric/workspaces/read",
"Microsoft.Fabric/workspaces/items/*"
],
"NotActions": [
"Microsoft.Fabric/workspaces/delete",
"Microsoft.Fabric/workspaces/write"
]
}]
}
đ Data Protection¶
Encryption Standards¶
| Data State | Method | Key Management |
|---|---|---|
| đ At Rest | AES-256 | Microsoft-managed or CMK |
| đ In Transit | TLS 1.2+ | Azure-managed |
| đĄī¸ In Use | Confidential computing (optional) | Azure Key Vault |
Customer-Managed Keys (CMK)¶
// Key Vault with CMK for Fabric
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' = {
name: keyVaultName
properties: {
enablePurgeProtection: true
enableSoftDelete: true
softDeleteRetentionInDays: 90
sku: {
family: 'A'
name: 'premium' // Required for HSM-backed keys
}
}
}
resource encryptionKey 'Microsoft.KeyVault/vaults/keys@2023-07-01' = {
parent: keyVault
name: 'fabric-encryption-key'
properties: {
kty: 'RSA'
keySize: 4096
keyOps: ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']
}
}
Data Classification¶
| Classification | Icon | Examples | Controls |
|---|---|---|---|
| Highly Confidential | đ´ | SSN, Full card numbers, Bank accounts | Encrypted, masked, audit logged |
| Confidential | đ | Player PII, Win/loss records | RBAC, RLS, no export |
| Internal | đĄ | Operational metrics, KPIs | Standard RBAC |
| Public | đĸ | Aggregated reports | Open access |
â ī¸ Warning: Never store unmasked PII in the Gold layer. All sensitive data must be encrypted or hashed.
Data Classification Decision Tree¶
Use this flowchart to determine the appropriate classification level for your data:
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#2196F3','primaryTextColor':'#fff','primaryBorderColor':'#1976D2','lineColor':'#424242','secondaryColor':'#4CAF50','tertiaryColor':'#FF9800','clusterBkg':'#f5f5f5','edgeLabelBackground':'#fff'}}}%%
flowchart TD
Start([đ New Data Element]) --> Q1{Contains PII?}
Q1 -->|Yes| Q2{Contains<br/>Regulated PII?}
Q1 -->|No| Q3{Business<br/>Sensitive?}
Q2 -->|Yes<br/>SSN, Card Numbers,<br/>Bank Accounts| Restricted[đ´ RESTRICTED/PII<br/>ââââââââââââââââ<br/>â Customer-Managed Keys<br/>â Field-level encryption<br/>â Masking in all reports<br/>â No export allowed<br/>â Full audit logging<br/>â Data loss prevention<br/>ââââââââââââââââ<br/>Examples:<br/>âĸ Social Security Numbers<br/>âĸ Credit Card Numbers<br/>âĸ Bank Account Numbers<br/>âĸ Biometric Data]
Q2 -->|No<br/>Names, Emails,<br/>Player IDs| Q4{Required for<br/>Business Operations?}
Q4 -->|Yes| Confidential[đ CONFIDENTIAL<br/>ââââââââââââââââ<br/>â RBAC enforcement<br/>â Row-level security<br/>â TLS encryption in transit<br/>â Export restrictions<br/>â Audit logging<br/>ââââââââââââââââ<br/>Examples:<br/>âĸ Player Name + DOB<br/>âĸ Win/Loss Records<br/>âĸ Contact Information<br/>âĸ Transaction History]
Q4 -->|No| Q5{Can be<br/>Publicly Shared?}
Q3 -->|Yes| Q6{Competitive<br/>Advantage?}
Q3 -->|No| Q5
Q6 -->|Yes| Confidential
Q6 -->|No| Internal[đĄ INTERNAL<br/>ââââââââââââââââ<br/>â Standard RBAC<br/>â Employee access only<br/>â TLS encryption<br/>ââââââââââââââââ<br/>Examples:<br/>âĸ Operational Metrics<br/>âĸ Internal KPIs<br/>âĸ Team Dashboards<br/>âĸ Aggregated Stats]
Q5 -->|Yes| Public[đĸ PUBLIC<br/>ââââââââââââââââ<br/>â No restrictions<br/>â Open access<br/>ââââââââââââââââ<br/>Examples:<br/>âĸ Marketing Materials<br/>âĸ Public Reports<br/>âĸ Anonymous Analytics<br/>âĸ General Statistics]
Q5 -->|No| Internal
Restricted --> Actions1[đ Apply Controls]
Confidential --> Actions2[đ Apply Controls]
Internal --> Actions3[đ Apply Controls]
Public --> Actions4[â
Publish]
Actions1 --> Labels1[đˇī¸ Tag in Purview:<br/>microsoft.personal.data<br/>microsoft.security.restricted]
Actions2 --> Labels2[đˇī¸ Tag in Purview:<br/>microsoft.security.confidential]
Actions3 --> Labels3[đˇī¸ Tag in Purview:<br/>microsoft.security.internal]
Actions4 --> Labels4[đˇī¸ Tag in Purview:<br/>microsoft.security.public]
style Restricted fill:#F44336,stroke:#C62828,color:#fff,stroke-width:3px
style Confidential fill:#FF9800,stroke:#E65100,color:#fff,stroke-width:3px
style Internal fill:#FFC107,stroke:#F57F17,color:#000,stroke-width:3px
style Public fill:#4CAF50,stroke:#2E7D32,color:#fff,stroke-width:3px
style Start fill:#2196F3,stroke:#1976D2,color:#fff,stroke-width:2px
style Q1 fill:#E3F2FD,stroke:#1976D2,color:#000
style Q2 fill:#E3F2FD,stroke:#1976D2,color:#000
style Q3 fill:#E3F2FD,stroke:#1976D2,color:#000
style Q4 fill:#E3F2FD,stroke:#1976D2,color:#000
style Q5 fill:#E3F2FD,stroke:#1976D2,color:#000
style Q6 fill:#E3F2FD,stroke:#1976D2,color:#000
style Labels1 fill:#FFEBEE,stroke:#C62828,color:#000
style Labels2 fill:#FFF3E0,stroke:#E65100,color:#000
style Labels3 fill:#FFFDE7,stroke:#F57F17,color:#000
style Labels4 fill:#E8F5E9,stroke:#2E7D32,color:#000 đĄ Best Practice: When in doubt, classify data at a higher security level. You can always downgrade classification with approval, but exposing sensitive data cannot be undone.
PII Handling¶
# Example: PII masking in Silver layer
from pyspark.sql.functions import sha2, concat, lit, regexp_replace
def mask_pii(df):
return df \
.withColumn("ssn_hash", sha2(concat(col("ssn"), lit(SALT)), 256)) \
.withColumn("ssn_masked", lit("XXX-XX-") + col("ssn").substr(-4, 4)) \
.withColumn("card_masked",
concat(lit("****-****-****-"), col("card_number").substr(-4, 4))) \
.drop("ssn", "card_number")
đ Repository Security¶
Preventing Secret Leaks¶
This repository implements multiple layers of protection to prevent accidental commits of sensitive data:
| Protection Layer | Implementation | Status |
|---|---|---|
.gitignore | Comprehensive patterns for secrets, keys, credentials | â Active |
| Pre-commit Hook | Scans staged files for high-risk patterns | â Available |
| Sample Files | .env.sample with placeholders only | â In Use |
| PII Masking | All sample data uses hashed/masked PII | â Verified |
Enabling the Pre-Commit Hook¶
# Configure Git to use the repository's hooks
git config core.hooksPath .githooks
# Verify it's enabled
git config --get core.hooksPath
đ Click to expand: Pre-commit Hook Block/Warn Lists
### What Gets Blocked The pre-commit hook will **block commits** containing: | Category | Examples | |----------|----------| | đ **Azure Keys** | Storage account keys, SAS tokens | | đ **Cloud Credentials** | AWS access keys, GCP service accounts | | đ **API Keys** | Any `api_key=`, `apikey:` patterns | | đ **Private Keys** | PEM, PPK, RSA private keys | | đ **Tokens** | JWT tokens, GitHub tokens, Slack tokens | | đ **Connection Strings** | Strings with embedded passwords | ### What Gets Warned The hook will **warn** (but not block) for: | Category | Notes | |----------|-------| | â ī¸ **SSN Patterns** | In code files (sample-data CSV is excluded) | | â ī¸ **Credit Cards** | 16-digit patterns | | â ī¸ **Email Addresses** | In Python files (docs excluded) | ### Files Ignored by Security Scans - Documentation files (`*.md`) - Sample/example templates (`*.sample`, `*.example`) - Test files (`test_*.py`, `conftest.py`) - Sample data directory (`sample-data/`)Best Practices¶
â DO: - Use
.envfiles for local secrets (gitignored) - Store production secrets in Azure Key Vault - Use managed identities for Azure authentication - Mask all PII in sample/test data - Enable the pre-commit hook for all contributorsâ DON'T: - Commit real credentials, even "temporarily" - Store secrets in code comments - Use
--no-verifywithout careful review - Include real customer data in samples
Emergency: Committed a Secret?¶
If you accidentally commit sensitive data:
# 1. Remove from history (if not pushed)
git reset --soft HEAD~1
# Remove the secret from the file
git add -A
git commit -m "fix: remove sensitive data"
# 2. If already pushed, rotate the credential immediately!
# Then use git filter-branch or BFG Repo-Cleaner to remove from history
# 3. Report the incident per your security policy
â ī¸ Important: Assume any committed credential is compromised. Always rotate secrets that were accidentally committed, even if removed quickly.
đ Network Security¶
Private Endpoint Architecture¶
flowchart TB
subgraph Corp["đĸ Corporate Network"]
USER["đ¤ User/Admin"]
end
USER -->|"ExpressRoute/VPN"| VNET
subgraph VNET["đ Azure Virtual Network"]
subgraph Fabric["Fabric Subnet<br/>10.0.1.0/24"]
F1["Fabric Workspace"]
F2["Dataflows"]
end
subgraph PE["Private Endpoint Subnet<br/>10.0.2.0/24"]
P1["Storage PE"]
P2["Key Vault PE"]
P3["Purview PE"]
end
end Network Security Groups (NSG)¶
// NSG for Fabric subnet
resource fabricNsg 'Microsoft.Network/networkSecurityGroups@2023-05-01' = {
name: 'nsg-fabric-subnet'
location: location
properties: {
securityRules: [
{
name: 'AllowHTTPS'
properties: {
priority: 100
direction: 'Inbound'
access: 'Allow'
protocol: 'Tcp'
sourceAddressPrefix: 'VirtualNetwork'
destinationAddressPrefix: '*'
destinationPortRange: '443'
}
}
{
name: 'DenyAllInbound'
properties: {
priority: 4096
direction: 'Inbound'
access: 'Deny'
protocol: '*'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
destinationPortRange: '*'
}
}
]
}
}
đ Compliance Requirements¶
Gaming Industry (NIGC MICS)¶
| Requirement | Implementation | Status |
|---|---|---|
| Meter accuracy | < 0.1% variance validation | â |
| Drop count verification | Daily reconciliation | â |
| Jackpot verification | W-2G >= $1,200 auto-generation | â |
| Access controls | Role-based + audit logging | â |
| Data retention | 5 years minimum | â |
Financial (FinCEN BSA)¶
| Report | Threshold | Automation |
|---|---|---|
| đ CTR (Currency Transaction Report) | $10,000 | Auto-generate |
| đ¨ SAR (Suspicious Activity Report) | Pattern-based | Alert + review |
| đ W-2G (Gambling Winnings) | $1,200 slots, $600 keno | Auto-generate |
đ Click to expand: CTR Detection Logic (PySpark)
#### CTR Detection Logic# CTR threshold detection
def detect_ctr_threshold(df):
return df.filter(
(col("transaction_type") == "CASH") &
(col("amount") >= 10000)
).withColumn("ctr_required", lit(True))
# Structuring detection (SAR trigger)
def detect_structuring(df, window_hours=24):
window_spec = Window.partitionBy("player_id") \
.orderBy("transaction_time") \
.rangeBetween(-window_hours * 3600, 0)
return df.withColumn("rolling_total",
sum("amount").over(window_spec)
).filter(
(col("amount").between(8000, 9999)) &
(col("rolling_total") >= 10000)
)
PCI-DSS Requirements¶
| Requirement | Control | Implementation |
|---|---|---|
| 3.4 | Render PAN unreadable | Hash/encrypt card numbers |
| 7.1 | Limit access | RBAC + need-to-know |
| 8.2 | MFA | Microsoft Entra ID Conditional Access |
| 10.1 | Audit trails | Comprehensive logging |
| 12.3 | Security policies | Documented procedures |
đ Audit and Monitoring¶
Audit Log Configuration¶
// Diagnostic settings for Fabric
resource fabricDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: 'fabric-audit-logs'
scope: fabricCapacity
properties: {
workspaceId: logAnalyticsWorkspace.id
logs: [
{
categoryGroup: 'audit'
enabled: true
}
{
categoryGroup: 'allLogs'
enabled: true
}
]
}
}
Key Audit Events¶
| Event Category | Examples | Retention |
|---|---|---|
| đ Authentication | Login, logout, MFA challenges | 90 days |
| đ Authorization | Permission changes, access denied | 90 days |
| đ Data access | Query execution, data export | 1 year |
| âī¸ Admin operations | Config changes, user management | 1 year |
| đ¨ Security events | Threats detected, policies triggered | 2 years |
Alerting Rules¶
// KQL alert for suspicious data export
FabricAuditLogs
| where OperationName == "ExportData"
| where RecordCount > 10000
| summarize ExportCount = count(), TotalRecords = sum(RecordCount)
by UserPrincipalName, bin(TimeGenerated, 1h)
| where ExportCount > 5 or TotalRecords > 100000
| project TimeGenerated, UserPrincipalName, ExportCount, TotalRecords
đ¨ Incident Response¶
Security Incident Workflow¶
flowchart LR
subgraph D["1ī¸âŖ Detection"]
D1["Azure Sentinel"]
D2["Defender Alerts"]
D3["Custom Alerts"]
end
subgraph T["2ī¸âŖ Triage"]
T1["Security Team Assessment"]
T2["Severity Rating"]
end
subgraph C["3ī¸âŖ Containment"]
C1["Isolate User"]
C2["Revoke Access"]
C3["Block Network"]
end
subgraph E["4ī¸âŖ Eradication"]
E1["Remove Threat"]
E2["Patch Systems"]
E3["Update Rules"]
end
subgraph R["5ī¸âŖ Recovery"]
R1["Restore Services"]
R2["Verify Security"]
end
subgraph L["6ī¸âŖ Lessons"]
L1["Update Policies"]
L2["Document Findings"]
end
D --> T --> C --> E --> R --> L Contact Matrix¶
| Severity | Response Time | Escalation | Team |
|---|---|---|---|
| đ´ Critical | 15 minutes | SOC + Leadership | Security + Exec |
| đ High | 1 hour | Security Team | Security |
| đĄ Medium | 4 hours | On-call engineer | Operations |
| đĸ Low | Next business day | Ticket queue | IT Support |
â Security Checklists¶
đ Click to expand: Detailed Security Checklists
### Pre-Deployment Checklist | Task | Status | Owner | |------|--------|-------| | Microsoft Entra ID tenant hardened | â | Identity Team | | Conditional Access policies configured | â | Identity Team | | Key Vault created with proper access policies | â | Security Team | | Network security groups defined | â | Network Team | | Private endpoints planned (if required) | â | Network Team | ### Post-Deployment Checklist | Task | Status | Owner | |------|--------|-------| | Fabric workspace roles assigned | â | Platform Team | | Row-level security implemented | â | Data Team | | Audit logging enabled | â | Security Team | | Alert rules configured | â | Security Team | | Incident response plan documented | â | Security Team | | Compliance controls validated | â | Compliance Team | ### Ongoing Operations Checklist | Task | Frequency | Status | Owner | |------|-----------|--------|-------| | Access reviews | Quarterly | â | Identity Team | | Vulnerability assessments | Monthly | â | Security Team | | Penetration testing | Annual | â | Security Team | | Compliance audits | As required | â | Compliance Team | | Security training | Annual | â | HR/Security |đ References¶
Official Documentation¶
| Resource | Link |
|---|---|
| Microsoft Fabric Security | learn.microsoft.com/fabric/security |
| Azure Security Best Practices | learn.microsoft.com/azure/security |
Compliance Standards¶
| Standard | Link |
|---|---|
| đ° NIGC MICS Standards | nigc.gov/compliance |
| đ° FinCEN BSA Regulations | fincen.gov/resources |
| đŗ PCI-DSS Requirements | pcisecuritystandards.org |
đ Related Documentation¶
| Document | Description |
|---|---|
| đī¸ Architecture | System architecture and design |
| đ Deployment Guide | Infrastructure deployment |
| đ Prerequisites | Setup requirements |
đ Documentation maintained by: Microsoft Fabric POC Team đ Repository: Suppercharge_Microsoft_Fabric