feat: Create Separate User Assigned Identity for SQL DB with Specified Access #688
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
This pull request introduces a dedicated user-assigned managed identity for SQL database operations with limited permissions, separating it from the web app's managed identity. The infrastructure, environment outputs, deployment scripts, and backend code are updated to consistently use this new SQL-specific identity for database access, improving security and permission scoping. Additionally, minor improvements are made to resource naming and redundancy settings.
Managed Identity Separation and Security Improvements:
sqlUserAssignedIdentityresource ininfra/main.bicepto serve as a dedicated managed identity for SQL operations, with limited permissions (db_datareader,db_datawriter).Key Vault Secrets Userrole.SQLDB_USER_MIDenvironment variable to use the SQL identity's client ID. [1] [2]Infrastructure and Output Adjustments:
zoneRedundantand clarifiedavailabilityZoneassignment for Azure best practices.Script and Backend Refactoring:
process_sample_data.shto use the SQL managed identity for database operations, including argument names, environment variable lookups, and user/role assignment logic. [1] [2] [3] [4]config.pyandsqldb_service.py) to distinguish between the web app and SQL managed identities, using the correct identity for SQL authentication. [1] [2]Does this introduce a breaking change?
Golden Path Validation
Deployment Validation