Tableau Hardening Guide
BI platform security for site roles, data source credentials, and embed controls
Overview
Tableau provides business intelligence and data visualization with connections to enterprise data sources. REST API, embedded credentials in workbooks, and data source connections access sensitive business data. Compromised access exposes executive dashboards, financial reports, and aggregated business intelligence.
Intended Audience
- Security engineers managing BI platforms
- Tableau administrators
- GRC professionals assessing data governance
- Third-party risk managers evaluating analytics integrations
Table of Contents
1. Authentication & Access Controls
1.1 Enforce SSO with MFA
Profile Level: L1 (Baseline) NIST 800-53: IA-2(1)
ClickOps Implementation
Step 1: Configure SAML SSO (Tableau Cloud)
- Navigate to: Settings → Authentication
- Configure SAML IdP
- Enable: SAML single sign-on
Step 2: Enable MFA
- Configure MFA through IdP
- Enforce for all users
- Configure session timeout
1.2 Implement Site Roles
Profile Level: L1 (Baseline) NIST 800-53: AC-3, AC-6
ClickOps Implementation
Step 1: Define Site Roles
| Role | Permissions |
|---|---|
| Site Administrator Creator | Full site access |
| Site Administrator Explorer | Admin without publish |
| Creator | Create/publish content |
| Explorer | View and interact |
| Viewer | View only |
Step 2: Configure Project Permissions
- Navigate to: Explore → Projects
- Configure project-level permissions
- Use permission templates
2. Data Source Security
2.1 Secure Data Source Connections
Profile Level: L1 (Baseline) NIST 800-53: IA-5
Description
Protect data source credentials and connections.
Rationale
Attack Scenario: Embedded database credentials extracted from workbooks; direct database access bypasses application-level controls.
ClickOps Implementation
Step 1: Use Service Accounts
- Create dedicated service accounts
- Limit database permissions
- Use published data sources
Step 2: Credential Management
- Avoid embedding passwords in workbooks
- Use OAuth where available
- Prompt users for credentials
2.2 Row-Level Security
Profile Level: L2 (Hardened) NIST 800-53: AC-3
Implementation
Step 1: Implement User Filters
# User filter calculation
[Region] = USERNAME()
# Or use groups
ISMEMBEROF('Finance')
Step 2: Configure Data Source Filters
- Create user-based filters
- Test with different users
- Document filter logic
3. Content Security
3.1 Workbook Protection
Profile Level: L1 (Baseline) NIST 800-53: SC-28
ClickOps Implementation
Step 1: Configure Permissions
- Set project-level defaults
- Lock permissions to project
- Remove “All Users” permissions
Step 2: Extract Security
- Configure extract refresh security
- Limit extract downloads
- Encrypt extracts at rest
3.2 Embedding Security
Profile Level: L2 (Hardened) NIST 800-53: AC-21
Implementation
Step 1: Connected Apps (Tableau Cloud)
- Navigate to: Settings → Connected Apps
- Configure allowed domains
- Set session timeout
Step 2: Trusted Authentication
- Configure trusted hosts
- Limit ticket lifespan
- Monitor trusted authentication usage
4. Monitoring & Detection
4.1 Enable Admin Views
Profile Level: L1 (Baseline) NIST 800-53: AU-2, AU-3
ClickOps Implementation
Step 1: Access Admin Views
- Navigate to: Status → Traffic to Views
- Monitor data source access
- Review user activity
Detection Focus
-- Detect bulk data downloads
SELECT user_name, workbook_name, download_count
FROM admin_insights
WHERE action = 'Download'
AND timestamp > NOW() - INTERVAL '24 hours'
GROUP BY user_name, workbook_name
HAVING download_count > 10;
-- Detect unusual access patterns
SELECT user_name, site_role, view_count
FROM traffic_to_views
WHERE timestamp > NOW() - INTERVAL '1 hour'
GROUP BY user_name, site_role
HAVING view_count > 100;
Appendix A: Edition Compatibility
| Control | Tableau Cloud | Tableau Server |
|---|---|---|
| SAML SSO | ✅ | ✅ |
| Site Roles | ✅ | ✅ |
| Row-Level Security | ✅ | ✅ |
| Admin Views | ✅ | ✅ |
Changelog
| Date | Version | Maturity | Changes | Author |
|---|---|---|---|---|
| 2025-12-14 | 0.1.0 | draft | Initial Tableau hardening guide | Claude Code (Opus 4.5) |