Condividi tramite


Abilitazione dell'accesso tra database in SQL Server (ADO.NET)

Il concatenamento della proprietà tra database si verifica quando una procedura di un database dipende dagli oggetti di un altro. Una catena di proprietà tra database funziona allo stesso modo del concatenamento della proprietà con un singolo database, ad eccezione del fatto che una catena di proprietà non interrotta richiede che tutti i proprietari degli oggetti siano mappati allo stesso account di accesso. Se l'oggetto di origine nel database di origine e gli oggetti di destinazione nei database di destinazione appartengono allo stesso account di accesso, le autorizzazioni sugli oggetti di destinazione non verranno controllate in SQL Server.

Disattivazione per impostazione predefinita

A partire da SQL 2000 SP3, il concatenamento della proprietà tra database è disattivato per impostazione predefinita. Microsoft consiglia di disabilitare questa funzionalità perché espone la sicurezza ai seguenti rischi:

  • I proprietari dei database e i membri dei ruoli di database db_ddladmin o db_owners possono creare oggetti appartenenti ad altri utenti. Questi oggetti possono avere come destinazione gli oggetti di altri database, il che significa che se si abilita il concatenamento della proprietà tra database, è necessario considerare completamente attendibili questi utenti per i dati di tutti i database.

  • Gli utenti con l'autorizzazione CREATE DATABASE possono creare nuovi database e collegare database esistenti. Se il concatenamento della proprietà tra database è abilitato, questi utenti possono accedere ad oggetti di altri database per cui potrebbero non disporre di privilegi dai database appena creati o collegati.

Abilitazione del concatenamento della proprietà tra database

Il concatenamento della proprietà tra database deve essere abilitato solo negli ambienti in cui gli utenti con privilegi elevati possono essere considerati completamente attendibili. Questa funzionalità può essere configurata durante l'installazione per tutti i database o in modo selettivo per specifici database utilizzando i comandi Transact-SQL sp_configure e sp_dboption.

In SQL Server 2000 SP3 è stata introdotta l'opzione Cross DB Ownership Chaining come miglioramento della sicurezza che consente di configurare il concatenamento della proprietà tra database. Per configurare in modo selettivo questa funzionalità in SQL Server 2005 e versioni successive, utilizzare sp_configure per disattivarla per il server. Utilizzare quindi il comando ALTER DATABASE con SET DB_CHAINING ON per configurare il concatenamento della proprietà tra database solo per i database per cui è necessario.

SQL dinamico

Il concatenamento della proprietà tra database non funziona nei casi in cui vengono eseguite istruzioni SQL create in modo dinamico, a meno che nei due database non esistano gli stessi utenti. Per aggirare questo problema, in SQL Server 2005 è possibile creare una stored procedure che accede ai dati di un altro database e firmare la procedura con un certificato disponibile in entrambi i database. In questo modo si fornisce agli utenti l'accesso alle risorse del database utilizzate dalla procedura senza concedere loro l'accesso o le autorizzazioni per il database.

Risorse esterne

Per ulteriori informazioni, vedere le seguenti risorse.

Risorsa

Descrizione

Extending Database Impersonation by Using EXECUTE AS e Cross DB Ownership Chaining Option nella documentazione online di SQL Server 2008 (informazioni in lingua inglese)

Viene descritto come configurare il concatenamento della proprietà tra database per un'istanza di Microsoft SQL Server 2008.

Extending Database Impersonation by Using EXECUTE AS e Cross DB Ownership Chaining Option nella documentazione online di SQL Server 2005 (informazioni in lingua inglese)

Viene descritto come configurare il concatenamento della proprietà tra database per un'istanza di Microsoft SQL Server 2005.

Cross DB Ownership Chaining nella documentazione online di SQL Server 2000 (informazioni in lingua inglese)

Viene descritto come configurare il concatenamento della proprietà tra database utilizzando le opzioni rese disponibili per la prima volta in SQL Server 2000 SP3.

Vedere anche

Concetti

Gestione delle autorizzazioni con le stored procedure in SQL Server (ADO.NET)

Scrittura di istruzioni SQL dinamiche protette in SQL Server (ADO.NET)

Firma di stored procedure in SQL Server (ADO.NET)

Altre risorse

Protezione di applicazioni ADO.NET

Panoramica della sicurezza di SQL Server (ADO.NET)