Astro Private Cloud supports Kerberos authentication for Airflow deployment databases, allowing you to connect to Kerberized PostgreSQL databases. This feature is available starting in Astro Private Cloud 1.1.0.
Kerberos is an authentication protocol that uses tickets to allow secure authentication in network environments. In enterprise environments with strict security requirements, databases are often configured to use Kerberos authentication instead of traditional username and password authentication.
With Kerberos database support in Astro Private Cloud, you can:
Astro Private Cloud uses PgBouncer as a proxy between Airflow components and the Kerberized database. When you enable Kerberos for a deployment:
Astro Private Cloud 1.1.0 supports two deployment modes with different Kerberos configurations:
In unified mode, the control plane and data plane are installed in the same Kubernetes cluster.

In control plane/data plane mode, you can configure separate Kerberos authentication for the control plane database and data plane (Airflow) databases:

In control plane/data plane mode, you can use separate Active Directory instances and Kerberos realms for the control plane and data plane. This allows for greater security isolation between control plane and Airflow deployment databases.
Before configuring Kerberos authentication, ensure you have:
Kerberos database authentication in Astro Private Cloud follows a shared responsibility model:
The following are supported in Astro Private Cloud 1.1.0 with Kerberos Authentication:
Future releases may expand support to other executors, deployment types, and databases.
You are responsible for implementing a mechanism to inject Kerberos credentials into PgBouncer Pods. One common approach is using a Kubernetes mutation webhook.
A mutation webhook can automatically inject Kerberos credentials when PgBouncer Pods are created. The webhook typically:
krb5.conf) and keytabs as volumesWhen creating a deployment, you’ll specify labels in the pgbouncerConfig section that trigger your webhook to inject the necessary credentials.
Other methods for credential injection include:
Choose the approach that best fits your organization’s security requirements and infrastructure.
For implementation guidance, contact Astronomer support or your Astronomer representative.
Before creating Kerberos-enabled deployments, you must enable manual connection strings in your cluster configuration.
Open your control plane values.yaml file.
Add the following configuration:
Enable manual connection strings on the data plane cluster by adding the following to its Configuration Override. See Update data plane cluster configurations for instructions on updating cluster-specific settings.
Add the following to your control plane values.yaml to set the PgBouncer image used by Deployments on the data plane:
Push the configuration change. See Apply a config change.
You must create a Kerberos user in your PostgreSQL database with the appropriate permissions.
In control plane/data plane mode, create separate Kerberos users for:
Connect to your PostgreSQL database using a superuser account.
Create the Kerberos user. The username must be in the format <username>@<REALM>:
Replace astro_user with your Kerberos username and APC.ASTRONOMER.IO with your Kerberos realm.
If you need to use a Kerberized database for the control plane (Houston’s database), you must configure PgBouncer in the control plane namespace.
pgbouncer.ini file with the following contents. Replace the placeholders with your actual values:users.txt file:users.txt file with the password hashes:The password authentication in users.txt is used for Houston to connect to PgBouncer. PgBouncer then authenticates to the PostgreSQL database using Kerberos (GSSAPI).
Open your control plane values.yaml file.
Add the following PgBouncer configuration:
The username and password are the user and password from the users.txt file above.
The query parameters pgbouncer=true&connection_limit=100&pool_timeout=60&prisma_connection_limit=100 are critical for Prisma to work correctly with PgBouncer. Without these parameters, the control plane may experience connection issues.
Upgrade the control plane installation. You must perform the upgrade in two steps:
Step 1: First, upgrade with the --no-hooks flag. This installs PgBouncer in the control plane without running database migration jobs:
The <version> is the APC version you want to upgrade to (e.g., 1.1.0).
Step 2: After the upgrade completes and PgBouncer is running, run the upgrade again without the --no-hooks flag. This runs the database migration jobs:
The <version> is the APC version you want to upgrade to (e.g., 1.1.0).
The two-step upgrade process is necessary because:
Before creating a Kerberos-enabled deployment, you must manually create the Airflow database.
Follow these steps to create the database:
The username and password in the connection string should match the credentials configured in your users.txt file from Step 3.
Or connect directly to your Kerberized database (ensure you have appropriate credentials).
For example:
Kerberos-enabled deployments must be created using the Houston API. They cannot be created from the Astro UI.
kerberosEnabled: Must be set to true. This enables Houston to perform Kerberos-specific validation.skipAirflowDatabaseProvisioning: Must be set to true because you manually create the Airflow database.metadataConnectionJson and resultBackendConnectionJson:
user: Must be in the format <username>@<REALM>pass: Can be any value (e.g., "no-pass") since PgBouncer uses Kerberos for database authenticationhost: The hostname of your Kerberized PostgreSQL databasedb: The database name you created (e.g., mydeployment_airflow)pgbouncerConfig:
labels: Custom labels for the PgBouncer Pod. Use these labels to trigger your Kerberos credential injection mechanism (e.g., "krb-inject": "enabled" or "component": "pgbouncer").env: Environment variables for the PgBouncer Pod. Your credential injection mechanism can use these to configure Kerberos authentication (e.g., KERBEROS_USER, KERBEROS_PASSWORD).extraIniMetadata and extraIniResultBackend: Must specify the Kerberos user.extraIni: Must include Kerberos/GSS settings:
server_gssauth_negotiate = allowserver_krb_spn = postgres/<airflow-db-host>@<kerberos_realm>sslmode: Set to prefer for RDS or other TLS-enabled databasesIn control plane/data plane mode, ensure the Airflow database host, Kerberos realm, and Kerberos user you specify are for the data plane, not the control plane.
After creating your deployment, verify that Kerberos authentication is working correctly.
Look for log entries showing connections using the Kerberos principal.
Verify that the Airflow UI loads successfully:
a. Log in to the Astro UI.
b. Navigate to your deployment.
c. Click Airflow UI.
If the Airflow UI loads without errors, PgBouncer is successfully connecting to the database using Kerberos authentication.
If the PgBouncer Pod fails to start, check the following:
pgbouncerConfig match what your credential injection mechanism expects.If authentication fails, verify:
server_krb_spn in the PgBouncer configuration matches your database hostname and realm.If the Airflow UI fails to load:
metadataConnectionJson and resultBackendConnectionJson are correctly configured.pgbouncerConfig settings, especially the extraIni configuration.