Authentication Overview
Delta Sharing uses bearer token authentication for all REST API requests. Every API call must include a valid bearer token in the Authorization header:Bearer Token Security
Bearer tokens are the primary authentication mechanism in Delta Sharing. Follow these best practices: The bearer token is configured in the server’s YAML configuration:Token Expiration
Configure token expiration times in profile files to limit the window of potential token compromise:- Use ISO 8601 format for expiration times
- Set reasonable expiration windows based on your security policies
- Implement automated token renewal processes before expiration
- Monitor and alert on approaching token expiration
HTTPS Requirements
Transport Layer Security
The Delta Sharing protocol transfers sensitive information:- Bearer tokens in every request header
- Table metadata including schemas and statistics
- Pre-signed URLs for data access
- Temporary cloud credentials (for directory-based access)
- Use valid SSL/TLS certificates from trusted Certificate Authorities
- Support TLS 1.2 or higher
- Regularly update certificates before expiration
- Implement certificate pinning for additional security (optional)
URL Security
Delta Sharing uses pre-signed URLs for data file access:- Set short expiration times (e.g., 1-24 hours) using
expirationTimestamp - Monitor URL access patterns for anomalies
- Rotate signing keys regularly
- Use cloud provider security features (e.g., AWS S3 bucket policies)
Profile File Protection
Profile files contain sensitive credentials and must be protected:Storage Security
File System Permissions:- Store profile files in encrypted file systems
- Use secret management systems (AWS Secrets Manager, HashiCorp Vault, etc.)
- Implement access controls at the directory level
- Enable audit logging for profile file access
Profile File Access Patterns
Profile files can be stored locally or remotely: Local File System:When using remote storage, ensure proper authentication is configured for the storage system (AWS IAM roles, Azure AD, Google Cloud IAM, etc.).
Advanced Security: JWT Proxy Setup
For enterprise deployments, implement JWT (JSON Web Token) authentication using a reverse proxy like NGINX:NGINX JWT Configuration
The reference Delta Sharing server uses basic bearer token authentication. For enhanced security, place it behind a secure proxy:- Install NGINX with JWT module:
- Generate JWT signing keys:
- Configure JWT validation:
Cloud Storage Security
Secure access to underlying cloud storage systems:AWS S3 Security
Recommended Authentication Methods:- EC2 IAM Metadata (Recommended):
- Environment Variables:
Azure Storage Security
Shared Key Authentication: Createconf/core-site.xml:
Google Cloud Storage Security
Service Account Authentication:storage.objects.get- Read object datastorage.objects.list- List bucket contents- Limit scope to specific buckets and prefixes
Security Checklist
Pre-Production Security Checklist
Pre-Production Security Checklist
Authentication:
- Generate cryptographically secure bearer tokens
- Configure token expiration times
- Implement token rotation procedures
- Set up monitoring for token usage
- Configure valid SSL/TLS certificates
- Enable TLS 1.2 or higher
- Verify HTTPS on all endpoints
- Test certificate renewal process
- Set restrictive file permissions (600)
- Store in encrypted file systems
- Implement access audit logging
- Use secret management systems
- Configure firewall rules
- Implement rate limiting
- Set up DDoS protection
- Enable network access logging
- Use IAM roles (not static credentials)
- Configure bucket policies with least privilege
- Enable cloud provider security features
- Set up access logging and monitoring
- Enable comprehensive API access logging
- Set up alerts for authentication failures
- Monitor for unusual access patterns
- Implement security incident response procedures
Error Handling
Delta Sharing returns standard HTTP status codes for authentication errors:| Status Code | Description | Action |
|---|---|---|
| 401 | Unauthenticated - bearer token missing or incorrect | Verify token in profile file |
| 403 | Forbidden - insufficient permissions | Check recipient access grants |
| 404 | Resource not found | Verify share/schema/table names |