১. ভূমিকা
এই কোডল্যাব আপনাকে VPC Service Controls পেরিমিটার সহ এজেন্ট ও Agent Gateway সেট-আপ করার জন্য Google Cloud এনভায়রনমেন্ট কনফিগার করার ব্যাপারে গাইড করে। আপনি VPC পরিষেবা কন্ট্রোল পরিধি স্থাপন করেন, নেটওয়ার্কিং ও DNS কনফিগার করেন, Identity-Aware Proxy (IAP) অনুরোধ অনুমোদন সহ এজেন্ট গেটওয়ে ডিপ্লয় করেন এবং এজেন্টকে নিরাপদে পরীক্ষা করেন।
আপনি কী তৈরি করবেন
এই কোডল্যাবে, আপনি Gemini Enterprise Agent Platform ও Agent Gateway-এর জন্য একটি সুরক্ষিত Google Cloud আর্কিটেকচার তৈরি করবেন যা নিম্নলিখিত কাজগুলি করে:
- অননুমোদিত ডেটা এক্সফিল্ট্রেশনের বিরুদ্ধে প্রোজেক্ট রিসোর্স সুরক্ষিত রাখতে সাহায্য করার জন্য VPC Service Controls ব্যবহার করে।
- প্রাইভেট API রাউটিংয়ের জন্য প্রাইভেট Google অ্যাক্সেস, Private Service Connect (PSC) এবং Cloud DNS প্রাইভেট জোন কনফিগার করে।
- সেন্ট্রালাইজড ট্রাফিক প্রক্সি, এগ্রেস নিয়ম ও প্রোটোকল কনফিগারেশন সহ এজেন্ট গেটওয়ে প্রদান করে।
- Identity-Aware Proxy (IAP) অনুরোধ অনুমোদন সংক্রান্ত নীতি প্রয়োগ করে।
- প্রাইভেট কানেক্টিভিটির মাধ্যমে এজেন্ট ইঞ্জিন এজেন্টকে ডিপ্লয় ও নিরাপদে পরীক্ষা করে।
আপনি কী শিখবেন
- এজেন্ট প্ল্যাটফর্ম ও নিরাপত্তার জন্য প্রয়োজনীয় Google Cloud API কীভাবে চালু করতে হয়।
- VPC Service Controls পেরিমিটার ও ইনগ্রেস অ্যাক্সেস নিয়ম কীভাবে কনফিগার করতে হয়।
- কীভাবে প্রাইভেট নেটওয়ার্ক কানেক্টিভিটি ও প্রাইভেট ডিএনএস রেকর্ড সেট-আপ করতে হয়।
- কীভাবে এজেন্ট গেটওয়ে ও এজেন্ট কানেক্টিভিটি টেমপ্লেট তৈরি করতে হয়।
- IAP অনুরোধ অনুমোদন এক্সটেনশন ও নীতি কীভাবে কনফিগার করতে হয়।
- কীভাবে নিরাপদে Agent Engine এজেন্ট ডিপ্লয় ও পরীক্ষা করতে হয়।
আপনার কী কী প্রয়োজন
- Google Cloud CLI ইনস্টল করা এবং লেটেস্ট ভার্সনে আপডেট করা আছে।
- আপনার ওয়ার্কস্টেশনে Python 3 ইনস্টল করা থাকতে হবে।
- আপনার ওয়ার্কস্টেশনে Git ইনস্টল করা আছে।
- অ্যাক্টিভ Google Cloud সংস্থা ও বিলিং অ্যাকাউন্টের অনুমতি।
২. পূর্বশর্ত
সেট-আপ স্ক্রিপ্ট চালানোর আগে কমান্ড-লাইন টুলের প্রয়োজনীয়তা ও এনভায়রনমেন্ট কনফিগারেশন সম্পর্কে এই বিভাগে বলা আছে।
- Google Cloud CLI ইনস্টল করা আছে কিনা এবং লেটেস্ট ভার্সনে আপডেট করা আছে কিনা তা যাচাই করুন, তারপর আপনার Google অ্যাকাউন্ট দিয়ে যাচাই করিয়ে নিন। নেটওয়ার্ক পরিষেবা ও VPC Service Controls-এর জন্য লেটেস্ট ফিচার সাপোর্ট আছে কিনা তা নিশ্চিত করতে, আপনার Google Cloud CLI কম্পোনেন্ট আপডেট করুন।
gcloud components update
gcloud auth login
gcloud config set account USER_EMAIL
- কাস্টম এজেন্ট ফ্রেমওয়ার্ক কনফিগার ও ডেপ্লয় করার জন্য Python 3 ইনস্টল করা আছে কিনা তা যাচাই করুন। নির্দেশাবলীর জন্য, Python মডিউল ইনস্টল করা দেখুন:
python3 --version
- সেট-আপ কোড ও কনফিগারেশন টেমপ্লেট সহ নমুনা রিপোজিটরি ক্লোন করার জন্য Git ইনস্টল করা আছে কিনা তা নিশ্চিত করুন। নির্দেশাবলীর জন্য, Git ইনস্টলেশন দেখুন।
৩. Google Cloud প্রোজেক্ট কনফিগার করা
আপনার সংস্থার মধ্যে একটি আইসোলেটেড প্রোজেক্ট তৈরি করা নিশ্চিত করে যে এই কোডল্যাবে ব্যবহৃত সমস্ত রিসোর্স, নেটওয়ার্ক এবং অনুমতি এনক্যাপসুলেট করা এবং ম্যানেজ করা যায়। প্রোজেক্ট তৈরি ও ম্যানেজ করা সম্পর্কে আরও জানুন।
এই সেট-আপের রিসোর্স হোস্ট করার জন্য আপনার সংস্থার অধীনে একটি নতুন Google Cloud প্রোজেক্ট শুরু করুন। এছাড়াও, আপনি নিজের প্রোজেক্ট ব্যবহার করতে পারবেন:
export PROJ_ID="YOUR_PROJECT_ID"
gcloud projects create ${PROJ_ID} --organization=YOUR_ORG_ID
gcloud config set project $PROJ_ID
gcloud auth application-default set-quota-project $PROJ_ID
লগ-ইন করে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল পান:
gcloud auth application-default login
আপনার কনফিগারেশন যাচাই করুন:
gcloud config list
বিলিং চালু করুন
পরিষেবা ব্যবহার করার সুবিধা চালু করতে, নতুন তৈরি করা প্রোজেক্টের সাথে একটি অ্যাক্টিভ বিলিং অ্যাকাউন্ট লিঙ্ক করুন।
API কোটা ব্যবহার করা এবং এজেন্ট গেটওয়ে, ভার্চুয়াল প্রাইভেট ক্লাউড ও কম্পিউট নোডের মতো Google Cloud ইনফ্রাস্ট্রাকচার প্রোভিশন করার জন্য বিলিং চালু করা পূর্বশর্ত। বিলিং কনফিগারেশন সম্পর্কে আরও জানতে, Google Cloud বিলিং ডকুমেন্টেশন দেখুন।
gcloud billing accounts list
# Copy the billing account to assign to your GCP project
gcloud billing projects link $PROJ_ID --billing-account=BILLING_ACCOUNT_ID
৪. পরিষেবা চালু করা
এজেন্ট, এজেন্ট গেটওয়ে, নেটওয়ার্কিং, নিরাপত্তা ও অবজার্ভেবিলিটি ফিচারের জন্য প্রয়োজনীয় সব Google Cloud API চালু করুন।
API চালু করলে, সুরক্ষিত এজেন্ট কানেক্টিভিটির জন্য প্রয়োজনীয় রিসোর্স ম্যানেজমেন্ট, অবজার্ভেবিলিটি ও নেটওয়ার্কিং ক্ষমতার জন্য ব্যাকএন্ড ক্লাউড পরিষেবা এক্সপোজ করা হয়। পরিষেবা ব্যবহার API ডকুমেন্টেশন থেকে আরও জানুন।
gcloud services enable \
agentregistry.googleapis.com \
aiplatform.googleapis.com \
apphub.googleapis.com \
apptopology.googleapis.com \
cloudapiregistry.googleapis.com \
cloudtrace.googleapis.com \
compute.googleapis.com \
dataform.googleapis.com \
iam.googleapis.com \
iap.googleapis.com \
logging.googleapis.com \
modelarmor.googleapis.com \
monitoring.googleapis.com \
networksecurity.googleapis.com \
networkservices.googleapis.com \
notebooks.googleapis.com \
observability.googleapis.com \
securitycenter.googleapis.com
gcloud services enable \
saasservicemgmt.googleapis.com \
storage.googleapis.com \
telemetry.googleapis.com \
texttospeech.googleapis.com \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
dns.googleapis.com \
accesscontextmanager.googleapis.com \
discoveryengine.googleapis.com \
agentidentity.googleapis.com \
agentidentitycredentials.googleapis.com
৫. এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করা
অঞ্চল, প্রোজেক্ট আইডি, প্রোজেক্ট নম্বর, সংস্থা আইডি ও ব্যবহারকারীর পরিচয়ের জন্য আবার ব্যবহারযোগ্য এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করুন। শেল ভেরিয়েবল সেট করা হলে, বিভিন্ন ধাপ জুড়ে রিসোর্স কনফিগারেশন কমান্ড স্ট্যান্ডার্ডাইজ করা হয়, এর ফলে স্ক্রিপ্ট এক্সিকিউট করার সময় ম্যানুয়াল সাবস্টিটিউশন সংক্রান্ত ভুল হওয়ার সম্ভাবনা কমে যায়।
export REGION="us-central1"
export PROJ_ID=$(gcloud config list --format="value(core.project)")
export PROJ_NO=$(gcloud projects describe ${PROJ_ID} --format="value(projectNumber)")
export ORG_ID=$(gcloud projects get-ancestors ${PROJ_ID} --format="value(id)" | tail -n 1)
export USER_IDENTITY=$(gcloud config get-value account)
৬. VPC Service Controls পেরিমিটার তৈরি করা
আপনার প্রোজেক্ট রিসোর্স আলাদা করতে এবং ডেটা এক্সফিল্ট্রেশন প্রতিরোধ করতে VPC Service Controls পেরিমিটার তৈরি করুন। আরও তথ্যের জন্য, VPC পরিষেবা কন্ট্রোল ওভারভিউ দেখুন।
আপনার অ্যাক্সেস নীতি ফেচ করুন
আপনার সংস্থার সাথে যুক্ত অ্যাক্সেস কনটেক্সট ম্যানেজার নীতি আইডি রিট্রিভ করুন। VPC Service Controls পরিধি যেখানে অ্যাটাচ ও এনফোর্স করা হয়, Access Context Manager নীতি সেই সাংগঠনিক সীমাকে নির্ধারণ করে।
gcloud access-context-manager policies list --organization=$ORG_ID
আপনার অ্যাক্সেস নীতি এক্সপোর্ট করা
আপনার gcloud CLI কনফিগারেশনে অ্যাক্সেস নীতি সেট করুন এবং কাজ করে এমন সীমাবদ্ধ পরিষেবার তালিকা সংগ্রহ করুন। কাজ করে এমন সব পরিষেবা সংগ্রহ করলে, আপনি একটি সীমিত পেরিমিটার নিয়মের সেট তৈরি করতে পারবেন যা Google Cloud API এন্ডপয়েন্ট জুড়ে অননুমোদিত অ্যাক্সেস প্রতিরোধ করে।
export ACCESS_POLICY=ACCESS_POLICY_ID
gcloud config set access_context_manager/policy $ACCESS_POLICY
SUPPORTED_SERVICES=$(gcloud access-context-manager supported-services list --format="value(name)" | paste -sd, -)
সীমানা তৈরি করা
পরিষেবা পরিধির নাম নির্ধারণ করুন এবং প্রোজেক্টের মধ্যে কাজ করে এমন Google Cloud পরিষেবা জুড়ে বিধিনিষেধ প্রয়োগ করুন। পরিধিটি প্রজেক্ট রিসোর্সের চারপাশে একটি সীমানা হিসেবে কাজ করে, ইনগ্রেস/ইগ্রেস নিয়মের মাধ্যমে স্পষ্টভাবে অনুমতি না দেওয়া পর্যন্ত সরাসরি ইনকামিং এবং আউটগোয়িং ট্রাফিক সীমাবদ্ধ করে।
export PERIMETER_NAME="perimeter_${PROJ_NO}"
gcloud access-context-manager perimeters create accessPolicies/${ACCESS_POLICY}/servicePerimeters/${PERIMETER_NAME} \
--title="${PERIMETER_NAME}" \
--perimeter-type=regular \
--resources=projects/${PROJ_NO} \
--restricted-services=${SUPPORTED_SERVICES}
ইনগ্রেস নীতি তৈরি করা
ইনগ্রেস নীতিতে নির্দিষ্ট শর্তাবলী—যেমন, নির্দিষ্ট ব্যবহারকারীর পরিচয় বা অ্যাক্সেস লেভেল—সংজ্ঞায়িত করা হয়, যার অধীনে পরিধির বাইরে থেকে ট্রাফিক আসে এবং পরিধির মধ্যে সীমাবদ্ধ রিসোর্সে পৌঁছানোর অনুমতি পায়।
সব পরিষেবা জুড়ে আপনার ব্যবহারকারীর পরিচয়কে স্পষ্ট অ্যাক্সেস দেওয়ার জন্য একটি YAML ফাইল তৈরি করুন:
cat > ingress-policy.yaml << EOF
- ingressFrom:
identities:
- user:${USER_IDENTITY}
sources:
- accessLevel: '*'
ingressTo:
operations:
- serviceName: '*'
resources:
- '*'
EOF
gcloud access-context-manager perimeters update $PERIMETER_NAME --set-ingress-policies="ingress-policy.yaml"
এই কোডল্যাব আপনার এনভায়রনমেন্টকে এমনভাবে কনফিগার করে যাতে ডিফল্ট হিসেবে VPC Service Controls অ্যাক্সেস প্রত্যাখ্যান না করে। তবে, পরীক্ষার সময় সমস্যা সমাধানে সাহায্য করতে, VPC Service Controls বিস্তারিতভাবে অ্যাক্সেস না দেওয়া সংক্রান্ত লগ ও নীতি সংক্রান্ত ইন্টেলিজেন্স টুল প্রদান করে।
VPC Service Controls অ্যাক্সেস না দেওয়া সংক্রান্ত সমস্যার সমাধান করা
টেস্টিং চলাকালীন, সমস্যা সমাধানের জন্য নিম্নলিখিত পরামর্শগুলি দেখুন:
- আপনার এনভায়রনমেন্টে লেটেস্ট লঙ্ঘন ট্র্যাক করতে লঙ্ঘন ড্যাশবোর্ড চালু করুন।
- VPC Service Controls অ্যাক্সেস না দেওয়া (403) লগ সংক্রান্ত Cloud Audit Logs মনিটর করুন।
- Violation Analyzer-এ লঙ্ঘনের অনন্য আইডি বা টোকেন ব্যবহার করে লঙ্ঘন শনাক্ত করুন।
- বিস্তারিত ওয়াকথ্রুর জন্য VPC Service Controls সংক্রান্ত সমস্যার সমাধান ভিডিও দেখুন।
৭. নেটওয়ার্কিং সেট-আপ করা
Google API ও পরিষেবার সাথে প্রাইভেট যোগাযোগ করার জন্য VPC নেটওয়ার্ক সেটিংস কনফিগার করুন। সঠিক নেটওয়ার্ক কনফিগারেশন নিশ্চিত করে যে এজেন্ট, গেটওয়ে ও Google Cloud API-এর মধ্যে নেটওয়ার্ক ট্রাফিক প্রাইভেট ইন্টার্নাল নেটওয়ার্কে থাকবে। নেটওয়ার্কিং প্যাটার্ন সম্পর্কে বিস্তারিত জানতে, Google Cloud VPC ডকুমেন্টেশন দেখুন।
Private Google Access চালু করুন
ডিফল্ট সাবনেটে প্রাইভেট Google অ্যাক্সেস চালু করুন যাতে VM ইনস্ট্যান্স ও ইন্টার্নাল ওয়ার্কলোড পাবলিক IP অ্যাড্রেসের পরিবর্তে ইন্টার্নাল IP অ্যাড্রেস ব্যবহার করে Google API-তে পৌঁছাতে পারে।
export NETWORK_NAME="default"
export SUBNET_NAME="default"
gcloud compute networks subnets update $SUBNET_NAME --region=$REGION --enable-private-ip-google-access
PSC নেটওয়ার্ক অ্যাটাচমেন্ট তৈরি করা
এজেন্ট গেটওয়ে কানেক্টিভিটির জন্য প্রাইভেট সার্ভিস কানেক্ট (PSC) নেটওয়ার্ক অ্যাটাচমেন্ট তৈরি করুন। নেটওয়ার্ক অ্যাটাচমেন্ট প্রাইভেট সার্ভিস কানেক্ট (PSC) ইন্টারফেস প্রদান করে, যা এজেন্ট গেটওয়ে পরিষেবা ও আপনার ইন্টার্নাল সাবনেটের মধ্যে সুরক্ষিত, ক্রস-VPC যোগাযোগকে সহজ করে তোলে।
gcloud compute network-attachments create psc-agw-${REGION} \
--region=${REGION} \
--subnets=${SUBNET_NAME} \
--connection-preference=ACCEPT_AUTOMATIC
যাচাই করুন
নতুন তৈরি করা নেটওয়ার্ক অ্যাটাচমেন্টের সেল্ফ-লিঙ্ক রিসোর্স URI রিট্রিভ ও চেক করুন। রিসোর্স URI যাচাই করলে নেটওয়ার্ক অ্যাটাচমেন্ট যে সঠিকভাবে ইনস্ট্যানশিয়েট করা হয়েছে তা নিশ্চিত করা যায় এবং কানেক্টিভিটি টেমপ্লেটে রেফারেন্স হিসেবে ব্যবহার করা যায়।
export PSC_NA_URI=$(gcloud compute network-attachments describe psc-agw-${REGION} \
--region=${REGION} \
--format="value(selfLink.scope(v1))")
echo ${PSC_NA_URI}
Cloud DNS প্রাইভেট জোন তৈরি করা
প্রাইভেট IP রেঞ্জের মাধ্যমে googleapis.com ট্রাফিক রাউট করতে Cloud DNS প্রাইভেট জোন কনফিগার করুন। প্রাইভেট DNS জোন, googleapis.com-এর জন্য পাবলিক ডোমেন লুক-আপকে ওভাররাইড করে, এর ফলে আপনার VPC নেটওয়ার্কের মধ্যে থাকা প্রাইভেট ইন্টার্নাল ভার্চুয়াল IP (VIP)-তে সমস্ত আউটগোয়িং ট্রাফিক ডাইরেক্ট করা হয়। আরও বিবরণের জন্য Cloud DNS প্রাইভেট জোন দেখুন।
export ZONE_NAME="gapis"
gcloud dns managed-zones create ${ZONE_NAME} \
--visibility=private \
--networks=https://www.googleapis.com/compute/v1/projects/${PROJ_ID}/global/networks/${NETWORK_NAME} \
--description="Privately reach Google APIs" \
--dns-name=googleapis.com
gcloud dns record-sets transaction start --zone=${ZONE_NAME}
প্রাইভেট রাউটিংয়ের জন্য নিম্নলিখিত ডোমেন বিকল্পগুলির মধ্যে একটি বেছে নিন (ট্রানজ্যাকশন এক্সিকিউট করার আগে শুধুমাত্র বিকল্প ১ বা বিকল্প ২-এর অধীনে কমান্ড চালান) — প্রাইভেট Google অ্যাক্সেস কনফিগারেশন বিকল্প থেকে আরও জানুন:
বিকল্প ১: ব্যক্তিগত ভিআইপি [সাজেস্ট করা]
gcloud dns record-sets transaction add --name="*.googleapis.com." \
--type=CNAME private.googleapis.com. \
--zone=${ZONE_NAME} \
--ttl=300
gcloud dns record-sets transaction add --name=private.googleapis.com. \
--type=A 199.36.153.8 199.36.153.9 199.36.153.10 199.36.153.11 \
--zone=${ZONE_NAME} \
--ttl=300
বিকল্প ২: সীমিত VIP
gcloud dns record-sets transaction add --name="*.googleapis.com." \
--type=CNAME restricted.googleapis.com. \
--zone=${ZONE_NAME} \
--ttl=300
gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
--type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
--zone=${ZONE_NAME} \
--ttl=300
DNS ট্রানজ্যাকশন কমিট করা:
gcloud dns record-sets transaction execute --zone=${ZONE_NAME}
৮. এজেন্ট গেটওয়ে তৈরি করা
এজেন্ট গেটওয়ে প্রোভিশন করুন এবং এর কানেক্টিভিটি টেমপ্লেট ও রাউটিং নিয়ম নির্ধারণ করুন। এজেন্ট ট্রাফিক, ইগ্রেস নীতি, প্রোটোকল ম্যানেজমেন্ট এবং সুরক্ষিত পরিষেবা ডিসকভারি ম্যানেজ করার জন্য এজেন্ট গেটওয়ে সেন্ট্রালাইজড প্রক্সি হিসেবে কাজ করে। আর্কিটেকচার রেফারেন্সের জন্য, এজেন্ট গেটওভারভিউ দেখুন।

export AGW_NAME="gateway-${USER_IDENTITY}"
export AGW_CONNECTIVITY_TEMPLATE="agw-connectivity-template-${USER_IDENTITY}"
এজেন্ট কানেক্টিভিটি টেমপ্লেট তৈরি করুন
আউটগোয়িং অনুরোধ ম্যানেজ করার জন্য গেটওয়ের প্রয়োজনীয় নেটওয়ার্ক কনফিগারেশন, এগ্রেস রাউটিং নীতি, DNS পিয়ারিং সেটিংস এবং নেটওয়ার্ক অ্যাটাচমেন্ট URI কানেক্টিভিটি টেমপ্লেটে উল্লেখ করা থাকে।
cat > ${AGW_CONNECTIVITY_TEMPLATE}.yaml << EOF
name: projects/${PROJ_NO}/locations/${REGION}/agentConnectivityTemplates/${AGW_CONNECTIVITY_TEMPLATE}
accessPath: AGENT_TO_ANYWHERE
deploymentModel: CENTRALIZED
egressNetworkConfig:
networkAttachment: ${PSC_NA_URI}
dnsPeeringConfig:
domain: googleapis.com.
targetNetwork: projects/${PROJ_ID}/global/networks/${NETWORK_NAME}
vpcEgress: ALL_TRAFFIC
EOF
gcloud network-services agent-connectivity-templates import ${AGW_CONNECTIVITY_TEMPLATE} \
--source="${AGW_CONNECTIVITY_TEMPLATE}.yaml" \
--location=${REGION}
এজেন্ট গেটওয়ে তৈরি করা
cat > ${AGW_NAME}-config.yaml << EOF
name: ${AGW_NAME}
protocols:
- MCP
googleManaged:
governedAccessPath: AGENT_TO_ANYWHERE
agentConnectivityTemplate: projects/${PROJ_NO}/locations/${REGION}/agentConnectivityTemplates/${AGW_CONNECTIVITY_TEMPLATE}
registries:
- //agentregistry.googleapis.com/projects/${PROJ_NO}/locations/global
EOF
gcloud network-services agent-gateways import ${AGW_NAME} \
--source="${AGW_NAME}-config.yaml" \
--location=${REGION}
তৈরি করা যাচাই করুন
এজেন্ট গেটওয়ে রিসোর্স সফলভাবে ডেপ্লয় ও কনফিগার করা হয়েছে কিনা তা কনফার্ম করুন। ডেপ্লয় করা এজেন্ট গেটওয়ের বিবরণ থেকে নিশ্চিত হওয়া যায় যে এটির অপারেশনাল স্টেট অ্যাক্টিভ আছে এবং এটি যাচাই করা যায় যে সংশ্লিষ্ট কানেক্টিভিটি টেমপ্লেট ও রেজিস্ট্রি সঠিকভাবে অ্যাটাচ করা আছে।
gcloud network-services agent-gateways describe ${AGW_NAME} \
--location=${REGION}
৯. IAP-এর মাধ্যমে অনুমোদন তৈরি করা
এজেন্ট গেটওয়েতে অ্যাক্সেস দেওয়ার আগে অনুরোধের ক্রেডেনশিয়াল যাচাই করতে, আইডেন্টিটি-অ্যাওয়ার প্রক্সি (IAP) অনুরোধ অনুমোদন নীতি ও পরিষেবা এক্সটেনশন কনফিগার করুন। আরও তথ্যের জন্য, IAP ডকুমেন্টেশন দেখুন।

export AUTHZ_EXT="iap-authz-extension-${USER_IDENTITY}"
export AUTHZ_POLICY="iap-authz-policy-${USER_IDENTITY}"
AuthZ এক্সটেনশন তৈরি করা
cat > ${AUTHZ_EXT}.yaml << EOF
name: ${AUTHZ_EXT}
service: iap.googleapis.com
failOpen: false
timeout: 1s
metadata:
iapPolicyVersion: "V2"
EOF
gcloud service-extensions authz-extensions import ${AUTHZ_EXT} \
--source=${AUTHZ_EXT}.yaml \
--location=${REGION}
AuthZ নীতি তৈরি করে এজেন্ট গেটওয়ের সাথে তা বাইন্ড করা
cat > ${AUTHZ_POLICY}.yaml << EOF
name: ${AUTHZ_POLICY}
target:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
authzExtension:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AUTHZ_EXT}"
EOF
gcloud network-security authz-policies import ${AUTHZ_POLICY} \
--source=${AUTHZ_POLICY}.yaml \
--location=${REGION}
এই কোডল্যাব নিশ্চিত করে যে ডিফল্ট হিসেবে আপনার IAP অ্যাক্সেস অস্বীকার করা হবে না। তবে, আপনার টেস্টিংয়ে সাহায্য করতে, অ্যাক্সেস প্রত্যাখ্যানের জন্য Agent Gateway বিস্তারিতভাবে পর্যবেক্ষণ করার সুবিধা প্রদান করে।
IAP অনুমোদনে বাধা সংক্রান্ত সমস্যার সমাধান ও মনিটর করা
- _Default লগিং বাকেটে Log Analytics চালু করুন:
gcloud logging buckets update _Default --location=global --enable-analytics --async
- এজেন্ট গেটওয়ে অবজার্ভেবিলিটি ড্যাশবোর্ড খুলুন:
- Google Cloud কনসোলে, এজেন্ট গেটওয়ে পৃষ্ঠায় যান।
- আপনার গেটওয়ের নামে ক্লিক করুন (যেমন, gateway-xyz)।
- পর্যবেক্ষণযোগ্যতা ট্যাবে ক্লিক করুন।
- অনুমোদন না হওয়া ও ৪০৩ ডিনায়াল ড্যাশবোর্ড পর্যালোচনা করুন।
১০. এজেন্ট ইঞ্জিন এজেন্ট তৈরি করা
স্টেজিং বাকেট তৈরি করুন
রানটাইম ইনিশিয়ালাইজেশনের সময় সাময়িক স্টেজিং আর্টিফ্যাক্ট, ডিপেন্ডেন্সি ও ডিপ্লয়মেন্ট কনফিগারেশন স্টোর করতে আপনার টার্গেট অঞ্চলে একটি Cloud Storage বাকেট তৈরি করুন।
#Staging bucket name needs to be globally unique
export STAGING_BUCKET="agent-temp-bucket-${PROJ_NO}-${USER_IDENTITY}"
gcloud storage buckets create gs://${STAGING_BUCKET} --location=${REGION}
Python ভার্চুয়াল এনভায়রনমেন্ট অ্যাক্টিভেট করা
python3 -m venv .venv
source .venv/bin/activate
এজেন্ট কোড ডাউনলোড করা
git clone https://github.com/gpratikab/gcp-vpcsc-agent.git
cd gcp-vpcsc-agent
ডিপেন্ডেন্সি ইনস্টল করা
python3 -m pip install --upgrade -r requirements.txt
এজেন্ট প্ল্যাটফর্ম পরিষেবার এজেন্টকে IAM ভূমিকা প্রদান করা
gcloud projects add-iam-policy-binding ${PROJ_ID} \
--member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
--role="roles/agentgateway.serviceAgent"
gcloud projects add-iam-policy-binding ${PROJ_ID} \
--member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
--role="roles/ml.serviceAgent"
gcloud projects add-iam-policy-binding ${PROJ_ID} \
--member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
--role="roles/networkservices.viewer"
এজেন্ট ডেপ্লয় করা
python3 deploy_gcp_agent.py create
আগের কমান্ডের আউটপুটে প্রিন্ট করা এজেন্ট পরিচয় এনভায়রনমেন্ট ভেরিয়েবেল হিসেবে এক্সপোর্ট করুন:
#Paste identity of your Agent, it will be printed as the output of the previous command
export AGENT_IDENTITY="principal://PRINCIPAL_ID"
echo $AGENT_IDENTITY
১১. গেটওয়ের মাধ্যমে এজেন্ট এগ্ৰেসের অনুমতি দিন
নতুন তৈরি করা এজেন্টকে googleapis.com-এ ইগ্রেস ট্রাফিক পাঠানোর অনুমতি দিন।
মনে রাখবেন: আপনি এজেন্ট গেটওয়ে অবজার্ভেবিলিটি ব্যবহার করে বেছে বেছে এন্ডপয়েন্টকে শ্বেত তালিকাভুক্ত করতে পারবেন। সহজ করার জন্য, এই কোডল্যাব সব API-তে অ্যাক্সেস দেয়।
স্পষ্ট IAM ইগ্রেস নীতি সংক্রান্ত নিয়ম কনফিগার করা হলে, এজেন্ট গেটওয়ে ও IAP প্রক্সির মাধ্যমে API কল রাউট করে এক্সটার্নাল Google Cloud পরিষেবাতে পৌঁছানোর জন্য এজেন্টকে অনুমতি দেওয়া হয়।
IAM নীতি তৈরি করা
cat > agent-access-rules.json << EOF
{
"conditions": {
"iap.googleapis.com": {
"description": "Allow access to agent",
"expression": "(destination.agent_registry.location == 'global') || (destination.unregistered.host.endsWith('googleapis.com'))",
"title": "agenttogapis"
}
},
"description": "agenttogapis",
"effect": "ALLOW",
"excludedPrincipals": [],
"operation": {
"excludedPermissions": [],
"permissions": [
"iap.googleapis.com/resources.egressViaIAP"
]
},
"principals": [
"${AGENT_IDENTITY}"
]
}
EOF
অ্যাক্সেস নীতি আপডেট করুন
আপনার আগে থেকে কোনও অ্যাক্সেস নীতি আছে কিনা তা চেক করুন:
gcloud iam access-policies list --project=${PROJ_ID} --location=global
অ্যাক্সেস নীতির নাম সেট করুন:
export IAM_ACCESS_POLICY="agent-access-policy"
নতুন নীতি তৈরি করতে:
gcloud iam access-policies create ${IAM_ACCESS_POLICY} \
--details-rules=agent-access-rules.json \
--project=${PROJ_ID} \
--location=global
অথবা, আগে থেকে থাকা কোনও নীতি আপডেট করুন:
gcloud iam access-policies update ${IAM_ACCESS_POLICY} \
--add-details-rules=agent-access-rules.json \
--project=${PROJ_ID} \
--location=global
১২. এজেন্ট পরীক্ষা করা
Google Cloud কনসোলে এজেন্ট অপারেশন যাচাই করা থেকে এটি বোঝা যায় যে এন্ড-টু-এন্ড কমিউনিকেশন, IAM নীতি এবং VPC Service Controls সংক্রান্ত সীমা সঠিকভাবে কাজ করছে। আপনি এখন এজেন্ট পরীক্ষা করার জন্য প্রস্তুত:
- Google Cloud কনসোলে, এজেন্ট ডিপ্লয়মেন্ট পৃষ্ঠায় যান।
- আপনার ডেপ্লয় করা এজেন্ট বেছে নিন (
gcp_agent_...)। - Playground ট্যাব খুলুন।
- প্রম্পট ফিল্ডে, এগুলি লিখুন:
List storage buckets in the current project. - প্রাইভেট এজেন্ট গেটওয়ের মাধ্যমে এজেন্ট সফলভাবে বালতির তালিকা ফেরত দেয় কিনা তা যাচাই করুন।
- অ্যাক্সেস না থাকার কারণে এজেন্ট অন্য প্রোজেক্ট থেকে বাকেট রিট্রিভ করতে পারছে না কিনা তা যাচাই করুন। আপনি Cloud Audit Logs বা VPC Service Controls ভায়োলেশন ড্যাশবোর্ডে অ্যাক্সেস না দেওয়ার বিষয়টি চেক করতে পারবেন।
১৩. অপ্রয়োজনীয়গুলি মুছুন
এই কোড ল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার Google Cloud অ্যাকাউন্টে চার্জ এড়াতে, আপনার তৈরি করা প্রোজেক্টটি মুছে দিন:
gcloud projects delete ${PROJ_ID}
১৪. অভিনন্দন
অভিনন্দন! আপনি Google Cloud-এ সুরক্ষিত VPC Service Controls পেরিমিটারের মধ্যে একটি এজেন্ট ও এজেন্ট গেটওয়ে কনফিগার করেছেন।
এর পরে কী হবে?
- VPC Service Controls-এ গ্র্যানুলার ইনগ্রেস ও ইগ্রেস নিয়ম এক্সপ্লোর করুন।
- Agent Gateway ব্যবহার করে অ্যাক্সেস ও সিম্যান্টিক নীতি কনফিগার করুন।
- উন্নত নিরাপত্তা ও সুরক্ষা ফিল্টারিংয়ের জন্য Model Armor ইন্টিগ্রেট করুন।