HackTricks 및 HackTricks Cloud에 PR을 제출하여 해킹 트릭을 공유하세요
github 저장소.
기본 정보
Google Cloud BigQuery는 완전히 관리되는 서버리스 엔터프라이즈 데이터 웨어하우스로, 페타바이트 단위의 데이터를 분석할 수 있는 기능을 제공하여 대규모 데이터셋을 효율적으로 처리합니다. 플랫폼으로서의 서비스(PaaS)로, 수동 감시가 필요하지 않은 데이터 관리를 위한 인프라 및 도구를 제공합니다.
ANSI SQL을 사용한 쿼리를 지원합니다. 주요 객체는 데이터를 포함하는 테이블을 포함하는 데이터셋입니다.
암호화
기본적으로 Google 관리형 암호화 키가 사용되지만 **고객 관리형 암호화 키 (CMEK)**를 구성할 수 있습니다. 데이터셋 및 데이터셋 내 테이블 당 암호화 키를 지정할 수 있습니다.
만료
데이터셋에 만료 시간을 지정하여 해당 데이터셋에 생성된 새 테이블이 생성 후 지정된 일 수 후에 자동으로 삭제될 수 있습니다.
외부 소스
BigQuery는 다른 Google 서비스와 깊게 통합되어 있습니다. 버킷, pub/sub, google drive, RDS 데이터베이스에서 데이터를 로드할 수 있습니다.
데이터셋 ACL
데이터셋이 생성되면 ACL이 첨부되어 액세스 권한이 부여됩니다. 기본적으로 데이터셋을 만든 사용자에게 소유자 권한이 부여되며 그룹 projectOwners (프로젝트 소유자), projectWriters 그룹에는 작성자 권한이, projectReaders 그룹에는 리더 권한이 부여됩니다.
행 액세스 정책을 사용하여 테이블 내에서 주체가 액세스할 수 있는 행을 제어할 수 있습니다. 이러한 정책은 DDL을 사용하여 테이블 내에서 정의됩니다.
액세스 정책은 필터를 정의하며 해당 필터와 일치하는 행만 지정된 주체가 액세스할 수 있습니다.
# CreateCREATEROW ACCESS POLICY apac_filterON project.dataset.my_tableGRANTTO ('user:abc@example.com')FILTERUSING (region ='APAC');# UpdateCREATEORREPLACEROW ACCESS POLICYCREATEROW ACCESS POLICY sales_us_filterON project.dataset.my_tableGRANTTO ('user:john@example.com','group:sales-us@example.com','group:sales-managers@example.com')FILTERUSING (region ='US');# Check the Post Exploitation tricks to see how tocall this from the cli
# Enumerate row policies on a tablebqls--row_access_policies<proj>:<dataset>.<table># Get row policies
# Dataset infobqls# List datasetsbqls-a# List all datasets (even hidden)bqls<proj>:<dataset># List tables in a datasetbqshow--format=prettyjson<proj>:<dataset># Get info about the dataset (like ACLs)# Tables infobqshow--format=prettyjson<proj>:<dataset>.<table># Get table infobqshow--schema<proj>:<dataset>.<table># Get schema of a table# Get entries from the tablebqhead<dataset>.<table>bqquery--nouse_legacy_sql'SELECT * FROM `<proj>.<dataset>.<table-name>` LIMIT 1000'bqextract<dataset>.<table>"gs://<bucket>/table*.csv"# Use the * so it can dump everything in different files# Insert databq query --nouse_legacy_sql 'INSERT INTO `digital-bonfire-410512.importeddataset.tabletest` (rank, refresh_date, dma_name, dma_id, term, week, score) VALUES (22, "2023-12-28", "Baltimore MD", 512, "Ms", "2019-10-13", 62), (22, "2023-12-28", "Baltimore MD", 512, "Ms", "2020-05-24", 67)'
bqinsertdataset.table/tmp/mydata.json# Get permissionsbqget-iam-policy<proj>:<dataset># Get dataset IAM policybqshow--format=prettyjson<proj>:<dataset># Get dataset ACLsbqget-iam-policy<proj>:<dataset>.<table># Get table IAM policybqls--row_access_policies<proj>:<dataset>.<table># Get row policies# Taxonomies (Get the IDs from the shemas of the tables)gclouddata-catalogtaxonomiesdescribe<taxonomi-ID>--location=<location>gclouddata-catalogtaxonomieslist--location<location>#Find moregclouddata-catalogtaxonomiesget-iam-policy<taxonomi-ID>--location=<location># Miscbqshow--encryption_service_account# Get encryption service account