π§ title: 'Getting Started with Policy Information Points (PIPs)' description: 'Learn how to connect your data sources to Control Core for intelligent, context-aware authorization'
π§ Getting Started with Policy Information Points (PIPs)
π What is a PIP?
A Policy Information Point (PIP) is a data source that provides real-time context and attributes for your access control policies. Think of it as connecting your authorization system to the sources of truth in your organization.
Why Connect Data Sources?
Without PIPs, your policies are limited to information in the request itself. With PIPs, your policies can access:
- User Information from your identity provider (roles, department, manager, clearance level)
- Resource Metadata from databases (owner, sensitivity, environment, status)
- HR Context from your HR system (employment status, start date, certifications)
- Business Context from CRM/ERP systems (customer tier, account status)
- Real-Time Context for dynamic, intelligent authorization decisions
Where PIPs Sit in the System
Data sources (PIPs) are configured in the Control Plane. The Policy Bridge distributes that data to all bouncers so policies can use it at evaluation time.
Click to enlarge
Real-World Example
Without PIP:
User requests access to "Production Database"
Policy checks: Does user have "database-admin" role?
Decision: Simple yes/no based on static role
With PIP:
User requests access to "Production Database"
Policy checks:
- User's department (from Okta)
- User's employment status (from Workday)
- Resource owner (from PostgreSQL metadata)
- Time of day and user's location
- User's clearance level and certifications
Decision: Smart, context-aware authorization
π§ Quick Start: Connect Your First Data Source
The flow from adding a data source to using it in policies:
Click to enlarge
Step 1: Access PIP Management
You can access PIP Management in two places:
- During Onboarding: In the Getting Started Wizard β "Connect Data Sources" step
- Anytime Later: Settings β Data Sources
Step 2: Choose Your Data Source
Click "Add Data Source" and select from 13 categories:
Identity & HR
- Identity Provider (Okta, Azure AD, Auth0, LDAP)
- HR System (Workday, BambooHR, ADP)
Enterprise Systems
- CRM (Salesforce, HubSpot, Dynamics)
- ERP (SAP, Oracle, NetSuite)
- Ticketing (ServiceNow, Jira, Zendesk)
Data & Storage
- Database (PostgreSQL, MySQL, MongoDB)
- Document Storage (SharePoint, Google Drive, S3)
- Data Warehouse (Snowflake, BigQuery, Redshift)
Technical
- OpenAPI Specification
- Custom API
- Configuration Management Database (CMDB)
Step 3: Configure Connection
Let's walk through connecting Okta as an example:
3.1 Enter Basic Information
- Name: "Production Okta" (friendly name for your team)
- Provider: Select "Okta"
3.2 Choose Authentication Method
- OAuth 2.0 (Recommended) - Most secure, tokens auto-refresh
- API Key - Simpler setup, good for read-only access
- Username/Password - For legacy systems only
3.3 Configure OAuth (if selected)
- Okta Domain:
your-company.okta.com - Client ID: From your Okta admin console
- Client Secret: From your Okta admin console
- Scopes:
openid profile email groups(default is good!)
Where to get OAuth credentials: In Okta, go to Applications β Create App Integration β API Services or Web App
3.4 Test Connection
Click "Test Connection" - this is where the magic happens!
The system will:
- Connect to your Okta instance
- Discover all available user fields
- Show you REAL metadata from your Okta
Step 4: Understanding the Metadata
After successful connection test, you'll see two sections:
Available Metadata Fields (LEFT SIDE)
These are REAL fields from your data source:
For Okta, you'll see actual fields like:
id- User IDemail- Email addressfirstName,lastName- Name fieldsstatus- User status (ACTIVE, INACTIVE, etc.)profile.department- User's departmentprofile.title- Job titlegroups- Group membershipslastLogin- Last login timestamp- Plus any custom fields you've added to Okta!
This is NOT sample data - it's the actual schema from your connected system!
Authorization Attributes (RIGHT SIDE)
These are standard attribute names used in your policies:
user.id- Unique user identifieruser.email- User email addressuser.department- Department nameuser.roles- Role assignmentsuser.groups- Group membershipsuser.mfa_enabled- MFA statususer.clearance_level- Security clearance
Step 5: Map the Attributes
Mapping connects real fields to policy attributes:
| Policy Attribute (What policies use) | Okta Field (Real field name) |
|---|---|
user.email | β email |
user.department | β profile.department |
user.roles | β groups |
user.manager | β profile.manager |
Why map?
- Policies use standard names like
user.department - Different providers have different field names (Okta:
profile.department, Azure AD:department) - Mapping lets you switch providers without rewriting policies!
Step 6: Configure Sync Settings
Sync Frequency: How often to refresh data from the source
- Real-time (Webhooks): Instant updates when data changes (best for critical data)
- Every 5 minutes: Near real-time
- Hourly: Standard refresh rate (good for most use cases)
- Daily: For relatively static data
- Weekly: For reference data
Recommendation: Start with "Hourly" - you can adjust later!
Step 7: Save and You're Done!
Click "Save Information Source"
Your data source is now connected! Within minutes:
- Control Core fetches user data from Okta
- Applies your attribute mappings
- Makes the data available to ALL your policies
- Distributes to ALL your Bouncers (PEPs) automatically
π‘ Common Use Cases
Use Case 1: Department-Based Access
Scenario: Only Engineering team can access development APIs
Setup:
- Connect Okta (for user department)
- Map
user.departmentβprofile.department
Policy (automatically gets department from Okta):
Allow access if:
- User's department = "Engineering"
- Resource environment = "development"
Use Case 2: Resource Ownership
Scenario: Users can only access resources they own
Setup:
- Connect Okta (for user ID)
- Connect PostgreSQL (for resource metadata)
- Map
user.idβid - Map
resource.owner_idβowner_id(from database)
Policy (gets data from both sources):
Allow access if:
- Resource owner = Current user ID
OR
- User has "admin" role
Use Case 3: Compliance & Clearance
Scenario: Only certified employees can access PII data
Setup:
- Connect Workday (for employee certifications)
- Connect PostgreSQL (for data classification)
- Map
user.certificationsβcertifications - Map
resource.classificationβdata_classification
Policy:
Allow access if:
- User has "PII-Handler" certification
- User's background check = "Passed"
- Resource classification = "PII"
ποΈ Understanding Multi-Bouncer Architecture
The Big Question: "We have 5 Bouncers protecting different apps - do we configure PIPs 5 times?"
Answer: NO! Configure ONCE, benefit EVERYWHERE!
Here's how it works:
You Configure (ONE TIME):
βββββββββββββββββββββββββββββββ
β Control Core PAP β
β β
β PIP Connections: β
β β Okta β
β β PostgreSQL β
β β Workday β
ββββββββββββ¬βββββββββββββββββββ
β
β Publishes to Policy Bridge
βΌ
ββββββββββββββββ
β Policy Bridgeβ β Single source of truth
ββββββββ¬ββββββββ
β
β Distributes to ALL Bouncers
β
ββββββββΌβββββββ¬βββββββ¬βββββββ
β β β β β
βΌ βΌ βΌ βΌ βΌ
ββββββββββ β β β β β β β β
βBouncer1β β β β β β β β β
βProtectsβ β β β β β β β β
βAPI A β β β β β β β β β
ββββββββββ β β β β β β β β
All bouncers automatically
get the same fresh data!
Benefits:
- Configure data sources ONCE in PAP
- ALL Bouncers automatically receive the data
- Consistent authorization decisions across all protected resources
- Real-time updates propagate to all enforcement points
π FAQs
Q: Is the metadata I see real or just examples?
A: It depends on whether you've tested the connection!
- Before Testing: You see sample fields (examples of what might be available)
- After Testing: You see REAL fields from your actual data source!
When you click "Test Connection" and it succeeds, the system:
- Connects to your Okta/Database/API
- Discovers the actual schema
- Shows you the real fields available
For example, after testing Okta, you'll see:
- Your actual custom attributes
- Your specific group names
- Your configured profile fields
Q: Do I need to set up Authorization Attributes before connecting data sources?
A: NO! Authorization Attributes are pre-defined by Control Core.
The Authorization Attributes (like user.department, user.roles) are standard attribute names recommended by Control Core for policy writing. They're always available.
You just need to map them to your provider's field names:
user.departmentβ Maps to βprofile.department(in Okta)user.departmentβ Maps to βdepartment(in Azure AD)
This standardization means your policies work with any provider!
Q: What if my data source isn't in the list?
You have options:
- Use "Custom API" - Works with any REST API
- Use "Custom" provider - Within each category
- Request Integration - Click "Request New Integration" button
- Contact Support - We can help build custom connectors
Q: How often should I sync data?
Recommendations:
- Hourly: Good default for most use cases
- Every 15 minutes: For frequently changing data
- Real-time (Webhooks): For critical security decisions
- Daily: For relatively static reference data
Rule of thumb: More frequent = more current data, but higher load on source systems
Q: Is my data secure?
Absolutely! Control Core uses enterprise-grade security:
- Credentials Encrypted: AES-256 encryption for all stored credentials
- TLS in Transit: All API calls use HTTPS/TLS
- Secure Storage: Credentials stored separately from configuration
- Audit Logging: Every data access is logged
- Sensitivity-Based Caching: Sensitive data cached for shorter periods
- No Plain Text: Passwords and secrets never stored unencrypted
Q: Can I edit a connection after it's created?
Yes! Go to Settings β Data Sources β Click on connection β Edit
You can change:
- Authentication credentials
- Sync frequency
- Attribute mappings
- Connection settings
Note: Changes take effect on the next sync cycle.
Q: What happens if a connection fails?
Control Core handles failures gracefully:
- Connection marked as "Error" - You'll see the status
- Policies still work - Use last cached data
- Alerts sent - Admins notified of failure
- Auto-retry - System attempts reconnection
- Audit logged - Failure details captured
You can manually retry or fix credentials and re-test.
π οΈ Troubleshooting
| Issue | What to check |
|---|---|
| Connection test fails | Verify URL, credentials, and network access from the Control Plane to the data source. Check firewall and TLS/SSL certificates. |
| Data not appearing in policies | Confirm attribute mappings and that the data source sync has completed. Check PIP status in Settings β Data Sources. |
| Sync errors or stale data | Review sync interval and retry; check data source rate limits and API availability. Inspect Control Plane logs for sync errors. |
| Multiple bouncers not receiving data | Data is distributed from the Control Plane to all bouncers; ensure bouncers are registered and Policy Bridge is reachable. |
For more, see the Troubleshooting Guide.
π Next Steps
Now that you understand PIPs, you can:
- Connect More Sources: Add databases, HR systems, CRM
- Write Policies: Use your mapped attributes in policies
- Monitor Connections: Check sync status and health
- Optimize: Adjust sync frequencies based on usage
π Need Help?
- Admin Guide: For detailed configuration and monitoring
- Developer Guide: For policy development and API integration
- Support: Help & Support icon (?) in top navigation
- Community: Join our Discord for questions and discussions
You've successfully connected your first data source! Your policies now have real-time context from your organization's systems. π