Ruoli a livello di databaseDatabase-Level Roles

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Per una facile gestione delle autorizzazioni dei database, SQL ServerSQL Server fornisce diversi ruoli rappresentanti entità di sicurezza all'interno delle quali sono raggruppate altre entità.To easily manage the permissions in your databases, SQL ServerSQL Server provides several roles which are security principals that group other principals. I ruoli sono analoghi ai gruppi nel sistema operativo MicrosoftMicrosoft Windows.They are like groups in the MicrosoftMicrosoft Windows operating system. L'ambito delle autorizzazioni dei ruoli a livello di database è l'intero database.Database-level roles are database-wide in their permissions scope.

Per aggiungere e rimuovere utenti a un ruolo del database, usare le opzioni ADD MEMBER e DROP MEMBER dell'istruzione ALTER ROLE .To add and remove users to a database role, use the ADD MEMBER and DROP MEMBER options of the ALTER ROLE statement. Parallel Data WarehouseParallel Data Warehouse non supporta l'uso di ALTER ROLE. does not support this use of ALTER ROLE. Usare invece le stored procedure sp_addrolemember e sp_droprolemember .Use the older sp_addrolemember and sp_droprolemember procedures instead.

Esistono due tipi di ruoli a livello di database: i ruoli predefiniti del database , che sono predefiniti nel database, e i ruoli del database definiti dall'utente , che possono essere creati.There are two types of database-level roles: fixed-database roles that are predefined in the database and user-defined database roles that you can create.

I ruoli predefiniti del database vengono definiti a livello di database e sono presenti in ogni database.Fixed-database roles are defined at the database level and exist in each database. I membri del ruolo del database db_owner possono gestire l'appartenenza ai ruoli predefiniti del database.Members of the db_owner database role can manage fixed-database role membership. Nel database msdb sono presenti anche alcuni ruoli predefiniti del database per scopi specifici.There are also some special-purpose database roles in the msdb database.

È possibile aggiungere qualsiasi account del database e altri ruoli SQL ServerSQL Server ai ruoli a livello di database.You can add any database account and other SQL ServerSQL Server roles into database-level roles. Tutti i membri di un ruolo predefinito del database possono aggiungere altri utenti allo stesso ruolo.Each member of a fixed-database role can add other users to that same role.

Suggerimento

Evitare di aggiungere ruoli del database definiti dall'utente come membri dei ruoli predefiniti,Do not add user-defined database roles as members of fixed roles. poiché in tal modo si potrebbe provocare un'imprevista intensificazione dei privilegi.This could enable unintended privilege escalation.

Le autorizzazioni dei ruoli del database definiti dall'utente possono essere personalizzate usando le istruzioni GRANT, DENY e REVOKE.The permissions of user-defined database roles can be customized by using the GRANT, DENY, and REVOKE statements. Per altre informazioni, vedere Autorizzazioni (motore di database).For more information, see Permissions (Database Engine).

Per un elenco di tutte le autorizzazioni, vedere il poster Autorizzazioni del motore di database .For a list of all the permissions, see the Database Engine Permissions poster. Non è possibile concedere autorizzazioni a livello di server ai ruoli del database.(Server-level permissions cannot be granted to database roles. Gli account di accesso e altre entità a livello di server (come i ruoli del server) non possono essere aggiunti ai ruoli del database.Logins and other server-level principals (such as server roles) cannot be added to database roles. Per sicurezza a livello di server in SQL ServerSQL Server, usare invece i ruoli del server .For server-level security in SQL ServerSQL Server, use server roles instead. Non è possibile concedere autorizzazioni a livello di server tramite ruoli in Database SQLSQL Database e SQL Data WarehouseSQL Data Warehouse.Server-level permissions cannot be granted through roles in Database SQLSQL Database and SQL Data WarehouseSQL Data Warehouse.)

ruoli predefiniti del databaseFixed-Database Roles

La tabella seguente contiene i ruoli predefiniti del database e le rispettive caratteristiche.The following table shows the fixed-database roles and their capabilities. Questi ruoli esistono in tutti i database.These roles exist in all databases. Fatta eccezione per il pubblica ruolo del database, le autorizzazioni assegnate ai ruoli del database predefinito non può essere modificato.Except for the public database role, the permissions assigned to the fixed-database roles cannot be changed.

Nome del ruolo predefinito del databaseFixed-Database role name DescriptionDescription
db_ownerdb_owner I membri del ruolo predefinito del database db_owner possono eseguire tutte le attività di configurazione e di manutenzione sul database e anche eliminare il database in SQL ServerSQL Server.Members of the db_owner fixed database role can perform all configuration and maintenance activities on the database, and can also drop the database in SQL ServerSQL Server. In Database SQLSQL Database e SQL Data WarehouseSQL Data Warehousealcune attività di manutenzione richiedono autorizzazioni a livello di server e non possono essere eseguite da ruoli db_owner.(In Database SQLSQL Database and SQL Data WarehouseSQL Data Warehouse, some maintenance activities require server-level permissions and cannot be performed by db_owners.)
db_securityadmindb_securityadmin I membri del ruolo predefinito del database db_securityadmin possono modificare le appartenenze al ruolo e gestire le autorizzazioni.Members of the db_securityadmin fixed database role can modify role membership and manage permissions. L'aggiunta di entità a questo ruolo potrebbe provocare un'imprevista intensificazione dei privilegi.Adding principals to this role could enable unintended privilege escalation.
db_accessadmindb_accessadmin I membri del ruolo predefinito del database db_accessadmin possono aggiungere o rimuovere le autorizzazioni di accesso al database per gli account di accesso di Windows, i gruppi di Windows e gli account di accesso di SQL ServerSQL Server .Members of the db_accessadmin fixed database role can add or remove access to the database for Windows logins, Windows groups, and SQL ServerSQL Server logins.
db_backupoperatordb_backupoperator I membri del ruolo predefinito del database db_backupoperator possono eseguire il backup del database.Members of the db_backupoperator fixed database role can back up the database.
db_ddladmindb_ddladmin I membri del ruolo predefinito del database db_ddladmin possono eseguire qualsiasi comando DDL (Data Definition Language) in un database.Members of the db_ddladmin fixed database role can run any Data Definition Language (DDL) command in a database.
db_datawriterdb_datawriter I membri del ruolo predefinito del database db_datawriter possono aggiungere, eliminare o modificare i dati di tutte le tabelle utente.Members of the db_datawriter fixed database role can add, delete, or change data in all user tables.
db_datareaderdb_datareader Membri del ruolo predefinito del database db_datareader possono leggere tutti i dati di tutte le tabelle utente.Members of the db_datareader fixed database role can read all data from all user tables.
db_denydatawriterdb_denydatawriter I membri del ruolo predefinito del database db_denydatawriter non possono aggiungere, modificare o eliminare dati delle tabelle utente contenute in un database.Members of the db_denydatawriter fixed database role cannot add, modify, or delete any data in the user tables within a database.
db_denydatareaderdb_denydatareader I membri del ruolo predefinito del database db_denydatareader non possono leggere i dati delle tabelle utente contenute in un database.Members of the db_denydatareader fixed database role cannot read any data in the user tables within a database.

Non è possibile modificare le autorizzazioni concesse ai ruoli predefiniti del database.The permissions assigned to the fixed-database roles cannot be changed. La figura seguente mostra le autorizzazioni assegnate ai ruoli predefiniti del database:The following figure shows the permissions assigned to the fixed-database roles:

fixed_database_role_permissions

Ruoli speciali per Database SQLSQL Database e SQL Data WarehouseSQL Data WarehouseSpecial Roles for Database SQLSQL Database and SQL Data WarehouseSQL Data Warehouse

Questi ruoli del database si trovano solo nel database master virtuale.These database roles exist only in the virtual master database. Le autorizzazioni di questi ruoli sono limitate alle azioni eseguite nel database master.Their permissions are restricted to actions performed in master. Solo gli utenti di database nel database master possono essere aggiunti a questi ruoli.Only database users in master can be added to these roles. Gli account di accesso non possono essere aggiunti a questi ruoli, ma è possibile creare utenti in base agli account di accesso e quindi aggiungere questi utenti ai ruoli.Logins cannot be added to these roles, but users can be created based on logins and then those users can be added to the roles. Anche gli utenti di database indipendenti nel database master possono essere aggiunti a questi ruoli.Contained database users in master, can also be added to these roles.

Nome ruoloRole name DescriptionDescription
dbmanagerdbmanager Può creare ed eliminare database.Can create and delete databases. Un membro del ruolo dbmanager che crea un database diventa il proprietario del database e questo permette all'utente di connettersi al database come utente dbo.A member of the dbmanager role that creates a database, becomes the owner of that databasee which allows that user to connect to that database as the dbo user. L'utente dbo ha tutte le autorizzazioni database nel database.The dbo user has all database permissions in the database. I membri del ruolo dbmanager non hanno necessariamente l'autorizzazione necessaria per accedere ai database di cui non sono proprietari.Members of the dbmanager role do not necessarily have permission to access databases that they do not own.
loginmanagerloginmanager Può creare ed eliminare account di accesso nel database master virtuale.Can create and delete logins in the virtual master database.
Nota

L'entità a livello di server e l'amministratore di Azure Active Directory (se configurato) hanno tutte le autorizzazioni in Database SQLSQL Database e SQL Data WarehouseSQL Data Warehouse senza dover essere membri di alcun ruolo.The server-level principal and the Azure Active Directory Administrator (if configured) have all permissions in the Database SQLSQL Database and SQL Data WarehouseSQL Data Warehouse without needing to be members of any roles. Per altre informazioni, vedere Autenticazione e autorizzazione del database SQL: concessione dell'accesso.For more information, see SQL Database Authentication and Authorization: Granting Access.

Ruoli msdbmsdb Roles

Il database msdb contiene ruoli specifici per uno scopo illustrati nella tabella seguente.The msdb database contains the special-purpose roles that are shown in the following table.

Nome del ruolo in msdbmsdb role name DescriptionDescription
db_ssisadmindb_ssisadmin

db_ssisoperatordb_ssisoperator

db_ssisltduserdb_ssisltduser
I membri di tali ruoli del database possono amministrare e utilizzare SSISSSIS.Members of these database roles can administer and use SSISSSIS. Le istanze di SQL ServerSQL Server aggiornate da una versione precedente potrebbero contenere una versione precedente del ruolo che era stata denominata usando Data Transformation Services (DTS) anziché SSISSSIS.Instances of SQL ServerSQL Server that are upgraded from an earlier version might contain an older version of the role that was named using Data Transformation Services (DTS) instead of SSISSSIS. Per altre informazioni, vedere Ruoli Integration Services (servizio SSIS).For more information, see Integration Services Roles (SSIS Service).
dc_admindc_admin

dc_operatordc_operator

dc_proxydc_proxy
I membri di tali ruoli del database possono amministrare e utilizzare l'agente di raccolta dati.Members of these database roles can administer and use the data collector. Per altre informazioni, vedere Data Collection.For more information, see Data Collection.
PolicyAdministratorRolePolicyAdministratorRole I membri del ruolo del database db_ PolicyAdministratorRole possono eseguire tutte le attività di configurazione e manutenzione su criteri e condizioni della gestione basata su criteri.Members of the db_ PolicyAdministratorRole database role can perform all configuration and maintenance activities on Policy-Based Management policies and conditions. Per altre informazioni, vedere Amministrare server usando la gestione basata su criteri.For more information, see Administer Servers by Using Policy-Based Management.
ServerGroupAdministratorRoleServerGroupAdministratorRole

ServerGroupReaderRoleServerGroupReaderRole
I membri di questi ruoli del database possono amministrare e utilizzare gruppi di server registrati.Members of these database roles can administer and use registered server groups.
dbm_monitordbm_monitor Creato nel database msdb quando il primo database viene registrato in Monitoraggio mirroring del database.Created in the msdb database when the first database is registered in Database Mirroring Monitor. Il ruolo dbm_monitor non include alcun membro fino a quando un amministratore di sistema non provvede all'assegnazione di utenti al ruolo stesso.The dbm_monitor role has no members until a system administrator assigns users to the role.
Importante

I membri dei ruoli db_ssisadmin e dc_admin possono essere in grado di elevare i propri privilegi a sysadmin.Members of the db_ssisadmin role and the dc_admin role may be able to elevate their privileges to sysadmin. Questa elevazione dei privilegi può verificarsi perché tali ruoli possono modificare i pacchetti Integration ServicesIntegration Services e i pacchetti Integration ServicesIntegration Services possono essere eseguiti da SQL ServerSQL Server utilizzando il contesto di sicurezza sysadmin di SQL ServerSQL Server Agent.This elevation of privilege can occur because these roles can modify Integration ServicesIntegration Services packages and Integration ServicesIntegration Services packages can be executed by SQL ServerSQL Server using the sysadmin security context of SQL ServerSQL Server Agent. Per impedire questa elevazione dei privilegi durante l'esecuzione di piani di manutenzione, set di raccolta dati e altri pacchetti di Integration ServicesIntegration Services , configurare i processi di SQL ServerSQL Server Agent che eseguono pacchetti in modo da utilizzare un account proxy con privilegi limitati o aggiungere solo i membri sysadmin ai ruoli db_ssisadmin e dc_admin .To guard against this elevation of privilege when running maintenance plans, data collection sets, and other Integration ServicesIntegration Services packages, configure SQL ServerSQL Server Agent jobs that run packages to use a proxy account with limited privileges or only add sysadmin members to the db_ssisadmin and dc_admin roles.

Utilizzo di R ServicesWorking with R Services

Si applica a: SQL Server a partire da SQL Server 2017SQL Server 2017Applies to: SQL Server starting with SQL Server 2017SQL Server 2017

Quando R Services è installato, i ruoli di database aggiuntivi sono disponibili per la gestione dei pacchetti.When R Services is installed, additional database roles are available for managing packages. Per altre informazioni, vedere R Package management for SQL Server(Gestione dei pacchetti R per SQL Server).For more information, see R Package management for SQL Server.

Nome ruoloRole name DescriptionDescription
rpkgs-usersrpkgs-users Consente agli utenti di usare i pacchetti condivisi installati dai membri del ruolo condiviso rpkgs.Allows users to use any shared packages that were installed by members of the rpkgs-shared role.
rpkgs-privaterpkgs-private Fornisce accesso ai pacchetti condivisi con le stesse autorizzazioni del ruolo rpkgs-users.Provides access to shared packages with the same permissions as the rpkgs-users role. I membri di questo ruolo possono inoltre installare, rimuovere e usare pacchetti con ambito privato.Members of this role can also install, remove and use privately scoped packages.
rpkgs-sharedrpkgs-shared Fornisce le stesse autorizzazioni del ruolo rpkgs-private.Provides the same permissions as the rpkgs-private role. Gli utenti membri di questo ruolo possono anche installare o rimuovere i pacchetti condivisi.Users who are members of this role can also install or remove shared packages.

Utilizzo di ruoli a livello di databaseWorking with Database-Level Roles

Nella tabella seguente vengono spiegati i comandi, le viste e le funzioni necessari per l'utilizzo dei ruoli a livello di database.The following table explains the commands, views and functions for working with database-level roles.

FunzionalitàFeature TipoType DescriptionDescription
sp_helpdbfixedrole (Transact-SQL)sp_helpdbfixedrole (Transact-SQL) MetadatiMetadata Restituisce un elenco dei ruoli predefiniti del database.Returns a list of the fixed database roles.
sp_dbfixedrolepermission (Transact-SQL)sp_dbfixedrolepermission (Transact-SQL) MetadatiMetadata Visualizza le autorizzazioni di un ruolo predefinito del database.Displays the permissions of a fixed database role.
sp_helprole (Transact-SQL)sp_helprole (Transact-SQL) MetadatiMetadata Restituisce informazioni sui ruoli del database corrente.Returns information about the roles in the current database.
sp_helprolemember (Transact-SQL)sp_helprolemember (Transact-SQL) MetadatiMetadata Restituisce informazioni sui membri di un ruolo del database corrente.Returns information about the members of a role in the current database.
sys.database_role_members (Transact-SQL)sys.database_role_members (Transact-SQL) MetadatiMetadata Restituisce una riga per ogni membro di ogni ruolo del database.Returns one row for each member of each database role.
IS_MEMBER (Transact-SQL)IS_MEMBER (Transact-SQL) MetadatiMetadata Indica se l'utente corrente è membro del gruppo di Microsoft Windows o del ruolo di database di Microsoft SQL Server specificato.Indicates whether the current user is a member of the specified Microsoft Windows group or Microsoft SQL Server database role.
CREATE ROLE (Transact-SQL)CREATE ROLE (Transact-SQL) CommandCommand Crea un nuovo ruolo di database nel database corrente.Creates a new database role in the current database.
ALTER ROLE (Transact-SQL)ALTER ROLE (Transact-SQL) CommandCommand Modifica il nome o l'appartenenza di un ruolo del database.Changes the name or membership of a database role.
DROP ROLE (Transact-SQL)DROP ROLE (Transact-SQL) CommandCommand Rimuove un ruolo dal database.Removes a role from the database.
sp_addrole (Transact-SQL)sp_addrole (Transact-SQL) CommandCommand Crea un nuovo ruolo di database nel database corrente.Creates a new database role in the current database.
sp_droprole (Transact-SQL)sp_droprole (Transact-SQL) CommandCommand Rimuove un ruolo del database dal database corrente.Removes a database role from the current database.
sp_addrolemember (Transact-SQL)sp_addrolemember (Transact-SQL) CommandCommand Aggiunge un utente del database, un ruolo del database, un account di accesso di Windows o un gruppo di Windows a un ruolo del database nel database corrente.Adds a database user, database role, Windows login, or Windows group to a database role in the current database. Tutte le piattaforme ad accezione di Parallel Data WarehouseParallel Data Warehouse devono usare invece ALTER ROLE.All platforms except Parallel Data WarehouseParallel Data Warehouse should use ALTER ROLE instead.
sp_droprolemember (Transact-SQL)sp_droprolemember (Transact-SQL) CommandCommand Rimuove un account di sicurezza da un ruolo di SQL Server nel database corrente.Removes a security account from a SQL Server role in the current database. Tutte le piattaforme ad accezione di Parallel Data WarehouseParallel Data Warehouse devono usare invece ALTER ROLE .All platforms except Parallel Data WarehouseParallel Data Warehouse should use ALTER ROLE instead.
GRANTGRANT PermissionsPermissions Aggiunge autorizzazioni a un ruolo.Adds permission to a role.
DENYDENY PermissionsPermissions Nega un'autorizzazione a un ruolo.Denys a permission to a role.
REVOKEREVOKE PermissionsPermissions Rimuove un'autorizzazione precedentemente concessa o negata.Removes a previously granted or denied permissions.

Ruolo di database publicpublic Database Role

Ogni utente di database appartiene al ruolo di database public .Every database user belongs to the public database role. Quando a un utente non sono state concesse o sono state negate autorizzazioni specifiche per un oggetto a protezione diretta, l'utente eredita le autorizzazioni concesse a public su tale oggetto.When a user has not been granted or denied specific permissions on a securable object, the user inherits the permissions granted to public on that object. Gli utenti di database non possono essere rimossi dal ruolo public .Database users cannot be removed from the public role.

Viste del catalogo relative alla sicurezza (Transact-SQL)Security Catalog Views (Transact-SQL)

Stored procedure di sicurezza (Transact-SQL)Security Stored Procedures (Transact-SQL)

Funzioni di sicurezza (Transact-SQL)Security Functions (Transact-SQL)

Sicurezza di SQL ServerSecuring SQL Server

sp_helprotect (Transact-SQL)sp_helprotect (Transact-SQL)