वीपीसी सर्विस कंट्रोल की मदद से एजेंट और एजेंट गेटवे को डिप्लॉय करना

1. परिचय

इस कोडलैब में, वीपीसी सर्विस कंट्रोल पेरीमीटर के साथ एजेंट और एजेंट गेटवे सेट अप करने के लिए, Google Cloud एनवायरमेंट को कॉन्फ़िगर करने का तरीका बताया गया है. आपने VPC सर्विस कंट्रोल पेरीमीटर बनाया है, नेटवर्किंग और डीएनएस को कॉन्फ़िगर किया है, Identity-Aware Proxy (IAP) के साथ एजेंट गेटवे को डिप्लॉय किया है, और एजेंट को सुरक्षित तरीके से टेस्ट किया है.

आपको क्या बनाने को मिलेगा

इस कोडलैब में, Gemini Enterprise Agent प्लैटफ़ॉर्म और Agent Gateway के लिए एक सुरक्षित Google Cloud आर्किटेक्चर बनाया गया है. यह आर्किटेक्चर ये काम करता है:

  • यह VPC सर्विस कंट्रोल का इस्तेमाल करता है, ताकि प्रोजेक्ट के संसाधनों को डेटा चोरी होने से बचाया जा सके.
  • यह प्राइवेट एपीआई राउटिंग के लिए, निजी Google ऐक्सेस, Private Service Connect (PSC), और Cloud DNS के प्राइवेट ज़ोन को कॉन्फ़िगर करता है.
  • यह एजेंट गेटवे उपलब्ध कराता है. इसमें ट्रैफ़िक को एक जगह से प्रॉक्सी करने, बाहर निकलने के नियम, और प्रोटोकॉल कॉन्फ़िगरेशन की सुविधा होती है.
  • यह कुकी, Identity-Aware Proxy (IAP) के अनुरोध की अनुमति देने से जुड़ी नीतियों को लागू करती है.
  • यह प्राइवेट कनेक्टिविटी के ज़रिए, Agent Engine एजेंट को डिप्लॉय करता है और सुरक्षित तरीके से उसकी जांच करता है.

आपको क्या सीखने को मिलेगा

  • Agent Platform और सुरक्षा के लिए, ज़रूरी Google Cloud API चालू करने का तरीका.
  • वीपीसी सर्विस कंट्रोल पेरीमीटर और इनग्रेस ऐक्सेस के नियमों को कॉन्फ़िगर करने का तरीका.
  • निजी नेटवर्क कनेक्टिविटी और निजी डीएनएस रिकॉर्ड सेट अप करने का तरीका.
  • एजेंट गेटवे और एजेंट कनेक्टिविटी टेंप्लेट बनाने का तरीका.
  • IAP के अनुरोध की पुष्टि करने वाले एक्सटेंशन और नीतियों को कॉन्फ़िगर करने का तरीका.
  • एजेंट इंजन एजेंट को सुरक्षित तरीके से डिप्लॉय और टेस्ट करने का तरीका.

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud CLI इंस्टॉल हो और नए वर्शन पर अपडेट हो.
  • आपके वर्कस्टेशन पर Python 3 इंस्टॉल हो.
  • आपके वर्कस्टेशन पर Git इंस्टॉल होना चाहिए.
  • चालू Google Cloud संगठन और बिलिंग खाते की अनुमतियां.

2. ज़रूरी शर्तें

इस सेक्शन में, सेटअप स्क्रिप्ट चलाने से पहले, कमांड-लाइन टूल की बुनियादी ज़रूरी शर्तों और एनवायरमेंट कॉन्फ़िगरेशन के बारे में बताया गया है.

  1. पुष्टि करें कि Google Cloud CLI इंस्टॉल हो और इसे नए वर्शन पर अपडेट किया गया हो. इसके बाद, अपने Google खाते से पुष्टि करें. Google Cloud CLI के कॉम्पोनेंट अपडेट करें, ताकि आपको नेटवर्क सेवाओं और वीपीसी सर्विस कंट्रोल के लिए, नई सुविधाओं का सपोर्ट मिल सके.
gcloud components update
gcloud auth login
gcloud config set account USER_EMAIL
  1. पुष्टि करें कि कस्टम एजेंट फ़्रेमवर्क को कॉन्फ़िगर और डिप्लॉय करने के लिए, Python 3 इंस्टॉल किया गया हो. निर्देशों के लिए, Python मॉड्यूल इंस्टॉल करना लेख पढ़ें:
python3 --version
  1. पक्का करें कि सेटअप कोड और कॉन्फ़िगरेशन टेंप्लेट वाली सैंपल रिपॉज़िटरी को क्लोन करने के लिए, Git इंस्टॉल किया गया हो. निर्देशों के लिए, Git इंस्टॉल करना लेख पढ़ें.

3. 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

बिलिंग की सुविधा चालू करें

सेवा का इस्तेमाल करने के लिए, नए प्रोजेक्ट से कोई चालू बिलिंग खाता लिंक करें.

एपीआई कोटा का इस्तेमाल करने और Google Cloud इन्फ़्रास्ट्रक्चर (जैसे, एजेंट गेटवे, वर्चुअल प्राइवेट क्लाउड, और कंप्यूट नोड) को चालू करने के लिए, बिलिंग चालू करना ज़रूरी है. बिलिंग कॉन्फ़िगरेशन के बारे में ज़्यादा जानने के लिए, Google Cloud Billing का दस्तावेज़ पढ़ें.

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

4. सेवाएं सक्षम करें

एजेंट, एजेंट गेटवे, नेटवर्किंग, सुरक्षा, और निगरानी से जुड़ी सुविधाओं के लिए, Google Cloud के सभी ज़रूरी एपीआई चालू करें.

एपीआई चालू करने से, संसाधन मैनेजमेंट, जांचने की क्षमता, और नेटवर्किंग की बैकएंड क्लाउड सेवाएं उपलब्ध हो जाती हैं. ये सेवाएं, एजेंट को सुरक्षित तरीके से कनेक्टिविटी के लिए ज़रूरी होती हैं. ज़्यादा जानने के लिए, सेवा उपयोग 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

5. एनवायरमेंट वैरिएबल एक्सपोर्ट करना

क्षेत्र, प्रोजेक्ट आईडी, प्रोजेक्ट नंबर, संगठन आईडी, और उपयोगकर्ता की पहचान के लिए, फिर से इस्तेमाल किए जा सकने वाले एनवायरमेंट वैरिएबल तय करें. शेल वैरिएबल सेट करने से, सभी चरणों में संसाधन कॉन्फ़िगरेशन कमांड को स्टैंडर्ड बनाया जाता है. इससे स्क्रिप्ट एक्ज़ीक्यूट करने के दौरान, मैन्युअल तरीके से वैरिएबल बदलने पर होने वाली गड़बड़ियों को कम किया जा सकता है.

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)

6. वीपीसी सर्विस कंट्रोल पेरीमीटर बनाना

अपने प्रोजेक्ट के संसाधनों को अलग करने और डेटा चोरी को रोकने के लिए, वीपीसी सर्विस कंट्रोल पेरीमीटर बनाएं. ज़्यादा जानकारी के लिए, VPC सर्विस कंट्रोल की खास जानकारी देखें.

ऐक्सेस की नीति फ़ेच करना

अपने संगठन से जुड़ा ऐक्सेस कॉन्टेक्स्ट मैनेजर नीति आईडी पाएं. ऐक्सेस कॉन्टेक्स्ट मैनेजर की नीतियां, संगठन की उस सीमा को तय करती हैं जहां वीपीसी सर्विस कंट्रोल पेरीमीटर अटैच किए जाते हैं और लागू किए जाते हैं.

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"

यह कोडलैब, आपके एनवायरमेंट को इस तरह से कॉन्फ़िगर करता है कि वीपीसी सर्विस कंट्रोल की वजह से, ऐक्सेस के अनुरोध डिफ़ॉल्ट रूप से अस्वीकार न किए जाएं. हालांकि, टेस्टिंग के दौरान समस्या हल करने में आपकी मदद करने के लिए, वीपीसी सर्विस कंट्रोल, ऐक्सेस से जुड़े लॉग और नीति से जुड़े इंटेलिजेंस टूल की ज़्यादा जानकारी देता है.

वीपीसी सर्विस कंट्रोल से जुड़ी समस्याओं को हल करना

टेस्टिंग के दौरान, समस्या हल करने के लिए यहां दी गई सलाह देखें:

  1. अपने एनवायरमेंट में हुए नए उल्लंघनों को ट्रैक करने के लिए, उल्लंघन डैशबोर्ड चालू करें.
  2. वीपीसी सर्विस कंट्रोल के तहत, ऐक्सेस से जुड़ी गड़बड़ी (403) के लॉग के लिए Cloud Audit Logs की निगरानी करें.
  3. उल्लंघन के बारे में जानकारी देने वाले टूल में, उल्लंघन के यूनीक आईडी या टोकन का इस्तेमाल करके उल्लंघनों का पता लगाएं.
  4. ज़्यादा जानकारी के लिए, VPC सर्विस कंट्रोल से जुड़ी समस्या हल करने वाला वीडियो देखें.

7. नेटवर्किंग सेट अप करना

Google के API और सेवाओं के साथ निजी तौर पर कम्यूनिकेट करने के लिए, वीपीसी नेटवर्क की सेटिंग कॉन्फ़िगर करें. नेटवर्क को सही तरीके से कॉन्फ़िगर करने से यह पक्का किया जा सकता है कि एजेंट, गेटवे, और Google Cloud API के बीच नेटवर्क ट्रैफ़िक, निजी इंटरनल नेटवर्क पर बना रहे. नेटवर्किंग पैटर्न के बारे में ज़्यादा जानने के लिए, Google Cloud VPC का दस्तावेज़ देखें.

निजी Google ऐक्सेस की सुविधा चालू करना

डिफ़ॉल्ट सबनेट पर निजी Google ऐक्सेस चालू करें, ताकि वीएम इंस्टेंस और इंटरनल वर्कलोड, सार्वजनिक आईपी पतों के बजाय इंटरनल आईपी पतों का इस्तेमाल करके Google APIs तक पहुंच सकें.

export NETWORK_NAME="default"
export SUBNET_NAME="default"
gcloud compute networks subnets update $SUBNET_NAME --region=$REGION --enable-private-ip-google-access

पीएसटीएन नेटवर्क अटैचमेंट बनाना

एजेंट गेटवे कनेक्टिविटी के लिए, Private Service Connect (PSC) नेटवर्क अटैचमेंट बनाएं. नेटवर्क अटैचमेंट, Private Service Connect (PSC) इंटरफ़ेस उपलब्ध कराते हैं. इससे, Agent Gateway सेवा और आपके इंटरनल सबनेट के बीच, वीपीसी के अलग-अलग हिस्सों में सुरक्षित तरीके से कम्यूनिकेशन किया जा सकता है.

gcloud compute network-attachments create psc-agw-${REGION} \
  --region=${REGION} \
  --subnets=${SUBNET_NAME} \
  --connection-preference=ACCEPT_AUTOMATIC

पुष्टि करें

हाल ही में बनाए गए नेटवर्क अटैचमेंट के सेल्फ़-लिंक संसाधन यूआरआई को वापस पाएं और उसकी जांच करें. संसाधन यूआरआई की पुष्टि करने से यह पक्का होता है कि नेटवर्क अटैचमेंट को सही तरीके से इंस्टैंटिएट किया गया है. साथ ही, इसे कनेक्टिविटी टेंप्लेट में रेफ़रंस किया जा सकता है.

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 का निजी ज़ोन बनाना

निजी आईपी रेंज के ज़रिए googleapis.com ट्रैफ़िक को रूट करने के लिए, Cloud DNS का निजी ज़ोन कॉन्फ़िगर करें. निजी डीएनएस ज़ोन, googleapis.com के लिए सार्वजनिक डोमेन लुकअप को बदल देते हैं. इससे सभी आउटगोइंग ट्रैफ़िक को आपके वीपीसी नेटवर्क में मौजूद प्राइवेट इंटरनल वर्चुअल आईपी (वीआईपी) पर रीडायरेक्ट किया जाता है. ज़्यादा जानकारी के लिए, 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}

प्राइवेट राउटिंग के लिए, डोमेन के इन विकल्पों में से कोई एक चुनें. लेन-देन पूरा करने से पहले, सिर्फ़ विकल्प 1 या विकल्प 2 में दी गई कमांड चलाएं. ज़्यादा जानकारी के लिए, 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

दूसरा विकल्प: सीमित वीआईपी

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

डीएनएस लेन-देन करना:

gcloud dns record-sets transaction execute --zone=${ZONE_NAME}

8. एजेंट गेटवे बनाना

एजेंट गेटवे को चालू करें. साथ ही, इसके कनेक्टिविटी टेंप्लेट और राउटिंग के नियम तय करें. Agent Gateway, एजेंट के ट्रैफ़िक, इग्रेस नीतियों, प्रोटोकॉल हैंडलिंग, और सुरक्षित सेवा की खोज को मैनेज करने के लिए, एक सेंट्रलाइज़्ड प्रॉक्सी के तौर पर काम करता है. आर्किटेक्चर के रेफ़रंस के लिए, Agent Gateway की खास जानकारी देखें.

आर्किटेक्चर डायग्राम में दिखाया गया है कि एजेंट, एजेंट गेटवे के ज़रिए अनुरोधों को कैसे रूट करता है. साथ ही, इसमें आईएपी अनुरोध की अनुमति और वीपीसी सर्विस कंट्रोल पेरीमीटर के अंदर पीएससी नेटवर्क अटैचमेंट को दिखाया गया है.

export AGW_NAME="gateway-${USER_IDENTITY}"
export AGW_CONNECTIVITY_TEMPLATE="agw-connectivity-template-${USER_IDENTITY}"

एजेंट कनेक्टिविटी टेंप्लेट बनाना

कनेक्टिविटी टेंप्लेट में, नेटवर्क कॉन्फ़िगरेशन, इग्रेस राउटिंग नीतियां, डीएनएस पीयरिंग सेटिंग, और नेटवर्क अटैचमेंट यूआरआई के बारे में जानकारी होती है. ये सभी चीज़ें, आउटगोइंग अनुरोधों को मैनेज करने के लिए गेटवे को चाहिए होती हैं.

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}

9. IAP के ज़रिए अनुमति देना

Agent Gateway का ऐक्सेस देने से पहले, अनुरोध के क्रेडेंशियल की पुष्टि करने के लिए, Identity-Aware Proxy (IAP) की अनुरोध की अनुमति देने वाली नीतियां और सेवा एक्सटेंशन कॉन्फ़िगर करें. ज़्यादा जानकारी के लिए, IAP का दस्तावेज़ देखें.

फ़्लो डायग्राम में दिखाया गया है कि Agent Gateway, Network Security Authz Policy और Authz Service Extension का इस्तेमाल करके, Identity-Aware Proxy (IAP) को अनुरोध की अनुमति कैसे देता है.

export AUTHZ_EXT="iap-authz-extension-${USER_IDENTITY}"
export AUTHZ_POLICY="iap-authz-policy-${USER_IDENTITY}"

Create AuthZ Extension

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 के लिए अनुमति न मिलने से जुड़ी समस्याओं को हल करना और उन पर नज़र रखना

  1. _Default logging bucket पर Log Analytics चालू करें:
gcloud logging buckets update _Default --location=global --enable-analytics --async
  1. एजेंट गेटवे की जांचने की क्षमता वाला डैशबोर्ड खोलें:
  2. Google Cloud Console में, Agent Gateway पेज पर जाएं.
  3. अपने गेटवे के नाम पर क्लिक करें. उदाहरण के लिए, gateway-xyz.
  4. Observability टैब पर क्लिक करें.
  5. अनुमति न मिलने और 403 से जुड़ी गड़बड़ियों वाले डैशबोर्ड की समीक्षा करें.

10. एजेंट इंजन एजेंट बनाना

स्टेजिंग बकेट बनाना

रनटाइम के दौरान, शुरुआती चरणों में इस्तेमाल होने वाले आर्टफ़ैक्ट, डिपेंडेंसी, और डिप्लॉयमेंट कॉन्फ़िगरेशन को सेव करने के लिए, टारगेट किए गए क्षेत्र में 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

Agent Platform के सर्विस एजेंट को आईएएम भूमिकाएं असाइन करना

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

11. गेटवे के ज़रिए एजेंट को बाहर निकलने की अनुमति दें

नए एजेंट को googleapis.com पर इग्रेस ट्रैफ़िक भेजने की अनुमति दें.

ध्यान दें: एजेंट गेटवे की निगरानी की सुविधा का इस्तेमाल करके, एंडपॉइंट को चुनिंदा तौर पर अनुमति दी जा सकती है. आसानी के लिए, इस कोडलैब में सभी एपीआई को ऐक्सेस करने की अनुमति दी गई है.

आईएएम की इग्रेस नीति के नियमों को साफ़ तौर पर कॉन्फ़िगर करने से, एजेंट को Agent Gateway और IAP प्रॉक्सी के ज़रिए एपीआई कॉल को रूट करने की अनुमति मिलती है, ताकि बाहरी 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

12. एजेंट को टेस्ट करना

Google Cloud console में एजेंट के ऑपरेशन की पुष्टि करने से यह पता चलता है कि एंड-टू-एंड कम्यूनिकेशन, IAM नीतियां, और वीपीसी सर्विस कंट्रोल की सीमाएं सही तरीके से काम कर रही हैं. अब एजेंट को टेस्ट करने के लिए तैयार रहें:

  1. Google Cloud Console में, एजेंट डिप्लॉयमेंट पेज पर जाएं.
  2. डिप्लॉय किया गया एजेंट (gcp_agent_...) चुनें.
  3. प्लेग्राउंड टैब खोलें.
  4. प्रॉम्प्ट फ़ील्ड में, यह डालें: List storage buckets in the current project.
  5. पुष्टि करें कि एजेंट, निजी एजेंट गेटवे के ज़रिए बकेट की सूची को सही तरीके से वापस भेज रहा हो.
  6. पुष्टि करें कि ऐक्सेस न होने की वजह से, एजेंट किसी दूसरे प्रोजेक्ट से बकेट नहीं पा सकता. Cloud Audit Logs या VPC सर्विस कंट्रोल के उल्लंघन वाले डैशबोर्ड में, ऐक्सेस अस्वीकार किए जाने की वजह देखी जा सकती है.

13. व्यवस्थित करें

इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लिए जाने से बचने के लिए, बनाए गए प्रोजेक्ट को मिटाएं:

gcloud projects delete ${PROJ_ID}

14. बधाई हो

बधाई हो! आपने Google Cloud पर, सुरक्षित VPC सर्विस कंट्रोल पेरीमीटर में एजेंट और एजेंट गेटवे को कॉन्फ़िगर कर लिया है.

आगे क्या करना है?

  • वीपीसी सर्विस कंट्रोल में, इनग्रेस और इग्रेस के नियमों के बारे में जानें.
  • Agent Gateway का इस्तेमाल करके, ऐक्सेस और सिमैंटिक नीतियां कॉन्फ़िगर करें.
  • बेहतर सुरक्षा और सुरक्षा फ़िल्टरिंग के लिए, Model Armor को इंटिग्रेट करें.

रेफ़रंस दस्तावेज़