Azure Blob Storage Authentication Enhancement (SAS Token AAD Support)

Details

Detail name Value
Changelog Number 28710
Type New Feature
Status Resolved
Fix Versions Exasol 2026.1.0
Resolution Date 2026-05-15

Background

Currently, Azure Blob Storage integration in Exasol supports Account Key authentication for IMPORT and EXPORT operations. While this method provides full access to storage resources, it relies on long-lived credentials, which are increasingly restricted in enterprise environments due to security concerns.

Modern cloud security practices favor:

  • Temporary, scoped access using SAS Tokens
  • Identity-based authentication using Azure Active Directory (AAD / Entra ID)

Many organizations enforce policies that:

  • discourage or disable Account Key usage
  • require integration with centralized identity systems (AAD)
  • mandate least-privilege and time-bound access

As a result, the current limitation to Account Key authentication creates:

  • barriers for enterprise adoption
  • operational workarounds (e.g., credential sharing, external data movement)
  • misalignment with Azure-native security practices

New Feature

This enhancement introduces a unified Azure authentication framework with extended capabilities across all supported data formats (Parquet, CSV, FBV).

1. Support for SAS Token Authentication

  • Enables temporary, permission-scoped access to Azure Blob Storage
  • Supports:
  • Removes dependency on long-lived Account Keys
  • SAS Token permissions are fully managed by the client and not validated by the system
  • fine-grained permissions (read/write/list/create)
  • resource-level access (container/file)
  • time-bound access via expiration

Example

import into t2 from parquet at cloud azure blobstorage
'DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net'
user 'myaccount'
sas token 'mysastoken'
file 'container/file.parquet';

2. Support for Azure Active Directory (AAD / Entra ID) Authentication

  • Enables identity-based authentication using service principals
  • Supports:
  • Uses Azure SDKs to securely generate and manage access tokens
  • Supports enterprise RBAC (Role-Based Access Control)
  • Tenant ID
  • Client ID
  • Client Secret

Example

import into t2 from parquet at cloud azure blobstorage
'DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net'
user 'myaccount'
identified by 'myclientsecret'
client id 'myclientid'
tenant id 'mytenantid'
file 'container/file.parquet';

3. Unified Authentication Model

  • Introduces a shared authentication mechanism across:
  • Ensures:
  • Parquet
  • CSV
  • FBV
  • consistent behavior
  • reduced duplication
  • easier extensibility for future formats

4. SQL Syntax Enhancements

  • Introduces new syntax elements:
  • Maintains compatibility with existing syntax for Account Key authentication
  • Supports flexible configuration of authentication parameters
  • sas token for SAS authentication
  • client id, tenant id, and identified by for AAD authentication

5. Connection Object Support

  • Allows authentication credentials to be defined via Connection objects
  • Supports:
  • Provides secure storage and reuse of authentication parameters
  • Inline SQL parameters can override connection object values
  • creation of connections with credentials
  • modification of existing credentials

Example

CREATE CONNECTION azure_conn TO
'DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net'
USER 'myaccount'
IDENTIFIED BY 'myaccountkey';

IMPORT INTO t2 FROM parquet AT cloud azure blobstorage
CONNECTION azure_conn
FILE 'container/file.parquet';

6. Flexible Account Name Configuration

  • The Storage Account Name can be provided via:
  • user parameter takes precedence if both are provided
  • Internally normalized into a single representation
  • user parameter, or
  • connection string (AccountName)

Example (AccountName in connection string)

import into t2 from parquet at cloud azure blobstorage
'DefaultEndpointsProtocol=https;AccountName=myaccount;EndpointSuffix=core.windows.net'
identified by 'myaccountkey'
file 'container/file.parquet';

7. Strong Validation and Precedence Rules

  • Ensures:
  • Enforces precedence:
  • exactly one authentication method per request
  • valid parameter combinations
  • inline SQL over Connection object
  • user over connection string

8. Security Enhancements

  • Sensitive credentials (sas token, identified by, tenant id) are:
  • Secure handling across:
  • The SAS token should not be included in the URL (connection string). Instead, it must be specified within the SQL statement using the syntax: SAS TOKEN '<SAS Token>'.
  • The account key should not be included in the URL (connection string). Instead, it must be specified in the SQL statement using the syntax: IDENTIFIED BY '<Account Key>'.
  • Aligns with secure design principles and OWASP guidelines
  • masked in logs and audit tables
  • never exposed in error messages
  • SQL execution
  • runtime processing
  • connection storage

9. Container Handling Behavior

  • Import operations require existing containers
  • Export operations:
  • Behavior depends on:
  • may create containers if permissions allow
  • authentication method
  • permission scope

10. Backward Compatibility

  • Existing Account Key authentication remains unchanged
  • No impact on:
  • New functionality is introduced as an additive enhancement
  • existing queries
  • existing workflows

11. Known Limitations

  • No pre-validation of permission scope for SAS Token and AAD Authentication
  • Behavior depends on Azure runtime responses