From 1d8cfbfc07ad7388d8cc454e8a5690f18b256dc8 Mon Sep 17 00:00:00 2001 From: Adrien Bouvais Date: Sat, 15 Aug 2026 20:10:08 +0200 Subject: [PATCH] Renamed test_buckets --- images/jupyter/dockerfile | 2 +- images/jupyter/test_buckets.py | 37 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 images/jupyter/test_buckets.py diff --git a/images/jupyter/dockerfile b/images/jupyter/dockerfile index 135550c..6414690 100644 --- a/images/jupyter/dockerfile +++ b/images/jupyter/dockerfile @@ -9,7 +9,7 @@ RUN pip install --no-cache-dir -r /tmp/requirements.txt \ USER appuser WORKDIR /home/appuser/work -COPY --chown=appuser:appuser test_script.py /home/appuser/work/test_script.py +COPY --chown=appuser:appuser test_script.py /home/appuser/work/test_buckets.py EXPOSE 8888 diff --git a/images/jupyter/test_buckets.py b/images/jupyter/test_buckets.py new file mode 100644 index 0000000..ee436d1 --- /dev/null +++ b/images/jupyter/test_buckets.py @@ -0,0 +1,37 @@ +import os +import boto3 + +s3 = boto3.client( + 's3', + endpoint_url=os.environ['S3_ENDPOINT'], + aws_access_key_id=os.environ['MINIO_ACCESS_KEY_ID'], + aws_secret_access_key=os.environ['MINIO_SECRET_ACCESS_KEY'] +) + +ref_bucket = os.environ['BUCKET_REF'] +work_bucket = os.environ['BUCKET_WORK'] + +# 1. READ FROM REFERENCE BUCKET (Should PASS) +response = s3.list_objects_v2(Bucket=ref_bucket) +data = s3.get_object(Bucket=ref_bucket, Key="hello.txt")['Body'].read() +print("SUCCESS: List items in ref bucket:", response['KeyCount'], data.decode()) + +# 2. WRITE TO REFERENCE BUCKET (Should FAIL with 403 Forbidden) +try: + s3.put_object(Bucket=ref_bucket, Key="test.txt", Body=b"forbidden write") + print("ERROR: Write succeeded when it should be forbidden!") +except Exception as e: + print("SUCCESS: Write to reference bucket blocked:", e) + +# 3. WRITE & READ WORK BUCKET (Should PASS) +s3.put_object(Bucket=work_bucket, Key="data.txt", Body=b"hello tenant") +data = s3.get_object(Bucket=work_bucket, Key="data.txt")['Body'].read() +print("SUCCESS: Read back from work bucket:", data.decode()) + +# 4. ACCESS OTHER TENANT BUCKET (Should FAIL with Access Denied) +try: + s3.list_objects_v2(Bucket="work-tenant-b") + print("ERROR: Accessed tenant-b bucket!") +except Exception as e: + print("SUCCESS: Access to tenant-b blocked:", e) +