Best Practices6 min read

5 Retool Security Best Practices for Enterprise Apps

WitData Team

Retool Security Experts

Published January 20, 2024

Retool security settings dashboard showing permission controls

Security is critical when building internal tools with Retool. In this guide, we'll cover five essential security best practices that every Retool developer should follow when building enterprise applications.

💡 Quick ROI Check: Insecure internal tools can lead to data breaches costing millions. Use our free ROI calculator to see how much you'd save building secure, production-ready Retool apps vs risky DIY solutions. Book this week and save 10% on professional development!

Why Retool Security Matters

Internal tools often have access to your most sensitive data—customer information, financial records, and business intelligence. A security breach in an internal tool can be just as damaging as one in your main product.

According to Verizon's 2023 Data Breach Investigations Report, 74% of breaches involve the human element, and internal applications are often the weak link. That's why securing your Retool applications from day one is crucial.

1. Implement Role-Based Access Control (RBAC)

The most important security practice is ensuring users only see and do what they're authorized to. Retool's permission system makes this straightforward.

How to Set Up RBAC in Retool

Step 1: Define User Groups

Create groups based on job functions:

  • Admins: Full access to all features
  • Managers: Read/write access to their team's data
  • Users: Read-only or limited write access
  • Viewers: Dashboard access only

Step 2: Configure Resource Permissions

For each database connection:

// Example: Limit query based on user group
SELECT * FROM customers
WHERE
  {{current_user.groups.includes('admin')
    ? '1=1'
    : current_user.groups.includes('manager')
    ? `team = '\${current_user.metadata.team}'`
    : `assigned_to = '\${current_user.email}'`}}

Step 3: Hide Components Based on Permissions

Use Retool's conditional visibility:

// Hidden property for delete button
{{!current_user.groups.includes('admin')}}

Real-World Example

We built a financial dashboard for a fintech company where:

  • Accountants could view all transactions
  • Regional managers could only see their region's data
  • Individual reps could only see their own transactions
  • Viewers had read-only access to summary reports

This granular control prevented unauthorized access while maintaining productivity.

📊 Building a CRM? Security is especially critical for customer data. Check out our How to Build a CRM in Retool guide and learn how to implement these security practices from day one.

2. Use Environment Variables for Sensitive Data

Never hardcode sensitive information in your Retool apps. Use environment variables instead.

What to Store as Environment Variables

  • API keys
  • Database credentials
  • Encryption keys
  • Third-party service tokens
  • Webhook URLs

How to Set Up Environment Variables

  1. Go to Settings > Environment Variables
  2. Create separate variables for staging and production
  3. Use them in queries:
// ✅ GOOD - Using environment variable
const apiKey = {{apiKey}};

// ❌ BAD - Hardcoded
const apiKey = 'sk_live_abc123';

Best Practices

  • Never expose secrets in frontend code: Keep sensitive operations server-side
  • Rotate credentials regularly: Update environment variables every 90 days
  • Use different credentials per environment: Staging and production should never share credentials

3. Sanitize and Validate All User Inputs

SQL injection and XSS attacks are common vectors for internal tools. Always validate and sanitize user inputs.

Input Validation Strategies

1. Use Parameterized Queries

Retool automatically parameterizes queries when you use {{variable}} syntax:

-- ✅ GOOD - Parameterized
SELECT * FROM users WHERE email = {{emailInput.value}};

-- ❌ BAD - String concatenation
SELECT * FROM users WHERE email = '" + emailInput.value + "';

2. Add Client-Side Validation

For form inputs, use validation rules:

// Email validation
{{emailInput.value.match(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/)}}

// Phone number validation
{{phoneInput.value.match(/^\+?[1-9]\d{1,14}$/)}}

// Required field
{{nameInput.value.length > 0}}

3. Implement Server-Side Validation

Always validate on the server too:

-- Check for valid email format
SELECT * FROM users
WHERE email = {{emailInput.value}}
  AND email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';

Common Validation Mistakes

  • Trusting user input: Always validate, even for "internal" users
  • Only validating on client-side: Client-side checks can be bypassed
  • Not escaping special characters: Always escape HTML/SQL special characters

4. Enable Audit Logging and Monitoring

You need to know who accessed what data and when. Audit logging is essential for security and compliance.

What to Log

  • User login/logout events
  • Data access (especially sensitive tables)
  • Data modifications (create, update, delete)
  • Permission changes
  • Failed authentication attempts

Implementation in Retool

Create an Audit Log Table

CREATE TABLE audit_logs (
  id SERIAL PRIMARY KEY,
  user_email VARCHAR(255),
  user_groups TEXT[],
  action VARCHAR(100),
  resource VARCHAR(255),
  details JSONB,
  ip_address INET,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Log Every Significant Action

Add logging to your queries:

// After successful update
await logAuditEvent.trigger({
  additionalScope: {
    user_email: {{current_user.email}},
    action: 'UPDATE_CUSTOMER',
    resource: {{table1.selectedRow.data.id}},
    details: {{form1.data}}
  }
});

Monitor Suspicious Activity

Set up alerts for:

  • Multiple failed login attempts
  • Access to sensitive data outside business hours
  • Bulk data exports
  • Permission escalation attempts

Compliance Considerations

Audit logging helps with:

  • SOC 2: Demonstrates access controls
  • GDPR: Shows data access and modifications
  • HIPAA: Tracks protected health information access
  • PCI DSS: Monitors cardholder data access

5. Implement Data Encryption

Protect data both in transit and at rest.

Encryption in Transit

Use SSL/TLS for All Connections

Retool enforces HTTPS by default, but ensure:

  • Database connections use SSL
  • API calls use HTTPS
  • Webhooks use HTTPS endpoints

Configure Database SSL

For PostgreSQL:

// In resource settings
{
  "ssl": {
    "rejectUnauthorized": true,
    "ca": "{{ca_certificate}}"
  }
}

Encryption at Rest

Encrypt Sensitive Database Columns

For highly sensitive data like Social Security numbers:

-- Using pgcrypto extension
CREATE EXTENSION IF NOT EXISTS pgcrypto;

-- Encrypt when inserting
INSERT INTO customers (name, ssn_encrypted)
VALUES (
  'John Doe',
  pgp_sym_encrypt('123-45-6789', {{encryption_key}})
);

-- Decrypt when retrieving
SELECT
  name,
  pgp_sym_decrypt(ssn_encrypted, {{encryption_key}}) as ssn
FROM customers;

Best Practices

  • Use AES-256 encryption
  • Store encryption keys in secure vault (AWS KMS, HashiCorp Vault)
  • Rotate encryption keys annually
  • Never store keys in the database

Handling PII and Sensitive Data

For GDPR/CCPA compliance:

  1. Data Minimization: Only collect necessary data
  2. Purpose Limitation: Use data only for stated purposes
  3. Access Control: Restrict who can view PII
  4. Right to Erasure: Implement data deletion workflows
  5. Data Portability: Allow exporting user data

Bonus: Additional Security Measures

IP Whitelisting

Restrict Retool access to your office IP ranges:

  1. Go to Settings > Security
  2. Add allowed IP addresses
  3. Enable IP restrictions

Two-Factor Authentication (2FA)

Require 2FA for all users:

  1. Settings > Authentication
  2. Enable 2FA requirement
  3. Communicate to users with setup instructions

Session Management

  • Set appropriate session timeouts (recommended: 30 minutes of inactivity)
  • Force re-authentication for sensitive operations
  • Implement auto-logout on browser close

Regular Security Audits

Perform quarterly reviews of:

  • User permissions
  • Active API keys
  • Audit logs
  • Database access patterns
  • Third-party integrations

Security Checklist for Retool Apps

Before deploying to production, verify:

  • RBAC implemented for all user groups
  • All sensitive data in environment variables
  • Input validation on all forms
  • Audit logging enabled
  • SSL/TLS for all connections
  • Encryption for sensitive data at rest
  • IP whitelisting configured
  • 2FA enforced for all users
  • Session timeouts configured
  • Security audit completed

Conclusion

Security shouldn't be an afterthought when building internal tools. These five best practices—RBAC, environment variables, input validation, audit logging, and encryption—form the foundation of secure Retool applications.

Remember: the cost of implementing these measures upfront is far less than the cost of a security breach.

Need Help Securing Your Retool Applications?

Our team of security experts can audit your existing Retool apps or build secure applications from scratch. We've implemented these best practices in 100+ applications for enterprise clients.

🚀 Need Expert Help? Our security experts have built 100+ enterprise-grade Retool applications with SOC 2 compliance, RBAC, and audit logging. Schedule a free security consultation to audit your apps, or calculate your ROI on secure internal tools.

💰 Limited Offer: Book this week and get 10% off your security audit or development project!

Want to learn more? Check out our Optimization & Rescue services for security audits, or explore our Custom App Development for building secure apps from scratch.

FAQs

Is Retool SOC 2 compliant?

Yes, Retool is SOC 2 Type II certified. However, your application's compliance depends on how you implement security controls.

Can Retool integrate with SSO?

Yes, Retool supports SAML SSO with providers like Okta, Azure AD, OneLogin, and Google Workspace.

How often should I rotate API keys?

We recommend rotating API keys every 90 days, and immediately if you suspect compromise.

Does Retool support on-premise deployment?

Yes, Retool offers self-hosted options for enterprises that need to keep data on-premise.

What happens if a user leaves the company?

Immediately revoke their Retool access through your SSO provider or Retool's user management. Also review audit logs for their recent activity.

Need Help Building Your Retool Application?

Our team of experts can help you build production-ready internal tools in 2-3 weeks. We've built 100+ applications for companies worldwide.

Related Articles

Screenshot of a CRM dashboard built in Retool
Tutorials

How to Build a CRM in Retool in 30 Minutes

A step-by-step guide to building a fully functional customer relationship management system using Retool's low-code platform. Perfect for startups and small teams.