GRANT di SQL Server

Grant Di Sql Server



In questo articolo verrà illustrato come utilizzare l'istruzione GRANT in SQL Server per concedere autorizzazioni su un'entità a protezione diretta a un'entità.

SQL Server a protezione diretta e principale

Un elemento a protezione diretta fa riferimento alle risorse a cui il sistema di autorizzazione del Motore di database di SQL Server controlla l'accesso. Un esempio potrebbe essere una tabella di database.

Un'entità fa riferimento a qualsiasi entità che richiede l'accesso a qualsiasi risorsa di SQL Server. Ad esempio, un utente che richiede autorizzazioni su una tabella è un principal.







Dichiarazione di concessione di SQL Server

Quanto segue mostra la sintassi del comando GRANT in SQL Server:



CONCEDERE autorizzazioni
ON fissabile TO principale;

È necessario specificare l'autorizzazione che si desidera assegnare al principale come elenco separato da virgole.



La parola chiave ON consente di specificare l'entità a protezione diretta su cui vengono applicate le autorizzazioni. Infine, la parola chiave TO consente di impostare il principal di destinazione.





Ad esempio, la creazione di un utente utilizzando l'istruzione CREATE USER non definisce le autorizzazioni per quell'utente. È quindi essenziale utilizzare l'istruzione GRANT per impostare le autorizzazioni per quell'utente.

Facciamo un esempio.



Crea login di esempio

Iniziamo creando un login di esempio a scopo illustrativo. La query è quella riportata di seguito:

creare login linuxhint
con password='password';

Il comando sopra dovrebbe creare un utente con il nome utente linuxhint e la password specificata.

Crea un database di esempio

Possiamo creare un database in cui risiederà l'utente una volta definito un login. Le query sono come mostrato:

eliminare il database se esiste il risolutore;

creare un risolutore di database;

usa il risolutore;

elimina la tabella se esiste le voci;

crea voci di tabella (
id int non null identity(1,
1) chiave primaria,
nome_server varchar(50),
indirizzo_server varchar(255) non nullo,
compression_method varchar(100) predefinito 'nessuno',
size_on_disk float non nullo,
dimensione_float compresso,
total_records int non nullo,
init_date data
);
inserire
in
VOCI(nome_server,
indirizzo del server,
metodo di compressione,
spazio sul disco,
dimensione_compressa,
totale_record,
init_data)
i valori
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

Crea un utente per il login

Dopo aver creato il database e la tabella, possiamo creare un utente per l'accesso linuxhint come:

usa il risolutore
creare utente linuxhint
per l'accesso linuxhint;

Accedi come nuovo utente

Quindi, accediamo come utente appena creato. Il comando è come mostrato:

setuser 'linuxhint';

Una volta effettuato l'accesso, possiamo tentare di visualizzare le tabelle eseguendo il comando select:

selezionare * dalle voci;

L'esecuzione della query precedente dovrebbe restituire un errore:

Msg 229, Livello 14, Stato 5, Linea 379
L'autorizzazione SELECT è stata negata sull'oggetto 'entries', database 'resolver', schema 'dbo'.

Questo perché l'utente linuxhint non ha alcuna autorizzazione sul database, incluse le autorizzazioni SELECT.

Concedere l'autorizzazione all'utente

Dobbiamo concedere le autorizzazioni SELECT per consentire all'utente di visualizzare le informazioni memorizzate nelle tabelle.

Per questo, è necessario accedere con l'account amministrativo di SQL Server.

Successivamente, esegui la query come:

concedere la selezione delle voci a linuxhint;

Una volta eseguito, accedere come utente linuxhint e utilizzare l'istruzione SELECT.

selezionare * dalle voci;

In questo caso, il comando restituisce la tabella poiché l'utente dispone delle autorizzazioni SELECT

Puoi anche assegnare altre autorizzazioni all'utente, come inserire ed eliminare come:

concedere insert, delete sulle voci di linuxhint;

in questo caso, l'utente linuxhint dovrebbe disporre dei permessi SELECT, INSERT e DELETE sulla tabella delle voci.

Conclusione

In questo post, abbiamo esplorato l'utilizzo del comando GRANT in SQL Server. Il comando consente di assegnare autorizzazioni a un determinato principal.