Hi all! I'm currently developing a project where I'm using Azure OpenAI (GPT-5-mini) from a Docker container on a Google Cloud Platform (GCP) virtual machine. My authentication setup involves a Python application, and I'm employing the "DefaultAzureCredential" along with "get_bearer_token_provider" to authenticate with an Azure Service Principal (SPN). My credentials such as "AZURE_CLIENT_ID", "AZURE_TENANT_ID", and "AZURE_CLIENT_SECRET" are currently saved in a Docker ".env" file.
While the token acquisition process works without any hitches, I'm facing a challenge with the SPN client secret that expires every 45 days, necessitating manual updates to the secret in my ".env" file. This workflow is manageable during development, but I'm worried about its reliability once I deploy it in a production environment.
Here's a brief overview of my setup:
- Running a GCP VM that hosts Docker containers
- A Python application that integrates with Azure OpenAI
- Authentication via Azure Entra ID tokens using "DefaultAzureCredential"
I'm hoping to get some advice on the best practices for accommodating SPN secret rotations in production. Specifically, I'm curious about:
1. The best production strategies for dealing with SPN secret rotation in my situation.
2. Whether Workload Identity Federation from GCP to Azure Entra is a viable solution.
3. The potential benefits of storing the secret in GCP Secret Manager or Azure Key Vault.
4. General strategies that teams typically use to manage cross-cloud workloads.
Any architectural tips or examples would be greatly appreciated! Thanks a lot!
1 Answer
It's essential to have a solid secret management strategy if you're rotating secrets. Implementing Workload Identity Federation makes a lot of sense here, especially for cross-cloud authentication. This would allow you to avoid manually updating your secrets every time. If you can, look into integrating GCP Secret Manager or Azure Key Vault as well; both options keep your credentials secure and regularly updated without much hassle. It's a common practice to automate these processes for production environments, so I recommend moving in that direction!
Absolutely! Using CI/CD pipelines can assist in automating the secret updates within your deployment process, making everything smoother in production.

Thanks for the insights! I’m particularly interested in automating the secret updates to avoid future issues. Would using CI/CD tools help with that?