Αναφορά σύνταξης ασφαλείας σε επίπεδο γραμμών

Αυτό το άρθρο τεκμηριώνει τη σύνταξη για τον ορισμό κανόνων ασφάλειας σε επίπεδο γραμμών (RLS) στην ασφάλεια OneLake. Για να εφαρμόσετε έναν κανόνα RLS σε έναν πίνακα, ανατρέξτε στο θέμα Δημιουργία και διαχείριση ρόλων ασφαλείας OneLake.

Οι κανόνες RLS χρησιμοποιούν σύνταξη SQL για να καθορίσουν τις γραμμές που μπορεί να δει ένας χρήστης. Η σύνταξη έχει τη μορφή πρότασης SQL SELECT με τους κανόνες RLS που ορίζονται στον WHERE όρο. Οι κανόνες RLS υποστηρίζουν μόνο το υποσύνολο της SQL που ορίζεται σε αυτό το άρθρο. Ερωτήματα με μη έγκυρη σύνταξη RLS ή σύνταξη RLS που δεν συμφωνεί με τον υποκείμενο πίνακα, έχουν ως αποτέλεσμα να μην εμφανίζονται γραμμές στους χρήστες ή σφάλματα ερωτήματος στο τελικό σημείο ανάλυσης SQL.

Καθώς γράφετε παραστάσεις RLS, λάβετε υπόψη τις ακόλουθες βέλτιστες πρακτικές:

  • Αποφύγετε τις ασαφείς ή υπερβολικά περίπλοκες εκφράσεις RLS.
  • Οι έντονα πληκτρολογημένες εκφράσεις με ακέραιους αριθμούς ή αναζητήσεις συμβολοσειρών που χρησιμοποιούν το "=" είναι οι πιο ασφαλείς και πιο κατανοητές.
  • Χρησιμοποιήστε ακέραιες στήλες για ταξινόμηση και λειτουργίες μεγαλύτερες ή μικρότερες από.
  • Αποφύγετε τις ισοδυναμίες συμβολοσειρών εάν δεν γνωρίζετε τη μορφή των δεδομένων εισόδου, ειδικά για χαρακτήρες Unicode ή ευαισθησία τόνου.

Η ασφάλεια σε επίπεδο γραμμών αξιολογεί τα δεδομένα συμβολοσειράς ως δεδομένα χωρίς διάκριση πεζών-κεφαλαίων, χρησιμοποιώντας την ακόλουθη συρραφή για ταξινόμηση και συγκρίσεις: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Σύνταξη

Ο μέγιστος αριθμός χαρακτήρων σε έναν κανόνα ασφάλειας σε επίπεδο γραμμών είναι 1000.

Όλοι οι κανόνες ασφάλειας σε επίπεδο γραμμών έχουν την ακόλουθη μορφή:

SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}

Για παράδειγμα:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Σύμβολο κράτησης θέσης Περιγραφή
{schema_name} Το όνομα του σχήματος που περιέχει {table_name}. Εάν το στοιχείο υποστηρίζει σχήματα, πρέπει να συμπεριλάβετε {schema_name}.
{table_name} Το όνομα του πίνακα στον οποίο εφαρμόζεται το κατηγόρημα RLS. Αυτή η τιμή πρέπει να ταιριάζει ακριβώς με το όνομα του πίνακα, διαφορετικά το RLS δεν εμφανίζει γραμμές. Χρησιμοποιήστε αγκύλες [] για να διαφύγετε από ονόματα πινάκων με ειδικούς χαρακτήρες. Για παράδειγμα, SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Μια δυαδική πρόταση που περιέχει τα ακόλουθα στοιχεία:

* Όνομα στήλης: Το όνομα μιας στήλης στο {table_name}, όπως εμφανίζεται στο σχήμα αρχείου καταγραφής δέλτα. Μπορείτε να μορφοποιήσετε τα ονόματα στηλών είτε ως {column_name} είτε ως {table_name}. {column_name}.
* Τελεστής: Ένας από τους υποστηριζόμενους τελεστές που αξιολογεί το όνομα και την τιμή της στήλης σε μια δυαδική τιμή.
* Τιμή: Μια στατική τιμή ή ένα σύνολο τιμών για αξιολόγηση.

Μπορείτε να έχετε μία ή περισσότερες δυαδικές προτάσεις διαχωρισμένες με AND ή OR.

Υποστηριζόμενοι τελεστές

Οι κανόνες ασφαλείας σε επίπεδο γραμμών υποστηρίζουν τους ακόλουθους τελεστές και λέξεις-κλειδιά:

Τελεστής Περιγραφή
= (ισούται με) Αξιολογείται ως true εάν οι δύο τιμές είναι του ίδιου τύπου δεδομένων και ακριβείς αντιστοιχίες.
<> (δεν ισούται με) Αξιολογεί την τιμή true εάν οι δύο τιμές δεν είναι του ίδιου τύπου δεδομένων και δεν αντιστοιχούν ακριβώς.
> (μεγαλύτερο από) Αξιολογείται ως true εάν η τιμή της στήλης είναι μεγαλύτερη από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν η μία συμβολοσειρά είναι μεγαλύτερη από την άλλη.
>= (μεγαλύτερο από ή ίσο με) Αξιολογείται ως true εάν η τιμή στήλης είναι μεγαλύτερη ή ίση με την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν μια συμβολοσειρά είναι μεγαλύτερη ή ίση με την άλλη.
< (μικρότερο από) Αξιολογείται ως true εάν η τιμή στήλης είναι μικρότερη από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν η μία συμβολοσειρά είναι μικρότερη από την άλλη.
<= (μικρότερο από ή ίσο με) Αξιολογείται ως true εάν η τιμή στήλης είναι μικρότερη ή ίση από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν μία συμβολοσειρά είναι μικρότερη ή ίση με την άλλη.
IN Αξιολογεί την τιμή true εάν οποιαδήποτε από τις τιμές αξιολόγησης είναι του ίδιου τύπου δεδομένων και ταιριάζει απόλυτα με την τιμή της στήλης.
NOT Αξιολογεί την τιμή true εάν οποιαδήποτε από τις τιμές αξιολόγησης δεν είναι του ίδιου τύπου δεδομένων ή δεν συμφωνεί απόλυτα με την τιμή της στήλης.
AND Συνδυάζει την προηγούμενη πρόταση και την επόμενη πρόταση χρησιμοποιώντας μια δυαδική πράξη AND. Και οι δύο προτάσεις πρέπει να είναι αληθείς για να είναι αληθές ολόκληρο το κατηγόρημα.
OR Συνδυάζει την προηγούμενη πρόταση και την επόμενη πρόταση χρησιμοποιώντας μια δυαδική λειτουργία OR. Μία από τις δηλώσεις πρέπει να είναι αληθής για να είναι αληθές ολόκληρο το κατηγόρημα.
TRUE Η δυαδική παράσταση για true.
FALSE Η δυαδική παράσταση για false.
BLANK Ο κενός τύπος δεδομένων, τον οποίο μπορείτε να χρησιμοποιήσετε με τον τελεστή IS. Για παράδειγμα, row IS BLANK.
NULL Ο μηδενικός τύπος δεδομένων, τον οποίο μπορείτε να χρησιμοποιήσετε με τον τελεστή IS. Για παράδειγμα, row IS NULL.