Skip to content

Commit 018dee2

Browse files
sararobcopybara-github
authored andcommitted
feat: GenAI SDK client - Add import_files method to RAG client
PiperOrigin-RevId: 929240282
1 parent 20471f3 commit 018dee2

6 files changed

Lines changed: 1437 additions & 0 deletions

File tree

agentplatform/_genai/_gcs_utils.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,43 @@ def read_gcs_file_to_dataframe(
190190
f"Unsupported file type: '{file_type}'. Please provide 'jsonl' or"
191191
" 'csv'."
192192
)
193+
194+
def _verify_bucket_ownership(
195+
self,
196+
bucket_name: str,
197+
expected_project: str,
198+
) -> bool:
199+
"""Verifies that a GCS bucket belongs to the expected project.
200+
201+
This check mitigates bucket squatting attacks.
202+
203+
Args:
204+
bucket_name: The GCS bucket to verify.
205+
expected_project: The project ID or number that should own the bucket.
206+
207+
Returns:
208+
True if the bucket belongs to the expected project, False otherwise.
209+
"""
210+
try:
211+
bucket = self.storage_client.bucket(bucket_name=bucket_name)
212+
bucket.reload(client=self.storage_client)
213+
bucket_project_number = str(bucket.project_number)
214+
215+
if expected_project.isdigit():
216+
expected_project_number = expected_project
217+
else:
218+
from google.cloud import resourcemanager_v3
219+
220+
projects_client = resourcemanager_v3.ProjectsClient(
221+
credentials=self.storage_client._credentials
222+
)
223+
project = projects_client.get_project(
224+
name=f"projects/{expected_project}"
225+
)
226+
227+
expected_project_number = project.name.split("/")[-1]
228+
229+
return bucket_project_number == expected_project_number
230+
except Exception:
231+
return False
232+

0 commit comments

Comments
 (0)