এজেন্ট গেটওয়ের এজেন্ট রানটাইম থেকে গুগল এমসিপি-তে নির্গমন

১. ভূমিকা

এই কোডল্যাবটি দূরবর্তী গুগল ক্লাউড মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার অ্যাক্সেসকারী এআই এজেন্টদের জন্য এজেন্ট গেটওয়ে ইগ্রেস গভর্নেন্স অন্বেষণ করে।

স্বতন্ত্র চ্যাটবট থেকে শুরু করে মাল্টি-এজেন্ট ওয়ার্কফ্লো সহ স্বায়ত্তশাসিত সিস্টেম পর্যন্ত এআই অ্যাপগুলো গতিশীলভাবে বাহ্যিক টুল আহ্বান করতে পারে। নিরাপদ এবং উৎপাদনশীল এজেন্টের জন্য, ডেটাবেস কোয়েরি করা, ওয়েব কন্টেন্ট আনা এবং অ্যাকশন সম্পাদনের জন্য এজেন্টদের নিয়ন্ত্রিত অ্যাক্সেস প্রদান করা অপরিহার্য। তবে, এন্টারপ্রাইজ পরিবেশে এজেন্ট টুল এক্সিকিউশন সুরক্ষিত করা একটি চ্যালেঞ্জ। যদি কোনো এজেন্টের সরাসরি নেটওয়ার্ক অ্যাক্সেস থাকে, তাহলে প্রম্পট ইনজেকশন অ্যাটাক বা মডেল হ্যালুসিনেশনের কারণে এজেন্টটি সংবেদনশীল ডেটা পাচার করতে বা ধ্বংসাত্মক কমান্ড চালাতে পারে।

বৃহৎ পরিসরে স্বায়ত্তশাসিত এজেন্টদের পরিচালনা করার জন্য, এজেন্ট গেটওয়ে একটি কেন্দ্রীভূত, জিরো-ট্রাস্ট প্রয়োগ ব্যবস্থা প্রদান করে যা সরাসরি এজেন্ট প্ল্যাটফর্ম আর্কিটেকচারের সাথে সমন্বিত। প্রতিটি অ্যাপ্লিকেশন বা এজেন্ট কোডের জন্য স্বতন্ত্র কাস্টম বাস্তবায়নের উপর নির্ভর করার পরিবর্তে, এজেন্ট গেটওয়ে প্ল্যাটফর্ম স্তরে নেটওয়ার্ক রাউটিং, এজেন্ট গভর্নেন্স এবং রানটাইম নিরাপত্তা প্রয়োগ করে।

যখন এজেন্ট গেটওয়ে ইগ্রেস ( এজেন্ট-টু-এনিহোয়্যার ) মোডে কাজ করে, তখন এটি গেটওয়ে ব্যবহার করার জন্য কনফিগার করা এজেন্টদের থেকে আসা সমস্ত বহির্গামী অনুরোধ প্রক্সি করে। প্রতিটি এজেন্ট ওয়ার্কলোড অনুরোধ অনন্য এজেন্ট আইডেন্টিটি ব্যবহার করে প্রমাণীকৃত হয় এবং আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (IAP) পলিসি ব্যবহার করে অনুমোদিত হয়। পলিসি প্রয়োগের জন্য MCP টুল কলগুলো ডায়নামিকভাবে ডিকোড এবং পরিদর্শন করা হয়। নিরাপত্তা অ্যাডমিনরা কেন্দ্রীয়ভাবে সূক্ষ্ম-স্তরের অনুমতি প্রয়োগ করতে পারেন, যাতে এজেন্টরা শুধুমাত্র অনুমোদিত এন্ডপয়েন্ট এবং মেথডগুলোই ব্যবহার করতে পারে।

আপনি যা তৈরি করেন

  • এজেন্ট গেটওয়ে বহির্গমন ( এজেন্ট-টু-এনিহোয়্যার ) মোডে
  • পরিচয়-সচেতন প্রক্সি (IAP) অনুমোদন এক্সটেনশন
  • এজেন্ট পরিচয় সহ এজেন্ট রানটাইম ADK এজেন্ট
  • গুগল এপিআই এবং এমসিপি এন্ডপয়েন্ট সহ এজেন্ট রেজিস্ট্রি
  • IAM অ্যাক্সেস কন্ট্রোল সহ অনুমোদন নীতি
  • MCP ব্যবহার করে BigQuery ডেটাসেটে কোয়েরি করার জন্য

চিত্র ১

চিত্র ১. কোডল্যাব আর্কিটেকচার

আপনি যা শিখবেন

  • একটি কাঠামোগত কনফিগারেশন অনুক্রমে এজেন্ট গেটওয়ে কীভাবে স্থাপন করবেন
  • অনুমোদন নীতিগুলিকে পরীক্ষামূলক পর্যায় থেকে বাধ্যতামূলক মোডে কীভাবে রূপান্তর করবেন
  • এজেন্ট রেজিস্ট্রিতে গুগল এপিআই এন্ডপয়েন্ট এবং এমসিপি সার্ভার কীভাবে নিবন্ধন করবেন
  • বহির্গমন শাসনব্যবস্থা যাচাই করার জন্য এজেন্ট গেটওয়ে লগগুলি কীভাবে নিরীক্ষা করবেন

আপনার যা প্রয়োজন

  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট
  • নেটওয়ার্কিং পরিষেবা, BigQuery ডেটাসেট এবং এজেন্ট প্ল্যাটফর্ম রিসোর্স সরবরাহ করার জন্য IAM অনুমতি
  • Google Cloud CLI ( gcloud এবং bq উপাদানসমূহ) ইনস্টল করা একটি POSIX-সামঞ্জস্যপূর্ণ শেল ( bash বা zsh )।
  • কমান্ড-লাইন টুলস: git , curl , jq (JSON প্রসেসর), Python 3, এবং uv (Python প্যাকেজ ম্যানেজার)

২. ধারণা

মোতায়েন ক্রম

গভর্নেন্স কন্ট্রোল সহ এজেন্ট গেটওয়ে স্থাপন করার সময় একটি সুসংগঠিত কনফিগারেশন ক্রম অনুসরণ করা গুরুত্বপূর্ণ, যাতে এজেন্টরা প্রারম্ভিক পর্যায়ে প্রয়োজনীয় রিসোর্সগুলিতে অ্যাক্সেস পায় এবং নেটওয়ার্ক অনুরোধগুলি সফল হয়।

এই কোডল্যাবটি নিম্নলিখিত ডেপ্লয়মেন্ট সিকোয়েন্স ব্যবহার করে:

  • ড্রাই-রান মোডে শুরু করুন: যদি কোনো এজেন্ট রানটাইম গেটওয়ে সম্পূর্ণরূপে প্রোভিশন হওয়ার আগেই আউটবাউন্ড কলগুলোকে গেটওয়েতে রাউট করার জন্য কনফিগার করা থাকে, তাহলে ওয়ার্কলোডটি ইনিশিয়ালাইজ হতে ব্যর্থ হবে। গেটওয়ে অথরাইজেশন এক্সটেনশনকে প্রথমে DRY_RUN মোডে কনফিগার করা নিশ্চিত করে যে, যখন এজেন্ট ট্র্যাফিক গেটওয়েতে পৌঁছায় তখন কোনো অনুরোধ যেন বাদ না পড়ে।
  • সমস্ত পরিষেবা নিবন্ধন করুন: এজেন্ট গেটওয়ে ব্যবহারকারী সমস্ত এজেন্ট, এমসিপি সার্ভার এবং এন্ডপয়েন্ট অবশ্যই এজেন্ট রেজিস্ট্রি-তে নিবন্ধিত হতে হবে। কোনো অনিবন্ধিত উৎস বা গন্তব্যের জন্য অনুরোধ প্রত্যাখ্যান করা হয়। এজেন্ট রানটাইম এবং গুগল এমসিপি সার্ভারে ডেপ্লয় করা এজেন্টগুলি স্বয়ংক্রিয়ভাবে নিবন্ধিত হয়ে যায়। যেকোনো গুগল এপিআই এন্ডপয়েন্ট বা কাস্টম এমসিপি সার্ভার ম্যানুয়ালি নিবন্ধন করতে হবে।
  • অনুমোদন নীতি প্রয়োগ করুন: নিবন্ধিত এজেন্টদের এজেন্টিক উপাদানগুলিতে অ্যাক্সেস দেওয়ার জন্য অনুমোদন নীতি ব্যবহার করা হয়। এর জন্য এজেন্ট আইডেন্টিটি প্রিন্সিপালকে roles roles/iap.egressor রোলটি প্রদান করা হয় এবং এটিকে টার্গেট রেজিস্ট্রি রিসোর্সের সাথে বাইন্ড করা হয়। ড্রাই-রান মোড ব্যবহার করে এজেন্টের আচরণ মূল্যায়ন করুন এবং তারপর গেটওয়ের মাধ্যমে নির্বাচিত বহির্গমন ট্র্যাফিকের অনুমতি দেওয়ার জন্য নীতি নির্ধারণ করুন। নীতিগুলি কার্যকর হয়ে গেলে, গেটওয়েকে সক্রিয়ভাবে গভর্নেন্স নীতিগুলি প্রয়োগ করতে সক্ষম করার জন্য ENFORCED মোডে স্যুইচ করুন।

চিত্র ২

চিত্র ২. মোতায়েন ক্রম

বহির্গমন রাউটিং টপোলজি

গেটওয়ে সাধারণত ব্যাকএন্ড পরিষেবাগুলিতে আগত ট্র্যাফিক (ইনগ্রেস) পরিচালনা করে। এজেন্ট গেটওয়ে, ইগ্রেস ( এজেন্ট-টু-এনিহোয়্যার ) মোডে কাজ করে, যা এজেন্টিক ওয়ার্কলোডগুলির জন্য একটি কেন্দ্রীভূত, জিরো-ট্রাস্ট আউটবাউন্ড প্রক্সি হিসেবে কাজ করে।

যখন কোনো এআই অ্যাপ বা এজেন্টিক ওয়ার্কলোড কোনো বাহ্যিক টুল বা এপিআই চালু করার চেষ্টা করে, তখন বহির্গামী অনুরোধটি এজেন্ট গেটওয়ে দ্বারা আটকানো হয় এবং গন্তব্যে পাঠানোর আগে গভর্নেন্স পলিসির আলোকে মূল্যায়ন করা হয়:

  • প্রাইভেট নেটওয়ার্ক (VPC): প্রাইভেট VPC-তে হোস্ট করা অভ্যন্তরীণ এন্টারপ্রাইজ API, মাইক্রোসার্ভিস, ডেটাবেস এবং হাইব্রিড কানেক্টিভিটির মাধ্যমে পৌঁছানো যায় এমন অন-প্রিমিসেস বা ক্রস-ক্লাউড নেটওয়ার্ককে লক্ষ্য করে পরিচালিত আউটবাউন্ড ট্র্যাফিক।
  • বাহ্যিক নেটওয়ার্ক (ইন্টারনেট): তৃতীয় পক্ষের ওয়েব পরিষেবা, SaaS API, বা পাবলিক এন্ডপয়েন্টকে লক্ষ্য করে বহির্গামী ট্র্যাফিক।
  • এআই পরিষেবা ও এজেন্ট প্ল্যাটফর্ম: পরিচালিত গুগল ক্লাউড এপিআই, ফাউন্ডেশন মডেল, গুগল এমসিপি এন্ডপয়েন্ট (যেমন বিগকোয়েরি), এবং প্ল্যাটফর্ম গভর্নেন্স পরিষেবা (এজেন্ট রেজিস্ট্রি ও আইএপি পলিসি)-কে লক্ষ্য করে আউটবাউন্ড ট্র্যাফিক।

চিত্র ৩

চিত্র ৩. এজেন্ট গেটওয়ের বহির্গমন রাউটিং টপোলজি

এই কোডল্যাবের মূল লক্ষ্য হলো এজেন্ট রানটাইমে থাকা একটি কাস্টম এজেন্ট থেকে বিগকোয়েরির জন্য দূরবর্তী গুগল এমসিপি সার্ভার এন্ডপয়েন্টকে লক্ষ্য করে বহির্গামী ট্র্যাফিক পরিচালনা করা।

৩. সেটআপ

প্রয়োজনীয় IAM ভূমিকা

এই কোডল্যাবে রিসোর্সগুলো তৈরি করার জন্য নিম্নলিখিত ভূমিকাগুলো প্রয়োজন:

বিভাগ

প্রয়োজনীয় IAM ভূমিকা (ID)

বর্ণনা

এপিআই ব্যবস্থাপনা

roles/serviceusage.serviceUsageAdmin

গুগল ক্লাউড এপিআই পরিষেবাগুলি সক্রিয় করুন

নেটওয়ার্কিং এবং গেটওয়ে

roles/networkservices.admin

প্রোভিশন এজেন্ট গেটওয়ে

পরিষেবা সম্প্রসারণ

roles/serviceextensions.admin

রাউটিং এক্সটেনশন কনফিগার করুন

নেটওয়ার্ক নিরাপত্তা

roles/networksecurity.admin

অনুমোদন নীতিগুলি স্থাপন করুন

এজেন্ট রেজিস্ট্রি

roles/agentregistry.admin

ক্যাটালগ অনুমোদিত হোস্ট

ভার্টেক্স এআই এবং এজেন্ট

roles/aiplatform.admin

এজেন্ট রানটাইম ওয়ার্কলোড স্থাপন করুন

বহির্গমন নীতি

roles/iap.admin

roles/iap.egressor নীতি প্রয়োগ করুন

বিগকোয়েরি

roles/bigquery.admin

স্কিমা এবং টেস্ট ডেটাসেট সেটআপ করুন

ক্লাউড স্টোরেজ

roles/storage.admin

ডেপ্লয়মেন্ট স্টেজিং বাকেটগুলি পরিচালনা করুন

লগ এবং নিরীক্ষা

roles/logging.viewer

ট্রেস এবং অডিট লগ পরিদর্শন করুন

বিকল্পভাবে, roles/admin মতো একটি ব্যাপক মৌলিক রোল অথবা roles/owner মতো লিগ্যাসি রোল ব্যবহার করুন।

আপনার প্রজেক্ট অ্যাক্সেস করুন

এই কোডল্যাবটিতে একটিমাত্র গুগল ক্লাউড প্রজেক্ট ব্যবহার করা হয়েছে। কনফিগারেশন ধাপগুলোতে gcloud CLI এবং লিনাক্স শেল কমান্ড ব্যবহার করা হয়।

আপনার গুগল ক্লাউড প্রজেক্টের কমান্ড লাইন অ্যাক্সেস করে শুরু করুন:

আপনার প্রজেক্ট আইডি সেট করুন

gcloud config set project SET_YOUR_PROJECT_ID_HERE

সেশন প্রমাণীকরণ করুন

# login to gcloud cli
gcloud auth login
# login for gcloud api
gcloud auth application-default login

শেল এনভায়রনমেন্ট ভেরিয়েবল সেট করুন

# set custom var for slug (eg, "foo") and region preference
export SLUG="foo"
export REGION="us-central1"
export MREGION="us"
echo ${SLUG}
echo ${REGION}
echo ${MREGION}
# create project vars (automatic)
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)
echo ${PROJ_ID}
echo ${PROJ_NO}
echo ${ORG_ID}
# create resource vars (automatic)
export AGW_NAME="agw-${SLUG}-${REGION}-ata"
export AGW_URI="projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
export RE_AGENT_NAME="agent-dj"
export RE_AGENT_ID_SET="principalSet://agents.global.org-${ORG_ID}.system.id.goog/attribute.platformContainer/aiplatform/projects/${PROJ_NO}"
export STAGING_BUCKET="agent-staging-${PROJ_NO}"
echo ${AGW_NAME}
echo ${AGW_URI}
echo ${RE_AGENT_NAME}
echo ${RE_AGENT_ID_SET}
echo ${STAGING_BUCKET}
# create local dir for config files
mkdir -p cfg

এপিআই পরিষেবাগুলি সক্ষম করুন

# enable google apis (agent platform bundle, part 1)
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 \
  iamconnectors.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
# enable google apis (agent platform bundle, part 2)
gcloud services enable \
  securitycenter.googleapis.com \
  saasservicemgmt.googleapis.com \
  storage.googleapis.com \
  telemetry.googleapis.com \
  texttospeech.googleapis.com \
  discoveryengine.googleapis.com

এর মাধ্যমেই সেটআপ পর্ব শেষ হলো... এরপর গেটওয়ে অংশে যাওয়া যাক।

৪. গেটওয়ে

অ্যাক্সেস কন্ট্রোল প্রয়োগ করার আগে, এজেন্ট গেটওয়ে স্থাপন করুন এবং এর অথরাইজেশন এক্সটেনশনটি DRY_RUN মোডে কনফিগার করুন। এর ফলে আউটবাউন্ড টুল কলগুলো সফল হয় এবং অডিটের উদ্দেশ্যে মূল্যায়নের ফলাফল লগ করা থাকে।

এখানে এজেন্ট গেটওয়ে আঞ্চলিক এজেন্ট রানটাইম রিসোর্সসমূহকে সমর্থন করার জন্য একটি আঞ্চলিক রেজিস্ট্রি ব্যবহার করে।

গেটওয়ে তৈরি করুন

# create agent gateway config file (regional registry)
cat > cfg/${AGW_NAME}.yaml << EOF
name: ${AGW_NAME}
protocols:
  - MCP
googleManaged:
  governedAccessPath: AGENT_TO_ANYWHERE
registries:
  - "//agentregistry.googleapis.com/projects/${PROJ_ID}/locations/${REGION}"
EOF
# import agent gateway config file (create gateway)
gcloud network-services agent-gateways import ${AGW_NAME} \
  --source="cfg/${AGW_NAME}.yaml" \
  --location=${REGION}
# show agent gateway details (verify deployment state)
gcloud network-services agent-gateways describe ${AGW_NAME} \
  --location=${REGION}

এর মাধ্যমেই গেটওয়ে পর্ব শেষ হলো... এরপর অনুমোদন অংশে যাওয়া যাক।

৫. অনুমোদন

আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (IAP)-এর জন্য এজেন্ট গেটওয়ে অথরাইজেশন এক্সটেনশন হলো এক ধরনের সার্ভিস এক্সটেনশন, যা এজেন্ট প্ল্যাটফর্মের সমস্ত যোগাযোগের জন্য অথরাইজেশন সংক্রান্ত সিদ্ধান্ত অর্পণ করতে ব্যবহৃত হয়।

  1. ডেলিগেশন ফ্লো: যখন কোনো এজেন্ট একটি এক্সটার্নাল এন্ডপয়েন্ট বা এমসিপি সার্ভারকে কল করার চেষ্টা করে, তখন এটি অনুরোধটি এজেন্ট গেটওয়েতে পাঠিয়ে দেয়। স্থানীয়ভাবে অ্যাক্সেস মূল্যায়ন করার পরিবর্তে, গেটওয়েটি অথরাইজেশন এক্সটেনশন ব্যবহার করে আইএপি ইভ্যালুয়েশন সার্ভিসে একটি কলআউট পাঠায়। আইএপি এজেন্ট রেজিস্ট্রিতে থাকা টার্গেট রিসোর্সের আইএএম পলিসির সাথে এজেন্টের ( SPIFFE-ভিত্তিক ) আইডেন্টিটি মূল্যায়ন করে। আইএপি গেটওয়েতে একটি ALLOW বা DENY সিদ্ধান্ত ফেরত পাঠায়, যা হয় ট্র্যাফিকটি সামনে পাঠিয়ে দেয় অথবা একটি HTTP 403 Forbidden স্ট্যাটাস কোড দিয়ে ব্লক করে দেয়।
  2. প্রয়োগ মোড: DRY_RUN মোডে, IAP ট্র্যাফিক ব্লক না করেই অনুরোধগুলি মূল্যায়ন করে এবং ক্লাউড লগিং-এ সিদ্ধান্তগুলি লগ করে। ENFORCE মোডে, কোনো অননুমোদিত এজেন্ট বা অনিবন্ধিত টার্গেটের কাছে করা যেকোনো অনুরোধ অবিলম্বে ব্লক করা হয়।
  3. বাইন্ডিং লেয়ার: সার্ভিস এক্সটেনশনটি REQUEST_AUTHZ প্রোফাইল দিয়ে কনফিগার করা একটি অথরাইজেশন পলিসি ব্যবহার করে এজেন্ট গেটওয়ের সাথে সংযুক্ত থাকে।

অনুমোদন সম্প্রসারণ

অনুমোদন এক্সটেনশন তৈরি করুন

# create authz extension config file (dry run mode)
cat > cfg/${AGW_NAME}-svc-ext-authz-iap-dryrun.yaml << EOF
name: ${AGW_NAME}-svc-ext-authz-iap-dryrun
service: iap.googleapis.com
failOpen: true
timeout: 1s
metadata:
  iamEnforcementMode: "DRY_RUN"
  iapPolicyVersion: "V1"
EOF
# import authz extension file (create extension)
gcloud service-extensions authz-extensions import ${AGW_NAME}-svc-ext-authz-iap-dryrun \
  --source=cfg/${AGW_NAME}-svc-ext-authz-iap-dryrun.yaml \
  --location=${REGION}
# show authz extension details (verify extension state)
gcloud service-extensions authz-extensions describe ${AGW_NAME}-svc-ext-authz-iap-dryrun \
  --location=${REGION}

অনুমোদন নীতি

একটি অনুমোদন নীতি নিরাপত্তা প্রদানকারীকে (IAP) লক্ষ্য গেটওয়ে রিসোর্সের সাথে আবদ্ধ করে এবং ইন্টারসেপশন প্রোফাইল ( REQUEST_AUTHZ ) নির্দিষ্ট করে।

অনুমোদন নীতি তৈরি করুন

# create authz policy config file (attach dry-run authz extension)
cat > cfg/${AGW_NAME}-authz-policy-profile-iap.yaml << EOF
name: ${AGW_NAME}-authz-policy-profile-iap
target:
  resources:
    - "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
      - "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AGW_NAME}-svc-ext-authz-iap-dryrun"
EOF
# import authz policy config file (enable authz policy)
gcloud beta network-security authz-policies import ${AGW_NAME}-authz-policy-profile-iap \
  --source=cfg/${AGW_NAME}-authz-policy-profile-iap.yaml \
  --location=${REGION}
# show authz policy details (verify dry run mode)
gcloud beta network-security authz-policies describe ${AGW_NAME}-authz-policy-profile-iap \
  --location=${REGION}

এর মাধ্যমেই অনুমোদন পর্ব শেষ হলো... এরপর কোডবেস অংশে যাওয়া যাক।

৬. কোডবেস

এই কোডল্যাবের জন্য ব্যবহৃত এজেন্ট কোড, BigQuery ডেটাসেট এবং রেজিস্ট্রেশন স্ক্রিপ্ট একটি রিমোট গুগল ক্লাউড গিটহাব রিপোজিটরিতে রক্ষণাবেক্ষণ করা হয়। নিম্নলিখিত ধাপগুলো রিপোজিটরিটি স্থানীয়ভাবে ক্লোন করবে, প্রয়োজনীয় ফাইলগুলো বর্তমান ওয়ার্কিং ডিরেক্টরি কাঠামোতে কপি করবে এবং তারপর অপ্রয়োজনীয় টেম্পোরারি ফাইলগুলো মুছে ফেলবে।

এজেন্ট রানটাইমের জন্য একটি স্টোরেজ স্টেজিং বাকেট তৈরি করা হয়, যেখানে প্যাকেজ করা এজেন্ট অ্যাপ্লিকেশন কোড এবং এর নির্ভরশীল আর্টিফ্যাক্টগুলো আপলোড, বিল্ড ও ডিপ্লয় করা হয়।

দূরবর্তী নিদর্শনগুলি আনুন

# clone remote repository to temp local dir
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git ./temp_agw_cuj_arun_egress_gmcp
# copy agent runtime and endpoint definitions to working project dir
cp -r temp_agw_cuj_arun_egress_gmcp/codelabs/agw-cuj-arun-egress-gmcp/agent-dj ./agent-dj
cp -r temp_agw_cuj_arun_egress_gmcp/codelabs/agw-cuj-arun-egress-gmcp/endpoints ./endpoints
# remove temporary directory
rm -rf temp_agw_cuj_arun_egress_gmcp

BigQuery ডেটাসেট তৈরি করুন

# create bq dataset schema and load data
bq --project_id=${PROJ_ID} query \
  --use_legacy_sql=false < agent-dj/setup.sql

স্টেজিং বাকেট তৈরি করুন

# create storage bucket for agent deployment artifacts
gcloud storage buckets create gs://${STAGING_BUCKET} --location=${REGION}
# verify staging bucket url
gcloud storage buckets list --format="value(storage_url)"

এর মাধ্যমেই কোডবেস পর্ব শেষ হলো... এরপর রেজিস্ট্রি অংশে যাওয়া যাক।

৭. রেজিস্ট্রি

এজেন্ট রেজিস্ট্রি হলো এআই ইকোসিস্টেমের সমস্ত এজেন্ট, এমসিপি সার্ভার এবং এন্ডপয়েন্ট (এপিআই)-এর একটি কেন্দ্রীভূত তালিকা। এটি এমন একটি ক্যাটালগ যা এআই অ্যাপ্লিকেশন দ্বারা ব্যবহারের জন্য অন্যান্য নিবন্ধিত টুল এবং পরিষেবা তালিকাভুক্ত করতে, অনুসন্ধান করতে এবং খুঁজে বের করতে ব্যবহার করা যেতে পারে। এজেন্ট গেটওয়ের ইগ্রেস ( এজেন্ট-টু-এনিহোয়্যার ) মোড, ইগ্রেস অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ করার জন্য গভর্নেন্স ফ্রেমওয়ার্ক হিসেবে রেজিস্ট্রি ডেটা মডেল ব্যবহার করে। প্রিন্সিপাল কলিং এজেন্টদের জন্য আইএএম রোল গ্রান্টগুলো রেজিস্ট্রি রিসোর্সের সাথে আবদ্ধ পলিসির সাপেক্ষে যাচাই করা হয়।

পরিবেশটি বুটস্ট্র্যাপ করতে এবং বিভিন্ন গুগল এপিআই ও পরিষেবা ব্যবহারকারী এজেন্টদের সমর্থন করার জন্য, endpoints/googleapis.txt থেকে হোস্টনেম ও লোকেশন ব্যবহার করে এক সেট সাধারণ এপিআই এন্ডপয়েন্ট দ্রুত রেজিস্টার করতে একটি স্ক্রিপ্ট ব্যবহৃত হয়।

এন্ডপয়েন্ট নিবন্ধন করুন

# run python script to register google api endpoints
python3 endpoints/register_endpoints.py \
  --multi-region=${MREGION} \
  --region=${REGION} \
  --mtls-endpoints=include

এন্ডপয়েন্টগুলি যাচাই করুন

# list regional endpoints (verify registration)
gcloud agent-registry endpoints list --location=${REGION} \
  --format="table(displayName, name.basename():label=ENDPOINT_ID, interfaces[0].url:label=URL)"

এর মাধ্যমেই রেজিস্ট্রি পর্ব শেষ হলো... এরপর রানটাইম অংশে যাওয়া যাক।

৮. রানটাইম

এজেন্ট প্ল্যাটফর্মের সাথে ইন্টিগ্রেট করার জন্য, এজেন্ট রানটাইমে ডেপ্লয় করা agent-dj ADK এজেন্টটিকে ডেপ্লয়মেন্ট স্ক্রিপ্টে নিম্নলিখিত সেটিংস দিয়ে কনফিগার করা হয়েছে:

  • "identity_type": types.IdentityType.AGENT_IDENTITY এজেন্টের জন্য একটি অনন্য SPIFFE-ভিত্তিক প্রিন্সিপাল আইডেন্টিটি প্রদান করতে ব্যবহৃত হয়।
  • "agent_gateway_config": { "agent_to_anywhere_config": {"agent_gateway": } } পলিসি মূল্যায়ন এবং প্রয়োগের জন্য এজেন্ট-প্রবর্তিত সমস্ত বহির্গামী ট্র্যাফিক এজেন্ট গেটওয়েতে নির্দেশ করতে।

এজেন্ট মোতায়েন করুন

# deploy agent runtime workload
uv --directory agent-dj run python3 deploy_agent.py \
  --project=${PROJ_ID} \
  --region=${REGION} \
  --src-dir=./agent \
  --staging-bucket=${STAGING_BUCKET} \
  --display-name="${RE_AGENT_NAME}" \
  --description="agent for dj contact info" \
  --enable-telemetry \
  --enable-agent-identity \
  --agent-gateway-egress=${AGW_URI} \
  --allow-token-sharing

মোতায়েনের গুরুত্বপূর্ণ তথ্য আনুন

# fetch agent runtime resource (reasoning engine) id
export RE_ENGINE_ID=$(curl -s -X GET \
  "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" | \
  jq -r --arg name "${RE_AGENT_NAME}" \
  '.reasoningEngines[] | select(.displayName==$name) | .name | split("/") | last')
echo ${RE_ENGINE_ID}
# fetch agent runtime (reasoning engine) agent identity
export RE_AGENT_IDENTITY=$(gcloud agent-registry agents list \
  --location=${REGION} --filter="displayName=${RE_AGENT_NAME}" \
  --format="value(attributes.'agentregistry.googleapis.com/system/RuntimeIdentity'.principal)")
echo ${RE_AGENT_IDENTITY}
# fetch agent registry uid for agent
export AGENT_UID=$(gcloud agent-registry agents list \
  --location=${REGION} \
  --filter="displayName=${RE_AGENT_NAME}" \
  --format="value(uid)")
echo ${AGENT_UID}

রেজিস্ট্রি এন্ট্রি যাচাই করুন

# show agent resource registry details
gcloud agent-registry agents describe ${AGENT_UID} --location=${REGION}
agentId: urn:agent:projects-${PROJ_NO}:projects:${PROJ_NO}:locations:${REGION}:aiplatform:reasoningEngines:${RE_ENGINE_ID}
attributes:
  agentregistry.googleapis.com/system/Framework:
    framework: google-adk
  agentregistry.googleapis.com/system/RuntimeIdentity:
    principal: principal://agents.global.org-${PROJ_NO}.system.id.goog/resources/aiplatform/projects/${PROJ_NO}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}
  agentregistry.googleapis.com/system/RuntimeReference:
    uri: //aiplatform.googleapis.com/projects/${PROJ_NO}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}
createTime: 'YYYY-MM-DDTHH:MM:SS.ssssssZ'
description: agent for dj contact info
displayName: agent-dj
name: projects/${PROJ_ID}/locations/${REGION}/agents/agentregistry-${RE_AGENT_ID}
protocols:
- interfaces:
  - protocolBinding: HTTP_JSON
    url: https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:query
  - protocolBinding: HTTP_JSON
    url: https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}:streamQuery
  type: CUSTOM
uid: agentregistry-00000000-0000-0000-1234-4567abcd1234
updateTime: 'YYYY-MM-DDTHH:MM:SS.ssssssZ'

গেটওয়ে কনফিগারেশন যাচাই করুন

# verify agent gateway routing specification
curl -s -X GET "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  | jq '{displayName: .displayName, name: .name, effectiveIdentity: .spec.effectiveIdentity, agentGatewayConfig: .spec.deploymentSpec.agentGatewayConfig}'

সম্পদের জন্য অনুদান এজেন্টের IAM ভূমিকা

রিসোর্সের জন্য IAM রোল গ্রান্ট এজেন্ট প্রিন্সিপাল আইডেন্টিটিকে BigQuery, MCP টুলস (Google API-এর জন্য), এবং অন্যান্য প্রয়োজনীয় AI প্ল্যাটফর্ম পরিষেবাগুলিতে অ্যাক্সেস সক্ষম করে। এই নীতিগুলি রিসোর্স স্তরে IAM ব্যবহার করে প্রয়োগ করা হয়।

# grant bigquery query execution role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/bigquery.user"

# grant bigquery data viewer role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/bigquery.dataViewer"

# grant mcp tool execution role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/mcp.toolUser"
# grant ai platform user role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/aiplatform.user"

# grant agent default access role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/aiplatform.agentDefaultAccess"

# grant agent registry viewer role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/agentregistry.viewer"
# grant cloud logging writer role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/logging.logWriter"

# grant cloud monitoring writer role
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/monitoring.metricWriter"

# grant browser role for resource manager lookup
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="${RE_AGENT_IDENTITY}" \
  --role="roles/browser"

রিসোর্সগুলির জন্য এজেন্ট IAM ভূমিকা যাচাই করুন

# verify active role bindings for agent identity
gcloud projects get-iam-policy ${PROJ_ID} \
  --flatten="bindings[].members" \
  --filter="bindings.members:${RE_AGENT_IDENTITY}" \
  --format="value(bindings.role)"

এর মাধ্যমেই রানটাইম পর্ব শেষ হলো... এরপর পলিসি অংশে যাওয়া যাক।

৯. নীতিমালা

এজেন্ট গভর্নেন্স অনুমোদন নীতিগুলি একটি এআই এজেন্ট থেকে এজেন্ট গেটওয়ের মাধ্যমে গন্তব্যে (যেমন, BigQuery-এর জন্য Google Cloud MCP সার্ভার এন্ডপয়েন্ট) ট্র্যাফিক যাওয়ার অনুমতি দেয়। ট্র্যাফিক গন্তব্যে পৌঁছানোর পর, সাধারণ IAM অনুমতিগুলি ডেটা অ্যাক্সেসের অনুমোদন দেয় (এবং যা পূর্ববর্তী বিভাগে সক্রিয় করা হয়েছিল)।

এজেন্ট গেটওয়ে ইগ্রেসের জন্য আইএএম রোল গ্রান্ট এমন অ্যাক্সেস পলিসি সক্ষম করে, যা এজেন্ট প্রিন্সিপাল আইডেন্টিটিকে এজেন্ট গেটওয়ের মাধ্যমে নিবন্ধিত গন্তব্য রিসোর্সগুলিতে অ্যাক্সেস করার অনুমতি দেয়। পলিসিগুলি এজেন্ট গেটওয়ে স্তরে প্রয়োগ করা হয় এবং আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (আইএপি) আইএএম পলিসি ব্যবহার করে যাচাই করা হয়।

এজেন্ট গেটওয়ে বহির্গমনের জন্য এজেন্ট IAM ভূমিকা মঞ্জুর করুন

এজেন্ট গেটওয়ে আগত অনুরোধগুলি যাচাই করে নিশ্চিত করে যে কলিং এজেন্ট আইডেন্টিটির টার্গেট রিসোর্সের উপর iap.webServiceVersions.egressViaIAP পারমিশন (যা roles/iap.egressor রোল দ্বারা প্রদত্ত) আছে।

নির্বাচিত গন্তব্য রিসোর্সে থাকা এজেন্ট আইডেন্টিটি বা এজেন্ট রানটাইম প্রিন্সিপাল সেটে roles/iap.egressor প্রদান করলে এই বহির্গমন ট্র্যাফিকের অনুমতি দেওয়া হয়। এই কোডল্যাবে, রোলটি প্রিন্সিপাল সেটে প্রয়োগ করা হয়েছে, যা প্রোজেক্টের সমস্ত এজেন্ট রানটাইম এজেন্ট আইডেন্টিটিকে অনুমতি প্রদান করে।

এজেন্ট রেজিস্ট্রি ডেটা মডেলে সংজ্ঞায়িত গন্তব্য রিসোর্সগুলোর সাথে IAM পলিসিগুলো আবদ্ধ থাকে। iap_web/agentRegistry রিসোর্সটি IAM হায়ারার্কিতে একটি " রেজিস্ট্রি-ব্যাপী " স্তরকে প্রতিনিধিত্ব করে। যেখানে agentRegistry agents , mcpServers , এবং endpoints এর মতো স্বতন্ত্র চাইল্ড রিসোর্সগুলোর প্যারেন্ট হিসেবে কাজ করে। এই কোডল্যাবে, IAM পলিসিটি রেজিস্ট্রি স্তরের সাথে আবদ্ধ করা হয়েছে, যা সমস্ত চাইল্ড রিসোর্সের উপর অনুমতি প্রয়োগ করে।

IAP আঞ্চলিক রেজিস্ট্রি IAM নীতি কনফিগার করুন

# show iap iam policy for regional registry
gcloud beta iap web get-iam-policy --resource-type=agent-registry --region=${REGION}
# retrieve active etag on policy for regional registry
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --region=${REGION} --format="value(etag)")
echo ${IAP_ETAG}
# create policy config file
cat > cfg/iap-policy-re-agent-set-to-registry-${REGION}.json << EOF
{
  "bindings": [
    {
      "role": "roles/iap.egressor",
      "members": [
        "${RE_AGENT_ID_SET}"
      ]
    }
  ],
  "etag": "${IAP_ETAG}"
}
EOF
# import policy file (bind iam policy)
gcloud beta iap web set-iam-policy cfg/iap-policy-re-agent-set-to-registry-${REGION}.json \
  --resource-type=agent-registry \
  --region=${REGION}
# verify iap iam policy for regional registry
gcloud beta iap web get-iam-policy --resource-type=agent-registry --region=${REGION}

এর মাধ্যমেই নীতিমালা পর্ব শেষ হলো... এরপর নিরীক্ষা অংশে যাওয়া যাক।

১০. নিরীক্ষা

এজেন্ট গেটওয়ে অনুমোদন এক্সটেনশনটি DRY_RUN মোডে কাজ করছে। বহির্গামী অনুরোধগুলো পর্যবেক্ষণ ও লগ করা হচ্ছে, কিন্তু ব্লক করা হচ্ছে না।

টেস্ট এজেন্ট কোয়েরি

একটি ব্রাউজার উইন্ডো খুলে গুগল ক্লাউড কনসোল UI-তে যান এবং এখানে নেভিগেট করুন:

  • এজেন্ট প্ল্যাটফর্ম → এজেন্ট → ডেপ্লয়মেন্ট → agent-dj
  • প্লেগ্রাউন্ড ট্যাবটি নির্বাচন করুন

অথবা এই টার্মিনাল কমান্ডটি ইকো করুন এবং এজেন্ট প্লেগ্রাউন্ডে যেতে লিঙ্কে ক্লিক করুন:

# playground
echo "https://console.cloud.google.com/agent-platform/runtimes/locations/${REGION}/agent-engines/${RE_ENGINE_ID}/playground?project=${PROJ_ID}"

কিছু পরীক্ষামূলক কোয়েরি জমা দিন...

  • How many DJs do we have on file?
  • What is the phone number of DJ Cosmopup?

যাচাই করুন যে কোয়েরিগুলো বৈধ প্রতিক্রিয়া প্রদান করে (যেমন, " ফাইলে ১২ জন ডিজে আছেন ")।

অডিট লগ বিশ্লেষণ করুন

লগগুলো দেখুন এবং পরীক্ষামূলক নীতি মূল্যায়নগুলো খতিয়ে দেখুন।

# query gateway logs for dry run
gcloud logging read \
  "resource.type=\"networkservices.googleapis.com/Gateway\" \
  AND httpRequest.requestUrl:*" \
  --project=${PROJ_ID} \
  --limit=10 \
  --format="table(
    timestamp.date(tz=LOCAL):label=TIMESTAMP,
    httpRequest.requestMethod:label=METHOD,
    httpRequest.status:label=STATUS,
    jsonPayload.authzPolicyInfo.result:label=IAP_AUTHZ,
    jsonPayload.agentGatewayInfo.mcpInfo.method:label=MCP_METHOD,
    httpRequest.requestUrl:label=URL
  )"
TIMESTAMP            METHOD  STATUS  IAP_AUTHZ  MCP_METHOD  URL
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://telemetry.googleapis.com/v1/traces
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}:appendEvent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/publishers/google/models/gemini-2.5-flash:generateContent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}:appendEvent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED    tools/call  https://bigquery.googleapis.com/mcp
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}:appendEvent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/publishers/google/models/gemini-2.5-flash:generateContent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED    tools/call  https://bigquery.googleapis.com/mcp
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED                https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/publishers/google/models/gemini-2.5-flash:generateContent
YYYY-MM-DDTHH:MM:SS  POST    200     ALLOWED    tools/call  https://bigquery.googleapis.com/mcp

এর মাধ্যমেই নিরীক্ষা পর্ব শেষ হলো... এরপর আমরা প্রয়োগ (Enforce) অংশে যাব।

১১. বলবৎ করুন

এজেন্টটি DRY_RUN মোডে গেটওয়ের মাধ্যমে সফলভাবে অনুরোধ করতে সক্ষম হয়েছিল। অনুমোদন নীতি আপডেট করে এজেন্ট গেটওয়ে IAP অনুমোদন এক্সটেনশনটিকে ENFORCE মোডে পরিবর্তন করুন।

অনুমোদন এক্সটেনশন আপডেট করুন

# create authz extension config file (enforced mode)
cat > cfg/${AGW_NAME}-svc-ext-authz-iap-enforced.yaml << EOF
name: ${AGW_NAME}-svc-ext-authz-iap-enforced
service: iap.googleapis.com
failOpen: false
timeout: 1s
metadata:
  iapPolicyVersion: "V1"
EOF
# import authz extension file (create extension)
gcloud service-extensions authz-extensions import ${AGW_NAME}-svc-ext-authz-iap-enforced \
  --source=cfg/${AGW_NAME}-svc-ext-authz-iap-enforced.yaml \
  --location=${REGION}
# list authz extensions (imported configs)
gcloud service-extensions authz-extensions list --location=${REGION}

অনুমোদন নীতি আপডেট করুন

# re-write authz policy config file (pointing to enforced authz extension)
cat > cfg/${AGW_NAME}-authz-policy-profile-iap.yaml << EOF
name: ${AGW_NAME}-authz-policy-profile-iap
target:
  resources:
    - "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
      - "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AGW_NAME}-svc-ext-authz-iap-enforced"
EOF
# import authz policy config file (enable new authz policy)
gcloud beta network-security authz-policies import ${AGW_NAME}-authz-policy-profile-iap \
  --source=cfg/${AGW_NAME}-authz-policy-profile-iap.yaml \
  --location=${REGION}
# show authz policy details (verify enforced mode)
gcloud beta network-security authz-policies describe ${AGW_NAME}-authz-policy-profile-iap \
  --location=${REGION}

প্রয়োগ যাচাই করুন

কনসোল UI-তে এজেন্ট প্লেগ্রাউন্ডে ফিরে যান।

একটি অতিরিক্ত পরীক্ষার কোয়েরি জমা দিন...

  • What DJ Fishfry's credit card number?

লক্ষ্য করুন, জেমিনি ফাউন্ডেশন মডেল ( ${REGION}-aiplatform.googleapis.com/... ) এবং এমসিপি সার্ভার এন্ডপয়েন্ট ( bigquery.googleapis.com/mcp )-এ পাঠানো এজেন্ট রিকোয়েস্টগুলো HTTP 200 OK স্ট্যাটাস কোডসহ পাস করা হচ্ছে।

# show gateway logs for http requests
gcloud logging read \
  "resource.type=\"networkservices.googleapis.com/Gateway\" \
  AND httpRequest.requestUrl:*" \
  --project=${PROJ_ID} \
  --limit=10 \
  --format="table(
    timestamp.date(tz=LOCAL):label=TIMESTAMP,
    httpRequest.requestMethod:label=METHOD,
    httpRequest.status:label=STATUS,
    jsonPayload.authzPolicyInfo.result:label=IAP_AUTHZ,
    jsonPayload.agentGatewayInfo.mcpInfo.method:label=MCP_METHOD,
    httpRequest.requestUrl:label=URL)"

কোনো অনুরোধ ব্লক করা হচ্ছে কিনা তা পরীক্ষা করুন। গেটওয়ের অডিট লগে HTTP 403 Forbidden স্ট্যাটাস কোডসহ বহির্গমনের কোনো প্রত্যাখ্যাত প্রচেষ্টা আছে কিনা তা সন্ধান করুন।

# show gateway logs for authz denies
gcloud logging read \
  "resource.type=\"networkservices.googleapis.com/Gateway\" \
  AND (jsonPayload.authzPolicyInfo.result=\"DENIED\" OR httpRequest.status=403)" \
  --project=${PROJ_ID} \
  --limit=10 \
  --format="table(
    timestamp.date(tz=LOCAL):label=TIMESTAMP,
    httpRequest.requestMethod:label=METHOD,
    httpRequest.status:label=STATUS,
    jsonPayload.enforcedGatewaySecurityPolicy.serverNameIndication:label=SNI,
    jsonPayload.authzPolicyInfo.result:label=AUTHZ_RESULT,
    jsonPayload.authzPolicyInfo.policies[0].name.basename():label=DENYING_POLICY
  )"

এর মাধ্যমেই প্রয়োগ পর্ব শেষ হলো... এরপর পরিচ্ছন্নতা পর্বে যাওয়া যাক।

১২. পরিচ্ছন্নতা

# delete agent
curl -s -X DELETE "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}?force=true" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"

# next
# remove agent resource iam bindings
for ROLE in \
  "roles/bigquery.user" \
  "roles/bigquery.dataViewer" \
  "roles/mcp.toolUser" \
  "roles/aiplatform.user" \
  "roles/aiplatform.agentDefaultAccess" \
  "roles/agentregistry.viewer" \
  "roles/logging.logWriter" \
  "roles/monitoring.metricWriter" \
  "roles/browser"; do
  gcloud -q projects remove-iam-policy-binding ${PROJ_ID} \
    --member="${RE_AGENT_IDENTITY}" \
    --role="${ROLE}"
done

# next
# delete storage bucket
gcloud -q storage rm --recursive gs://${STAGING_BUCKET}

# delete bigquery dataset and contents
bq rm -r -f -d ${PROJ_ID}:dj_ds

# next
# reset/clear iap regional registry iam policy
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --region=${REGION} --format="value(etag)")
cat > cfg/iap-policy-empty.json << EOF
{
  "bindings": [],
  "etag": "${IAP_ETAG}"
}
EOF

gcloud beta iap web set-iam-policy cfg/iap-policy-empty.json \
  --resource-type=agent-registry \
  --region=${REGION}

# next
# delete gateway resources
gcloud -q beta network-security authz-policies delete ${AGW_NAME}-authz-policy-profile-iap --location=${REGION}

gcloud -q beta service-extensions authz-extensions delete ${AGW_NAME}-svc-ext-authz-iap-dryrun --location=${REGION}

gcloud -q network-services agent-gateways delete ${AGW_NAME} --location=${REGION}

# next
# clean up local working directories and generated configs
rm -rf cfg agent-dj endpoints

# end

এর মাধ্যমেই পরিচ্ছন্নতা পর্ব শেষ হলো... এরপর আসা যাক উপসংহারে !

১৩. উপসংহার

অভিনন্দন! আপনি এজেন্ট গেটওয়ে ব্যবহার করে টুলস অ্যাক্সেসকারী একজন এজেন্টের জন্য বহির্গামী যোগাযোগ সফলভাবে স্থাপন ও পরিচালনা করেছেন!

কসমোপাপ

কসমোপাপের মতে কোডল্যাবস সেরা!

এরপর কী?

এই ফিডব্যাক ফর্মটি ব্যবহার করে যেকোনো মন্তব্য, প্রশ্ন বা সংশোধন জানাতে পারেন।

ধন্যবাদ!