This Automated Secret Rotation Demo is designed to demonstrate a secure, passwordless, non-interactive method for rotating secrets for Microsoft Entra ID App Registrations.
This platform utilizes Key Vaults for storing secrets. Event Grid System Topic Subscriptions and Function Apps support the automation of this process.
System Managed Identities are leveraged for creating, updating, and retrieving secrets. All System Managed Identities are granted permissions with consideration to the principals of least privilege.
Please refer to _SolutionDiagram.vsdx for reference architecture diagrams.
Deployment activities are supported using Az Powershell Modules, MS Graph Powershell Modules, and Visual Studio Code. These steps are intended to be executed in sequential order due to resource and permission dependencies.
Requirements:
- Az Powershell Modules
Steps:
- Run Create-SecretRotationDemo.ps1
- Resource Group
- Key Vault
- Log Analytics
- Application Insights
- Storage Account
- App Service Plan
- Function App
- Event Grid System Topic
- Function App Managed Identity Permissions to Key Vault
Requirements:
- VS Code
- VS Code Extensions:
- Azure Account
- Azure Resources
- Azure Functions
Steps:
- Launch VSCode
- Edit "function_app.py" with your appropriate Key Vault Permissions
- Deploy Function App
Requirements:
- MS Graph Powershell Modules
Steps:
- Run Configure-FunctionAppIdentity.ps1
- Function App Managed Identity MS Graph API Permssions (Application.ReadWrite.OwnedBy)
Requirements:
- Az Powershell Modules
Steps:
- Run Configure-SecretRotationDemo.ps1
- Event Grid System Topic Event Subscription
Requirements:
- MS Graph Powershell Modules
Steps:
- Run Create-ServicePrincipal.ps1
- Create Service Principal
- Grant Function App Managed Identity as Owner to Service Principal
Requirements:
- Az Powershell Modules
Steps:
- Run Create-SampleApp.ps1
- Resource Group
- App Service Plan
- Web App
- Storage Account
- Run Configure-SampleApp.ps1
- Set App Settings Configuration values:
- Storage Blob Uri
- Key Vault Uri
- Service Principal Id
- Grant Service Principal to Storage Permissions
- Grant Web App Managed Identity GET access to Key Vault
- Set App Settings Configuration values:
Once this demo environment is no longer needed, please remember to clean up resources.
Requirements:
- Az Powershell Modules
- MS Graph Powershell Modules
Steps:
- Run Delete-SampleApp.ps1
- Run Delete-ServicePrincipal.ps1
- Run Delete-SecretRotationDemo.ps1