Κοινοποίηση μέσω


Ασφάλεια σε επίπεδο γραμμών στο OneLake (προεπισκόπηση)

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

Προαπαιτούμενα στοιχεία

  • Ένα στοιχείο στο OneLake με ενεργοποιημένη την ασφάλεια OneLake. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Γρήγορα αποτελέσματα με τους ρόλους πρόσβασης δεδομένων OneLake.
  • Αλλάξτε το Τελικό σημείο ανάλυσης SQL στη λίμνη σε λειτουργία "Ταυτότητα χρήστη" μέσω της καρτέλας Ασφάλεια .
  • Για τη δημιουργία σημασιολογικών μοντέλων, χρησιμοποιήστε τα βήματα για να δημιουργήσετε ένα μοντέλο DirectLake.
  • Για μια πλήρη λίστα των περιορισμών, ανατρέξτε στην ενότητα γνωστών περιορισμών.

Επιβολή ασφάλειας σε επίπεδο γραμμών

Το RLS ασφαλείας OneLake επιβάλλεται με έναν από τους εξής δύο τρόπους:

  • φιλτραρισμένοι πίνακες σε μηχανές Fabric: ερωτημάτων στη λίστα των υποστηριζόμενων μηχανών Fabric, όπως τα σημειωματάρια Spark, έχει ως αποτέλεσμα ο χρήστης να βλέπει μόνο τις γραμμές που επιτρέπεται να βλέπει σύμφωνα με τους κανόνες RLS.
  • Αποκλεισμένη πρόσβαση σε πίνακες: Πίνακες με κανόνες RLS που εφαρμόζονται σε αυτούς δεν μπορούν να διαβαστούν εκτός των υποστηριζόμενων μηχανών Fabric.

Για τους φιλτραρισμένους πίνακες, ισχύουν οι ακόλουθες συμπεριφορές:

  • Οι κανόνες RLS δεν περιορίζουν την πρόσβαση για χρήστες με ρόλους διαχειριστή, μέλους και συμβάλλοντα.
  • Εάν ο κανόνας RLS έχει ασυμφωνία με τον πίνακα στον οποίο ορίζεται, το ερώτημα αποτυγχάνει και δεν επιστρέφονται γραμμές. Για παράδειγμα, εάν ο κανόνας RLS αναφέρεται σε μια στήλη που δεν είναι μέρος του πίνακα.
  • Τα ερωτήματα πινάκων RLS αποτυγχάνουν με σφάλμα, εάν ένας χρήστης ανήκει σε δύο διαφορετικούς ρόλους και ένας από τους ρόλους διαθέτει ασφάλεια σε επίπεδο στηλών (CLS).
  • Οι κανόνες RLS μπορούν να επιβληθούν μόνο για αντικείμενα που είναι πίνακες παρκέ Delta.
    • Οι κανόνες RLS που εφαρμόζονται σε αντικείμενα πίνακα που δεν είναι Delta αποκλείουν την πρόσβαση σε ολόκληρο τον πίνακα για τα μέλη του ρόλου.
  • Η πρόσβαση σε έναν πίνακα μπορεί να αποκλειστεί εάν η πρόταση RLS περιέχει σφάλματα σύνταξης που εμποδίζουν την αξιολόγησή του.

Ορισμός κανόνων ασφάλειας σε επίπεδο γραμμών

Μπορείτε να ορίσετε κανόνες ασφάλειας σε επίπεδο γραμμών ως μέρος οποιουδήποτε ρόλου ασφαλείας OneLake που εκχωρεί πρόσβαση σε δεδομένα πίνακα σε μορφή παρκέ Delta. Οι γραμμές είναι μια έννοια που αφορά μόνο τα δεδομένα σε μορφή πίνακα, επομένως δεν επιτρέπονται ορισμοί RLS για φακέλους που δεν είναι πίνακες ή μη δομημένα δεδομένα.

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

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

Χρησιμοποιήστε τα παρακάτω βήματα για να ορίσετε κανόνες RLS:

  1. Μεταβείτε στο Lakehouse και επιλέξτε Διαχείριση ασφάλειας OneLake (προεπισκόπηση).

  2. Επιλέξτε έναν υπάρχοντα ρόλο για τον οποίο θέλετε να ορίσετε ασφάλεια πίνακα ή φακέλου ή επιλέξτε Νέο για να δημιουργήσετε έναν νέο ρόλο.

  3. Στη σελίδα λεπτομερειών ρόλου, επιλέξτε περισσότερες επιλογές (...) δίπλα στον πίνακα για τον οποίο θέλετε να ορίσετε RLS και, στη συνέχεια, επιλέξτε ασφάλεια γραμμών (προεπισκόπηση).

    Στιγμιότυπο οθόνης που εμφανίζει την επιλογή

  4. Πληκτρολογήστε την πρόταση SQL για να ορίσετε τις γραμμές που θέλετε να βλέπουν οι χρήστες στο πρόγραμμα επεξεργασίας κώδικα. Χρησιμοποιήστε την ενότητα κανόνες σύνταξης για οδηγίες.

  5. Επιλέξτε Αποθήκευση για να επιβεβαιώσετε τους κανόνες ασφάλειας γραμμής.

Ενεργοποίηση ασφάλειας OneLake για τελικό σημείο ανάλυσης SQL

Για να μπορέσετε να χρησιμοποιήσετε την ασφάλεια OneLake με το τελικό σημείο ανάλυσης SQL, πρέπει να ενεργοποιήσετε τη λειτουργία ταυτότητας χρήστη. Τα τελικά σημεία SQL analytics που δημιουργήθηκαν πρόσφατα θα μεταβούν από προεπιλογή στη λειτουργία ταυτότητας του χρήστη, επομένως αυτά τα βήματα πρέπει να ακολουθούνται για τα υπάρχοντα τελικά σημεία SQL analytics.

Σημείωση

Η μετάβαση στη λειτουργία ταυτότητας του χρήστη χρειάζεται να γίνει μόνο μία φορά ανά τελικό σημείο ανάλυσης SQL. Τα τελικά σημεία που δεν μεταβαίνουν στη λειτουργία ταυτότητας του χρήστη θα συνεχίσουν να χρησιμοποιούν μια ταυτότητα με ανάθεση για την αξιολόγηση των δικαιωμάτων.

  1. Μεταβείτε στο τελικό σημείο ανάλυσης SQL.

  2. Στην εμπειρία τελικού σημείου ανάλυσης SQL, επιλέξτε την καρτέλα Ασφάλεια στην επάνω κορδέλα.

  3. Επιλέξτε Ταυτότητα χρήστη στη λειτουργία πρόσβασης OneLake.

    Στιγμιότυπο οθόνης που εμφανίζει την επιλογή

  4. Στο μήνυμα, επιλέξτε Ναι, χρησιμοποιήστε την ταυτότητα του χρήστη.

    Στιγμιότυπο οθόνης που εμφανίζει ένα μήνυμα χρήστη που πρέπει να γίνει αποδεκτό για να ενεργοποιήσετε την ασφάλεια OneLake για πρόσβαση ανάγνωσης πίνακα.

Τώρα, το τελικό σημείο ανάλυσης SQL είναι έτοιμο για χρήση με την ασφάλεια OneLake.

Κανόνες σύνταξης

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

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'

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

Σύμβολο κράτησης θέσης Περιγραφή
{schema_name} Το όνομα του σχήματος στο οποίο βρίσκεται το {table_name}. Εάν το αντικείμενο σχεδίασης υποστηρίζει σχήματα, τότε απαιτούνται {schema_name}.
{table_name} Το όνομα του πίνακα στον οποίο εφαρμόζεται το κατηγόρημα RLS. Αυτή η τιμή πρέπει να συμφωνεί απόλυτα με το όνομα του πίνακα ή το RLS δεν έχει ως αποτέλεσμα να μην εμφανίζονται γραμμές.
{column_level_boolean} Μια δυαδική πρόταση που περιέχει τα ακόλουθα στοιχεία:

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

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

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

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

Τελεστής Περιγραφή
= (ισούται με) Αξιολογείται ως true εάν οι δύο τιμές είναι του ίδιου τύπου δεδομένων και ακριβείς αντιστοιχίες.
<> (δεν ισούται με) Αξιολογεί την τιμή true εάν οι δύο τιμές δεν είναι του ίδιου τύπου δεδομένων και δεν αντιστοιχούν ακριβώς.
> (μεγαλύτερο από) Αξιολογείται ως true εάν η τιμή της στήλης είναι μεγαλύτερη από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν η μία συμβολοσειρά είναι μεγαλύτερη από την άλλη.
>= (μεγαλύτερο από ή ίσο με) Αξιολογείται ως true εάν η τιμή στήλης είναι μεγαλύτερη ή ίση με την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν μια συμβολοσειρά είναι μεγαλύτερη ή ίση με την άλλη.
< (μικρότερο από) Αξιολογείται ως true εάν η τιμή στήλης είναι μικρότερη από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν η μία συμβολοσειρά είναι μικρότερη από την άλλη.
<= (μικρότερο από ή ίσο με) Αξιολογείται ως true εάν η τιμή στήλης είναι μικρότερη ή ίση από την τιμή αξιολόγησης. Για τις τιμές συμβολοσειράς, αυτός ο τελεστής χρησιμοποιεί σύγκριση bit για να προσδιοριστεί εάν μία συμβολοσειρά είναι μικρότερη ή ίση με την άλλη.
ΜΈΣΑ Αξιολογεί την τιμή true εάν οποιαδήποτε από τις τιμές αξιολόγησης είναι του ίδιου τύπου δεδομένων και ταιριάζει απόλυτα με την τιμή της στήλης.
ΌΧΙ Αξιολογεί την τιμή true εάν οποιαδήποτε από τις τιμές αξιολόγησης δεν είναι του ίδιου τύπου δεδομένων ή δεν συμφωνεί απόλυτα με την τιμή της στήλης.
ΚΑΙ Συνδυάζει την προηγούμενη πρόταση και την επόμενη πρόταση χρησιμοποιώντας μια δυαδική λειτουργία AND. Και οι δύο προτάσεις πρέπει να είναι αληθείς για να είναι αληθές ολόκληρο το κατηγόρημα.
Ή Συνδυάζει την προηγούμενη πρόταση και την επόμενη πρόταση χρησιμοποιώντας μια δυαδική λειτουργία OR. Μία από τις δηλώσεις πρέπει να είναι αληθής για να είναι αληθές ολόκληρο το κατηγόρημα.
ΠΙΣΤΌΣ Η δυαδική παράσταση για true.
ΨΕΎΤΙΚΟΣ Η δυαδική παράσταση για false.
ΛΕΥΚΌΣ Ο κενός τύπος δεδομένων, ο οποίος μπορεί να χρησιμοποιηθεί με τον τελεστή IS. Για παράδειγμα, row IS BLANK.
ΆΚΥΡΟΣ Ο τύπος δεδομένων null, ο οποίος μπορεί να χρησιμοποιηθεί με τον τελεστή IS. Για παράδειγμα, row IS NULL.

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

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

Η ασφάλεια OneLake δεν υποστηρίζει τον συνδυασμό δύο ή περισσότερων ρόλων όπου ο ένας περιέχει κανόνες RLS και ένας άλλος περιέχει κανόνες CLS. Οι χρήστες που προσπαθούν να αποκτήσουν πρόσβαση σε πίνακες που αποτελούν μέρος ενός μη υποστηριζόμενου συνδυασμού ρόλων λαμβάνουν σφάλματα ερωτήματος.