J'utilise SQL Server 2016 pour ces tests.
Ce qui suit ne m'a pas permis de créer une table dans le schéma S pour l'utilisateur U
USE [D];
GRANT CONTROL ON SCHEMA :: [S] TO [U];
Mais cela a fait:
USE [D]
GRANT ALTER ON SCHEMA :: [S] TO [U];
GRANT CREATE TABLE TO [U];
Qu'est-ce que GRANT CONTROL est censé faire si vous devez exécuter ces deux commandes supplémentaires pour permettre à l'utilisateur de créer une table dans un schéma spécifique?
Cette description est sympa, mais quel type de cas d'utilisation puis-je exécuter pour confirmer (avec succès ou échec) que la commande GRANT CONTROL a physiquement affecté la sécurité de l'utilisateur sur la base de données avec et sans ce schéma, avant et après l'exécution de la commande?
Autorisation CONTROL: l'autorisation CONTROL peut être utilisée pour accorder facilement toutes les autorisations sur une entité à un principal. C'est la meilleure chose après la propriété de l'entité, mais ce n'est pas aussi puissant que la propriété. La principale différence est qu'un bénéficiaire de CONTROL peut toujours se voir refuser d'autres autorisations sur l'entité. Par exemple, on peut me donner CONTROL sur une table, alors qu'en même temps on peut me refuser SELECT sur cette table, m'empêchant de faire une sélection - cela ne peut jamais arriver au propriétaire, car le propriétaire ne peut pas se voir accorder ou refuser des autorisations .
Pour voir ce que vous apporte CONTROL
sur schéma, créez un utilisateur de test sans aucune autorisation, accordez-lui CONTROL
sur schéma et vérifiez les autorisations qu'il a après:
create user test;
grant control on schema::dbo to test;
execute as user = 'test';
select *
from sys.fn_my_permissions('dbo', 'schema');
revert;
Voici ce que vous obtiendrez:
Quand tu veux CREATE TABLE
vous devez ouvrir l'article BOL CREATE TABLE (Transact-SQL) et faites défiler jusqu'à PERMISSIONS:
Maintenant, vous voyez que même si votre table n'est pas censée avoir des colonnes de type défini par l'utilisateur CLR, vous avez toujours besoin de CREATE TABLE
autorisation à accorder à votre utilisateur pour lui permettre de créer une table.
L'utilisateur de test a déjà ALTER SCHEMA
implicite par CONTROL
sur le schéma, mais CREATE TABLE
doit être accordé (ainsi que l'autorisation REFERENCE
en cas de type défini par l'utilisateur CLR).
CONTROL
confère des autorisations de type divin à un objet "sécurisable" (par exemple, une base de données, etc.) dans SQL Server.