> 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
email

--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

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

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