Overview
The Formal Chrome Extension propagates your identity to web applications (like Grafana, custom dashboards, etc.) that query databases through Formal Connectors. This ensures queries are attributed to you, not a shared service account.Installation
Install from the Chrome Web Store:- Visit the extension page
- Click Add to Chrome
- Confirm permissions
- Extension icon appears in browser toolbar
Prerequisites
1
Install Desktop App
Download and install the Formal Desktop
App
2
Log In
Run
formal auth login to authenticate3
Install Extension
Add the Chrome Extension from the Web Store
4
Verify
Both the Desktop App (system tray) and Extension (browser toolbar) should
show as active
How It Works
When you execute queries on supported websites:- Extension detects the query from the web application
- Communicates with Desktop App via Native Messaging API
- Desktop App signs the query with your ECDSA private key
- Signature injected into SQL comment
- Connector verifies the signature against your registered public key
- Query attributed to you, not the shared service account
Supported Websites
The extension automatically activates on:*.grafana.net- Grafana Cloud*.grafana.com- Grafana Enterprise- Custom domains (configure in extension settings)
Security Model
ECDSA Key Management
- Key Generation: Desktop App generates an ECDSA key pair on startup
- Private Key: Stored securely in memory (never written to disk)
- Public Key: Registered with Formal Connectors for verification
- Signing: Extension requests Desktop App to sign queries
- Verification: Connector validates signatures before execution
Signed Binary Requirement
The Desktop App must be a binary signed by Formal to request ECDSA keys. This prevents malicious applications from impersonating users.Native Messaging API
The extension uses Chrome’s Native Messaging API to communicate with the Desktop App:- Sandboxed communication channel
- No direct network access from extension
- Desktop App acts as secure intermediary
Configuration
Add Custom Domains
To enable identity propagation on custom domains:- Click the extension icon
- Go to Settings
- Add your domain (e.g.,
dashboard.example.com) - Save
Disable for Specific Sites
Temporarily disable the extension:- Click the extension icon
- Toggle off for the current site
- Refresh the page
Use Cases
Grafana Dashboards
When viewing Grafana dashboards that query Formal-protected databases:- Queries are attributed to your Formal user
- Policies evaluate based on your permissions
- Audit logs show your identity, not
grafana_service_account
Custom Web Dashboards
For internal dashboards or BI tools:- Add your dashboard domain to the extension
- Ensure your dashboard queries through a Formal Connector
- Queries are now attributed to you
Multi-User Applications
In shared applications where multiple users access the same data:- Each user’s queries are tracked separately
- Per-user policy enforcement
- Accurate audit trails
Troubleshooting
Extension not working
Extension not working
Possible causes: - Desktop App not running - Not logged in via Desktop
App - Site not in supported domains list Solution: 1. Check Desktop App
is running (system tray icon visible) 2. Run
formal status to verify login
3. Add the site to extension settings 4. Refresh the web pageQueries still attributed to service account
Queries still attributed to service account
Possible causes: - Connector not configured to verify signatures - Desktop
App public key not registered - Extension not signing queries Solution: 1.
Check extension icon shows “Active” 2. Verify Desktop App is running 3. Check
Logs to see if signature is present 4.
Contact Formal support if issue persists
Desktop App connection error
Desktop App connection error
Error:
Cannot connect to Formal Desktop App Solution: 1.
Ensure Desktop App is installed and running 2. Restart the Desktop App 3.
Reinstall the Chrome Extension 4. Check browser permissions allow Native
MessagingPrivacy
The extension:- ✅ Only activates on configured domains
- ✅ Does not collect or store personal data
- ✅ Does not transmit data to third parties
- ✅ Only communicates with the local Desktop App
- ✅ Source code available for audit
Best Practices
Keep Desktop App Running
Keep Desktop App Running
The extension requires the Desktop App to be running. Enable “Launch at
startup” in Desktop App preferences.
Verify Attribution
Verify Attribution
Periodically check Logs to confirm queries
are attributed to your user, not the service account.
Limit Extension Scope
Limit Extension Scope
Only enable the extension on trusted domains where you need identity
propagation.