mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-07-06 00:28:52 +00:00
99 lines
4.4 KiB
Markdown
99 lines
4.4 KiB
Markdown
![]() |
---
|
||
|
title: Azure - Enable Passwordless Database Backend Connection
|
||
|
slug: /deployment/azure-passwordless-auth
|
||
|
collate: false
|
||
|
---
|
||
|
|
||
|
# Azure - Enable Passwordless Database Backend Connection
|
||
|
|
||
|
By Default, OpenMetadata supports basic authentication when connecting to MySQL/PostgreSQL as Database backend. With Azure, you can enhance the security for configuring Database configurations other the basic authentication mechanism.
|
||
|
This guide will help you setup the application to use passwordless approach for Azure PaaS Databases (preferrably [Azure Database for PostgreSQL - Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) and [Azure Database for MySQL - Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview)).
|
||
|
|
||
|
# Prerequisites
|
||
|
|
||
|
This guide requires the following prerequisites -
|
||
|
|
||
|
- Azure Database Flexible Server enabled with Microsoft Entra authentication
|
||
|
- [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview)
|
||
|
- Azure Kubernetes Service (Enabled with Workload Identity) or Azure VM
|
||
|
- OpenMetadata Application Version `1.5.9` and higher
|
||
|
|
||
|
If you are looking to enable Passwordless Database Backend Configuration on Existing OpenMetadata Application hosted using Azure Cloud, you need to create perform the following prerequisites -
|
||
|
|
||
|
- Create Managed Identity from Azure Portal
|
||
|
- Create a SQL User for Managed Identity in Azure Databases
|
||
|
- PostgreSQL Reference link [here](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-manage-azure-ad-users#create-a-userrole-using-microsoft-entra-principal-name)
|
||
|
- MySQL Reference link [here](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-azure-ad#create-microsoft-entra-users-in-azure-database-for-mysql)
|
||
|
- Assign Existing OpenMetadata Database Tables Ownership to Managed Identities created in above step
|
||
|
|
||
|
# Enabling Passwordless connections with OpenMetadata
|
||
|
|
||
|
Configure your Helm Values for Kubernetes Deployment like below -
|
||
|
|
||
|
```yaml
|
||
|
# For PostgreSQL
|
||
|
commonLabels:
|
||
|
azure.workload.identity/use: "true"
|
||
|
serviceAccount:
|
||
|
create: true
|
||
|
annotations:
|
||
|
azure.workload.identity/client-id: <USER_MANAGED_IDENTITY_CLIENT_ID>
|
||
|
name: "openmetadata-sa"
|
||
|
automountServiceAccountToken: true
|
||
|
openmetadata:
|
||
|
config:
|
||
|
database:
|
||
|
host: <HOST_NAME>
|
||
|
driverClass: org.postgresql.Driver
|
||
|
dbParams: "azure=true&allowPublicKeyRetrieval=true&serverTimezone=UTC&sslmode=require&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin"
|
||
|
dbScheme: postgresql
|
||
|
port: 5432
|
||
|
auth:
|
||
|
username: <USER_MANAGED_IDENTITY_NAME>
|
||
|
password:
|
||
|
secretRef: database-secrets
|
||
|
secretKey: openmetadata-database-password
|
||
|
databaseName: <DATABASE_NAME>
|
||
|
|
||
|
# For MySQL
|
||
|
commonLabels:
|
||
|
azure.workload.identity/use: "true"
|
||
|
serviceAccount:
|
||
|
create: true
|
||
|
annotations:
|
||
|
azure.workload.identity/client-id: <USER_MANAGED_IDENTITY_CLIENT_ID>
|
||
|
name: "openmetadata-sa"
|
||
|
automountServiceAccountToken: true
|
||
|
openmetadata:
|
||
|
config:
|
||
|
database:
|
||
|
host: <HOST_NAME>
|
||
|
driverClass: com.mysql.cj.jdbc.Driver
|
||
|
dbParams: "azure=true&allowPublicKeyRetrieval=trueserverTimezone=UTC&sslMode=REQUIRED&defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin"
|
||
|
dbScheme: mysql
|
||
|
port: 3306
|
||
|
auth:
|
||
|
username: <USER_MANAGED_IDENTITY_NAME>
|
||
|
password:
|
||
|
secretRef: database-secrets
|
||
|
secretKey: openmetadata-database-password
|
||
|
databaseName: <DATABASE_NAME>
|
||
|
```
|
||
|
{% note %}
|
||
|
|
||
|
In the above code snippet, the Database Credentials (Auth Password Kubernetes Secret) is still required and cannot be empty. Set it to dummy / random value.
|
||
|
|
||
|
{% /note %}
|
||
|
|
||
|
Install / Upgrade your Helm Release with the following command -
|
||
|
|
||
|
```bash
|
||
|
helm repo update open-metadata
|
||
|
helm upgrade --install openmetadata open-metadata/openmetadata --values <OPENMETADATA_HELM_VALUES_FILE_PATH>
|
||
|
```
|
||
|
|
||
|
For further reference, checkout the official documentation available in the below links -
|
||
|
|
||
|
- [MySQL](https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/migrate-mysql-to-passwordless-connection?tabs=sign-in-azure-cli%2Cjava%2Capp-service)
|
||
|
- [PostgreSQL](https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/migrate-postgresql-to-passwordless-connection?tabs=sign-in-azure-cli%2Cjava%2Capp-service%2Cassign-role-service-connector)
|