Secure your Azure HorizonDB (Preview)

Azure HorizonDB is a cloud-native, fully managed, PostgreSQL-compatible database service for mission-critical workloads.

This article describes security best practices for protecting Azure HorizonDB deployments.

The security recommendations in this article implement Zero Trust principles: "Verify explicitly", "Use least privilege access", and "Assume breach". For comprehensive Zero Trust guidance, see the Zero Trust Guidance Center.

Network security

Network controls help restrict which clients can reach your Azure HorizonDB cluster before database authentication and authorization occur.

Identity and access management

Use Azure RBAC for Azure resource management and PostgreSQL roles for database-level authorization.

  • Assign Azure RBAC permissions by least privilege: Grant users and automation only the Azure permissions needed to create, view, modify, or delete Azure HorizonDB resources. For more information, see Azure role-based access control (Azure RBAC).
  • Create database roles for application access: Use PostgreSQL roles with specific permissions instead of using the administrator role for applications. For more information, see Access management in Azure HorizonDB (Preview).
  • Manage local database users separately from Azure RBAC: Create database users and grant database, schema, and table privileges based on each user's workload requirements. For more information, see Manage users in Azure HorizonDB (Preview).
  • Require SCRAM-SHA-256 password authentication: Configure password_encryption and supported authentication methods to use SCRAM-SHA-256, and update user passwords before enforcing SCRAM-only authentication. For more information, see SCRAM authentication in Azure HorizonDB (Preview).
  • Use row-level security for tenant or row-scoped access: Define PostgreSQL row-level security policies when authorization depends on row ownership, tenant boundaries, or classified data access. For more information, see Access management in Azure HorizonDB (Preview).

Data protection

Azure HorizonDB always encrypts managed data at rest by using service-managed keys. Customer-managed keys aren't available in preview, so the configurable data-protection controls focus on TLS, client-side protection, and PostgreSQL data access patterns. For more information, see Azure HorizonDB limitations and Data encryption at rest in Azure HorizonDB (Preview).

  • Verify TLS certificates for client connections: Configure PostgreSQL clients to use sslmode=verify-full or sslmode=verify-ca so clients validate the Azure HorizonDB cluster certificate. For more information, see Connect clients with TLS security to your database in Azure HorizonDB (Preview).
  • Require TLS 1.3 when clients support it: Set the ssl_min_protocol_version parameter to TLSv1.3 for workloads that don't need TLS 1.2 compatibility. For more information, see Transport layer security (TLS) in Azure HorizonDB (Preview).
  • Maintain trusted root certificates: Keep required Azure HorizonDB root certificate authorities in client trust stores and avoid trusting intermediate certificate authorities or individual cluster certificates. For more information, see Transport layer security (TLS) in Azure HorizonDB (Preview).
  • Encrypt sensitive values before storing them: For data that requires application-controlled secrecy in addition to service-managed encryption at rest, encrypt values in the application before writing them to Azure HorizonDB and manage encryption keys separately from database administrators. For more information, see Azure encryption overview.
  • Use data masking for controlled data exposure: Use supported PostgreSQL anonymizer capabilities for patterns such as anonymous dumps, static masking, dynamic masking, masking views, and masking data wrappers when you need to reduce sensitive data exposure. For more information, see HorizonDB customized options.

Backup and recovery

Backup and recovery controls help you recover from accidental data changes, destructive operations, and availability events.

Next steps