feat: Add ability to optionally create Database contained user, instead of Instance level #299
+176
−54
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.
Description of your changes
This PR adds support for MSSQL contained database users, for scenarios where users need to be scoped only to specific databases without requiring server-level login creation.
Problem Statement:
AFAIU the existing
loginDatabasefunctionality only allows creating LOGINs in one database (typicallymaster). However, this traditional LOGIN+USER pattern has critical limitations:CREATE USER FOR LOGINbecome orphaned on read replicas since the referenced LOGIN doesn't exist on the replica instance/serverKey Changes:
containedfield for theUser.mssql.sql.crossplane.ioresource: Added optional boolean field to both cluster and namespaced MSSQL User CRDscontained: true: UsesCREATE USER [username] WITH PASSWORD = 'password'syntax directly in target databasecontained: falseor unset: Uses traditionalCREATE LOGIN+CREATE USER FOR LOGINapproachcontained: trueandloginDatabasefieldsDefault behavior is unchanged when
containedfield is not specified, ensuring existing deployments continue to work.Disclaimer: AI was also used in generating this patch.
Fixes #298
I have:
make reviewableto ensure this PR is ready for review.How has this code been tested
Built the package
docker.io/bogdanadrianburciu/provider-sql:v0.13.0-issue298-amd64and tested with a Crossplane1.20.0install in AKS.With
we see (in Azure SQL):