1. บทนำ
Codelab นี้จะแนะนำวิธีกำหนดค่าสภาพแวดล้อม Google Cloud เพื่อตั้งค่าเอเจนต์และเกตเวย์เอเจนต์ที่มีขอบเขตการควบคุมบริการ VPC คุณสร้างขอบเขตการควบคุมบริการ VPC กำหนดค่าเครือข่ายและ DNS, ปรับใช้ Agent Gateway ด้วยการให้สิทธิ์คำขอ Identity-Aware Proxy (IAP) และทดสอบเอเจนต์อย่างปลอดภัย
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะสร้างสถาปัตยกรรม Google Cloud ที่ปลอดภัยสำหรับ Gemini Enterprise Agent Platform และ Agent Gateway ซึ่งจะทำสิ่งต่อไปนี้
- ใช้การควบคุมบริการ VPC เพื่อช่วยรักษาความปลอดภัยให้กับทรัพยากรของโปรเจ็กต์จากการขโมยข้อมูลที่ไม่ได้รับอนุญาต
- กำหนดค่าการเข้าถึง Google แบบส่วนตัว, Private Service Connect (PSC) และโซนส่วนตัวของ Cloud DNS สำหรับการกำหนดเส้นทาง API ส่วนตัว
- จัดสรรเกตเวย์ของ Agent ด้วยการพร็อกซีการรับส่งข้อมูลส่วนกลาง กฎขาออก และการกำหนดค่าโปรโตคอล
- บังคับใช้นโยบายการให้สิทธิ์คำขอของ Identity-Aware Proxy (IAP)
- ติดตั้งใช้งานและทดสอบเอเจนต์ Agent Engine อย่างปลอดภัยผ่านการเชื่อมต่อส่วนตัว
สิ่งที่คุณจะได้เรียนรู้
- วิธีเปิดใช้ Google Cloud API ที่จำเป็นสำหรับแพลตฟอร์มเอเจนต์และความปลอดภัย
- วิธีกำหนดค่าขอบเขตการควบคุมบริการ VPC และกฎการเข้าถึงขาเข้า
- วิธีตั้งค่าการเชื่อมต่อเครือข่ายส่วนตัวและระเบียน DNS ส่วนตัว
- วิธีสร้าง Agent Gateway และเทมเพลตการเชื่อมต่อของตัวแทน
- วิธีกำหนดค่าส่วนขยายและนโยบายการให้สิทธิ์คำขอ IAP
- วิธีทำให้ใช้งานได้และทดสอบ Agent ของ Agent Engine อย่างปลอดภัย
สิ่งที่ต้องมี
- ติดตั้งและอัปเดต Google Cloud CLI เป็นเวอร์ชันล่าสุดแล้ว
- ติดตั้ง Python 3 ในเวิร์กสเตชัน
- ติดตั้ง Git ในเวิร์กสเตชัน
- สิทธิ์ขององค์กร Google Cloud และบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่
2. ข้อกำหนดเบื้องต้น
ส่วนนี้จะอธิบายข้อกำหนดพื้นฐานของเครื่องมือบรรทัดคำสั่งและการกำหนดค่าสภาพแวดล้อมที่จำเป็นก่อนเรียกใช้สคริปต์การตั้งค่า
- ตรวจสอบว่าได้ติดตั้ง Google Cloud CLI และอัปเดตเป็นเวอร์ชันล่าสุดแล้ว จากนั้นให้ตรวจสอบสิทธิ์ด้วยบัญชี Google อัปเดตคอมโพเนนต์ของ Google Cloud CLI เพื่อให้แน่ใจว่าคุณจะได้รับการรองรับฟีเจอร์ล่าสุดสำหรับบริการเครือข่ายและการควบคุมบริการ VPC
gcloud components update
gcloud auth login
gcloud config set account USER_EMAIL
- ตรวจสอบว่าได้ติดตั้ง Python 3 แล้วเพื่อกำหนดค่าและติดตั้งใช้งานเฟรมเวิร์กของตัวแทนที่กำหนดเอง ดูวิธีการได้ที่การติดตั้งโมดูล Python
python3 --version
- ตรวจสอบว่าได้ติดตั้ง Git เพื่อโคลนที่เก็บตัวอย่างที่มีโค้ดการตั้งค่าและเทมเพลตการกำหนดค่า ดูวิธีการได้ที่การติดตั้ง Git
3. กำหนดค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google
การสร้างโปรเจ็กต์ที่แยกต่างหากภายในองค์กรจะช่วยให้มั่นใจได้ว่าทรัพยากร เครือข่าย และสิทธิ์ทั้งหมดที่ใช้ในโค้ดแล็บนี้จะยังคงได้รับการห่อหุ้มและจัดการได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและการจัดการโปรเจ็กต์
เริ่มต้นโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ใหม่ภายใต้องค์กรเพื่อโฮสต์ทรัพยากรสำหรับการตั้งค่านี้ คุณยังใช้โปรเจ็กต์ของคุณเองได้ด้วย โดยทำดังนี้
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 เช่น เกตเวย์ของตัวแทน, Virtual Private Cloud และโหนดการประมวลผล โปรดดูรายละเอียดเกี่ยวกับการกำหนดค่าการเรียกเก็บเงินในเอกสารประกอบการเรียกเก็บเงินใน Cloud ของ Google
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 ที่จำเป็นทั้งหมดสำหรับฟีเจอร์เอเจนต์ เกตเวย์เอเจนต์ เครือข่าย ความปลอดภัย และการสังเกตการณ์
การเปิดใช้งาน API จะเปิดเผยบริการระบบคลาวด์แบ็กเอนด์สำหรับการจัดการทรัพยากร ความสามารถในการสังเกตการณ์ และความสามารถด้านเครือข่ายที่จำเป็นสำหรับการเชื่อมต่อเอเจนต์ที่ปลอดภัย ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ Service Usage 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. ส่งออกตัวแปรสภาพแวดล้อม
กำหนดตัวแปรสภาพแวดล้อมที่นำกลับมาใช้ใหม่ได้สำหรับภูมิภาค รหัสโปรเจ็กต์ หมายเลขโปรเจ็กต์ รหัสองค์กร และข้อมูลประจำตัวผู้ใช้ การตั้งค่าตัวแปร Shell จะกำหนดมาตรฐานคำสั่งการกำหนดค่าทรัพยากรในขั้นตอนต่างๆ ซึ่งช่วยลดข้อผิดพลาดในการแทนที่ด้วยตนเองระหว่างการเรียกใช้สคริปต์
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
สร้างขอบเขตการควบคุมบริการ VPC เพื่อแยกทรัพยากรของโปรเจ็กต์และช่วยป้องกันการขโมยข้อมูล โปรดดูข้อมูลเพิ่มเติมที่ภาพรวมของการควบคุมบริการ VPC
ดึงนโยบายการเข้าถึง
เรียกข้อมูลรหัสของนโยบายเครื่องมือจัดการสิทธิ์เข้าถึงตามบริบท ที่เชื่อมโยงกับองค์กร นโยบายเครื่องมือจัดการสิทธิ์เข้าถึงตามบริบทจะกำหนดขอบเขตขององค์กรที่มีการแนบและบังคับใช้ขอบเขตการควบคุมบริการ 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"
Codelab นี้จะกำหนดค่าสภาพแวดล้อมเพื่อหลีกเลี่ยงการปฏิเสธการเข้าถึงการควบคุมบริการ VPC โดยค่าเริ่มต้น อย่างไรก็ตาม การควบคุมบริการ VPC มีบันทึกการปฏิเสธโดยละเอียดและเครื่องมืออัจฉริยะด้านนโยบายเพื่อช่วยคุณแก้ปัญหาในระหว่างการทดสอบ
การแก้ปัญหาการปฏิเสธการควบคุมบริการ VPC
ตลอดการทดสอบ โปรดดูเคล็ดลับการแก้ปัญหาต่อไปนี้
- เปิดใช้แดชบอร์ดการละเมิดเพื่อติดตามการละเมิดล่าสุดในสภาพแวดล้อมของคุณ
- ตรวจสอบบันทึกการตรวจสอบ Cloud สำหรับบันทึกการปฏิเสธการเข้าถึง (403) การควบคุมบริการ VPC
- วินิจฉัยการละเมิดโดยใช้รหัสที่ไม่ซ้ำกันหรือโทเค็นของการละเมิดในเครื่องมือวิเคราะห์การละเมิด
- ดูคำแนะนำแบบทีละขั้นตอนโดยละเอียดได้ในวิดีโอการแก้ปัญหาการควบคุมบริการ VPC
7. ตั้งค่าเครือข่าย
กำหนดค่าการตั้งค่าเครือข่าย VPC เพื่อรองรับการสื่อสารส่วนตัวกับ Google API และบริการ การกำหนดค่าเครือข่ายที่เหมาะสมช่วยให้มั่นใจได้ว่าการจราจรของข้อมูลในเครือข่ายระหว่าง Agent, เกตเวย์ และ Google Cloud API จะยังคงอยู่ในเครือข่ายภายในส่วนตัว ดูรูปแบบเครือข่ายโดยละเอียดได้ในเอกสารประกอบเกี่ยวกับ VPC ของ Google Cloud
เปิดใช้การเข้าถึง Google แบบส่วนตัว
เปิดใช้การเข้าถึง Google แบบส่วนตัวในเครือข่ายย่อยเริ่มต้นเพื่อให้อินสแตนซ์ VM และภาระงานภายในเข้าถึง Google APIs ได้โดยใช้ที่อยู่ IP ภายในแทนที่อยู่ IP สาธารณะ
export NETWORK_NAME="default"
export SUBNET_NAME="default"
gcloud compute networks subnets update $SUBNET_NAME --region=$REGION --enable-private-ip-google-access
สร้างการแนบเครือข่าย PSC
สร้างไฟล์แนบเครือข่าย Private Service Connect (PSC) สำหรับการเชื่อมต่อ Agent Gateway การเชื่อมต่อเครือข่ายมีอินเทอร์เฟซ Private Service Connect (PSC) ซึ่งช่วยให้การสื่อสารข้าม VPC ระหว่างบริการ Agent Gateway และเครือข่ายย่อยภายในของคุณเป็นไปอย่างปลอดภัย
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
กำหนดค่าโซนส่วนตัวของ Cloud DNS เพื่อกำหนดเส้นทางการรับส่งข้อมูล googleapis.com ผ่านช่วง IP ส่วนตัว โซน DNS ส่วนตัวจะลบล้างการค้นหาโดเมนสาธารณะสำหรับ googleapis.com โดยจะนำการรับส่งข้อมูลขาออกทั้งหมดไปยัง IP เสมือน (VIP) ภายในส่วนตัวภายในเครือข่าย VPC ดูรายละเอียดเพิ่มเติมได้ที่โซนส่วนตัวของ 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}
เลือกตัวเลือกโดเมนต่อไปนี้สำหรับ Private Routing (เรียกใช้เฉพาะคำสั่งในตัวเลือกที่ 1 หรือตัวเลือกที่ 2 ก่อนที่จะดำเนินการธุรกรรม) อ่านเพิ่มเติมได้ในตัวเลือกการกำหนดค่าการเข้าถึงแบบส่วนตัวของ Google
ตัวเลือกที่ 1: VIP ส่วนตัว [แนะนำ]
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
ตัวเลือกที่ 2: 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}
8. สร้าง Agent Gateway
จัดสรรเกตเวย์ของ Agent และกำหนดเทมเพลตการเชื่อมต่อและกฎการกำหนดเส้นทาง Agent Gateway ทำหน้าที่เป็นพร็อกซีส่วนกลางสำหรับการจัดการการรับส่งข้อมูลของเอเจนต์ นโยบายขาออก การจัดการโปรโตคอล และ Service Discovery ที่ปลอดภัย ดูข้อมูลอ้างอิงด้านสถาปัตยกรรมได้ที่ภาพรวมของ Agent Gateway

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}
สร้าง Agent Gateway
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}
ยืนยันผลงาน
ตรวจสอบว่าได้ติดตั้งใช้งานและกำหนดค่าทรัพยากร Agent Gateway เรียบร้อยแล้ว การอธิบายเกตเวย์ของเอเจนต์ที่ติดตั้งใช้งานจะยืนยันว่าสถานะการทำงานของเกตเวย์นั้นใช้งานอยู่ และตรวจสอบว่าเทมเพลตการเชื่อมต่อและรีจิสทรีที่เชื่อมโยงนั้นแนบมาอย่างถูกต้อง
gcloud network-services agent-gateways describe ${AGW_NAME} \
--location=${REGION}
9. สร้างการให้สิทธิ์ผ่าน IAP
กำหนดค่านโยบายการให้สิทธิ์คำขอของ Identity-Aware Proxy (IAP) และส่วนขยายบริการเพื่อยืนยันข้อมูลเข้าสู่ระบบของคำขอก่อนให้สิทธิ์เข้าถึง Agent Gateway ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ 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 และเชื่อมโยงกับ Agent Gateway
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}
Codelab นี้จะช่วยให้คุณไม่ถูกปฏิเสธการเข้าถึง IAP โดยค่าเริ่มต้น อย่างไรก็ตาม Agent Gateway มีความสามารถในการสังเกตโดยละเอียดสำหรับการปฏิเสธการเข้าถึงเพื่อช่วยในการทดสอบ
แก้ปัญหาและตรวจสอบการปฏิเสธการให้สิทธิ์ IAP
- เปิดใช้ Log Analytics ใน _Default logging bucket โดยทำดังนี้
gcloud logging buckets update _Default --location=global --enable-analytics --async
- เปิดแดชบอร์ดการสังเกตการณ์เกตเวย์ของตัวแทนโดยทำดังนี้
- ในคอนโซล Google Cloud ให้ไปที่หน้า Agent Gateway
- คลิกชื่อเกตเวย์ (เช่น gateway-xyz)
- คลิกแท็บObservability
- ตรวจสอบแดชบอร์ดการให้สิทธิ์ล้มเหลวและการปฏิเสธ 403
10. สร้าง Agent เครื่องมือ Agent
สร้างที่เก็บข้อมูล Staging
สร้าง Bucket ของ 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 ให้กับตัวแทนบริการ 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"
ติดตั้งใช้งาน Agent
python3 deploy_gcp_agent.py create
ส่งออกข้อมูลประจำตัวของ Agent ที่พิมพ์ในเอาต์พุตของคำสั่งก่อนหน้าเป็นตัวแปรสภาพแวดล้อม
#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. อนุญาตการออกของ Agent ผ่านเกตเวย์
อนุญาตให้เอเจนต์ที่สร้างขึ้นใหม่ส่งการรับส่งข้อมูลขาออกจาก googleapis.com
หมายเหตุ: คุณสามารถเพิ่มอุปกรณ์ปลายทางในรายการที่อนุญาตได้โดยใช้ความสามารถในการสังเกตเกตเวย์ของเอเจนต์ Codelab นี้อนุญาตให้เข้าถึง API ทั้งหมดเพื่อความสะดวก
การกำหนดค่ากฎนโยบายขาออก IAM ที่ชัดเจนจะให้สิทธิ์แก่ Agent ในการกำหนดเส้นทางการเรียก API ผ่าน 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. ทดสอบ Agent
การตรวจสอบการทำงานของเอเจนต์ในคอนโซล Google Cloud จะยืนยันว่าการสื่อสารแบบครบวงจร นโยบาย IAM และขอบเขตการควบคุมบริการ VPC ทำงานได้อย่างถูกต้อง ตอนนี้คุณพร้อมที่จะทดสอบเอเจนต์แล้ว โดยทำดังนี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าการติดตั้งใช้งานเอเจนต์
- เลือกเอเจนต์ที่ติดตั้งใช้งาน (
gcp_agent_...) - เปิดแท็บสนามเด็กเล่น
- ในช่องพรอมต์ ให้ป้อน
List storage buckets in the current project. - ยืนยันว่า Agent แสดงรายการที่เก็บข้อมูลผ่านเกตเวย์ Agent ส่วนตัวได้สำเร็จ
- ตรวจสอบว่า Agent ไม่สามารถดึงข้อมูลที่เก็บข้อมูลจากโปรเจ็กต์อื่นได้เนื่องจากถูกปฏิเสธการเข้าถึง คุณสามารถตรวจสอบการปฏิเสธได้ในบันทึกการตรวจสอบระบบคลาวด์หรือแดชบอร์ดการละเมิดการควบคุมบริการ VPC
13. ล้างข้อมูล
หากไม่ต้องการให้ระบบเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้ ให้ลบโปรเจ็กต์ที่คุณสร้างขึ้นโดยทำดังนี้
gcloud projects delete ${PROJ_ID}
14. ขอแสดงความยินดี
ยินดีด้วย คุณกำหนดค่า Agent และ Agent Gateway ภายในขอบเขตการควบคุมบริการ VPC ที่ปลอดภัยใน Google Cloud เรียบร้อยแล้ว
สิ่งต่อไปที่ควรทำ
- สำรวจกฎขาเข้าและขาออกแบบละเอียดในการควบคุมบริการ VPC
- กำหนดค่าการเข้าถึงและนโยบายเชิงความหมายโดยใช้ Agent Gateway
- ผสานรวม Model Armor เพื่อการกรองความปลอดภัยขั้นสูง