V-276235
SV-276235r1150008_rule
CAT II
Azure SQL Managed Instance must enforce access restrictions associated with changes to the configuration of the database(s).
From: Microsoft Azure SQL Managed Instance Security Technical Implementation Guide (V1R1)
Description
<VulnDiscussion>Failure to provide logical access restrictions associated with changes to configuration may have significant effects on the overall security of the system.
When dealing with access restrictions pertaining to change control, it should be noted that any changes to the hardware, software, and/or firmware components of the information system can potentially have significant effects on the overall security of the system.
Accordingly, only qualified and authorized individuals must be allowed to obtain access to system components for the purposes of initiating changes, including upgrades and modifications.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>
Check Procedure
Execute the following query to obtain a listing of user databases whose owner is a member of a fixed server role and the corresponding roles:
SELECT
D.name AS database_name, SUSER_SNAME(D.owner_sid) AS owner_name,
FRM.is_fixed_role_member, B.fixed_role_memberships
FROM sys.databases D
OUTER APPLY (
SELECT MAX(fixed_role_member) AS is_fixed_role_member
FROM (
SELECT IS_SRVROLEMEMBER(R.name, SUSER_SNAME(D.owner_sid)) AS fixed_role_member
FROM sys.server_principals R
WHERE is_fixed_role = 1
) A
) FRM
OUTER APPLY (
SELECT STUFF((SELECT ', ' + R.name
FROM sys.server_principals R
JOIN sys.server_role_members RM ON R.principal_id = RM.role_principal_id
WHERE RM.member_principal_id = SUSER_ID(SUSER_SNAME(D.owner_sid))
AND r.is_fixed_role =1
FOR XML PATH(''), TYPE).value('text()[1]','nvarchar(max)'), 1, LEN(','), '') AS fixed_role_memberships
) B
WHERE D.database_id > 4
AND (FRM.is_fixed_role_member = 1
OR FRM.is_fixed_role_member IS NULL)
ORDER BY database_name
If any server roles are returned, but not documented and authorized, this is a finding.
Fix Text
Document and obtain approval for logins with privileged permissions and role memberships.
If necessary, use the ALTER ROLE and/or REVOKE commands to remove unauthorized privileged permissions and/or role memberships. Example script provided below:
ALTER ROLE ddladmin DROP MEMBER UnauthorizedUser;
REVOKE SELECT ON OBJECT::test.table FROM UnauthorizedUser;
Refer to: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/statements/revoke-transact-sql
If necessary, in the Azure Portal, navigate to the Access Control pane for the Azure SQL Managed Instance to review and remove unauthorized privileged permissions and/or role memberships.
Refer to the documentation linked below:
https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions-list
https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-remove
CCI Reference
CCI-001813- Created
- 2026-04-07 20:08:22
- Last Updated
- 2026-04-07 20:08:22