BambooHR Hardening Guide
HR platform security for API keys, access levels, and sensitive field protection
Overview
BambooHR is a cloud-based HR platform managing employee records, benefits, and performance data. REST API, webhook integrations, and third-party app marketplace access sensitive employee PII. Compromised access exposes SSN, compensation data, and performance reviews.
Intended Audience
- Security engineers managing HR systems
- BambooHR administrators
- GRC professionals assessing HR compliance
- Third-party risk managers evaluating HRIS 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
- Navigate to: Settings → Security → Single Sign-On
- Configure SAML IdP
- Enable SSO requirement
Step 2: Enable 2FA
- Navigate to: Settings → Security
- Enable: Require 2FA
- Configure backup methods
1.2 Access Level Configuration
Profile Level: L1 (Baseline) NIST 800-53: AC-3, AC-6
ClickOps Implementation
Step 1: Define Access Levels
| Level | Permissions |
|---|---|
| Admin | Full access |
| HR Manager | HR functions |
| Manager | Team access |
| Employee | Self-service |
Step 2: Configure Field Permissions
- Navigate to: Settings → Access Levels
- Create custom access levels
- Configure field-level visibility
2. API Security
2.1 Secure API Keys
Profile Level: L1 (Baseline) NIST 800-53: IA-5
Description
Manage BambooHR API keys securely.
Rationale
Attack Scenario: Compromised API key enables full employee database export; SSN, compensation, and personal data exposed.
ClickOps Implementation
Step 1: Audit API Keys
- Navigate to: Settings → API Keys
- Review all active keys
- Remove unused keys
Step 2: Key Best Practices
- Create separate keys per integration
- Document key purposes
- Rotate keys annually
2.2 Third-Party App Security
Profile Level: L1 (Baseline) NIST 800-53: CM-7
ClickOps Implementation
Step 1: Review Connected Apps
- Navigate to: Apps → Installed Apps
- Review all connected apps
- Remove unused integrations
Step 2: App Approval
- Require admin approval for new apps
- Review OAuth scopes
- Audit app access quarterly
3. Data Security
3.1 Protect Sensitive Fields
Profile Level: L1 (Baseline) NIST 800-53: SC-28
ClickOps Implementation
Step 1: Configure Field Security
- Navigate to: Settings → Employee Fields
- Identify sensitive fields (SSN, salary, bank info)
- Restrict visibility by access level
Step 2: Mask Sensitive Data
- Configure SSN masking
- Limit bank account visibility
- Audit sensitive data access
3.2 Report Security
Profile Level: L2 (Hardened) NIST 800-53: AC-21
ClickOps Implementation
Step 1: Restrict Report Access
- Navigate to: Reports
- Limit who can create reports
- Restrict report sharing
4. Monitoring & Detection
4.1 Activity Monitoring
Profile Level: L1 (Baseline) NIST 800-53: AU-2, AU-3
ClickOps Implementation
Step 1: Review Login History
- Navigate to: Settings → Security → Login History
- Monitor failed logins
- Investigate suspicious access
Detection Focus
-- Detect bulk data exports
SELECT user_email, report_name, record_count
FROM bamboo_activity
WHERE action = 'report_export'
AND record_count > 100
AND timestamp > NOW() - INTERVAL '24 hours';
-- Detect API abuse
SELECT api_key, endpoint, COUNT(*) as calls
FROM api_log
WHERE timestamp > NOW() - INTERVAL '1 hour'
GROUP BY api_key, endpoint
HAVING COUNT(*) > 500;
Appendix A: Edition Compatibility
| Control | Essentials | Advantage |
|---|---|---|
| SAML SSO | Add-on | ✅ |
| 2FA | ✅ | ✅ |
| Custom Access Levels | ✅ | ✅ |
| API Access | ✅ | ✅ |
Changelog
| Date | Version | Maturity | Changes | Author |
|---|---|---|---|---|
| 2025-12-14 | 0.1.0 | draft | Initial BambooHR hardening guide | Claude Code (Opus 4.5) |