> Tech > Listing 1 : Code qui montre l’importance des SID

Listing 1 : Code qui montre l’importance des SID

Tech - Par Renaud ROSSET - Publié le 24 juin 2010

--Add logins for database ownership.
USE master
GO
EXEC sp_addlogin 'DatabaseOwner1'
EXEC sp_addlogin 'DatabaseOwner2'
GO

--Initialize Database1.
CREATE DATABASE Database1
GO
USE Database1
EXEC sp_changedbowner 'DatabaseOwner1'
EXEC sp_grantdbaccess guest
GO
CREATE TABLE [dbo].[MyTable] ([Column1] [int])
GO

--Initialize Database2.
CREATE DATABASE Database2
GO
USE Database2
EXEC sp_changedbowner 'DatabaseOwner2'
EXEC

sp_grantdbaccess guest
GO
CREATE VIEW [dbo].[MyView] AS
SELECT [Column1] FROM [Database1].[dbo].[MyTable]
GO
GRANT SELECT ON [Database2].[dbo].[MyView] TO PUBLIC
GO

–Illustrate behavior with different database owners.
PRINT ‘** Note different logins/SIDs for dbo users so the select
fails **’
EXEC Database1..sp_helpuser ‘dbo’
EXEC Database2..sp_helpuser ‘dbo’
SETUSER ‘guest’

–Select permission denied because of broken ownership chain.
SELECT * FROM [Database2].[dbo].[MyView]
SETUSER
GO

–Change Database2 ownership to match Database1.
EXEC sp_changedbowner ‘DatabaseOwner1’
GO

–Illustrate behavior with same database owner.
PRINT ‘** Note same login/SID for dbo users so the select now succeeds
**’
EXEC Database1..sp_helpuser ‘dbo’
EXEC Database2..sp_helpuser ‘dbo’
SETUSER ‘guest’

–Select succeeds because ownership chain is unbroken.
SELECT * FROM [Database2].[dbo].[MyView]
SETUSER
GO

–Clean up.
USE master
GO
DROP DATABASE Database1
DROP DATABASE Database2
EXEC sp_droplogin ‘DatabaseOwner1’
EXEC sp_droplogin ‘DatabaseOwner2’
GO

Téléchargez cette ressource

Plan de sécurité Microsoft 365

Plan de sécurité Microsoft 365

Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?

Les plus consultés sur iTPro.fr

A lire aussi sur le site

À la une de la chaîne Tech