Bulutlar arası, aracılı kurumsal dağıtımların güvenliğini sağlama

1. Giriş

Bu codelab'de, Agent Development Kit (ADK), Agent Engine ve Google Kubernetes Engine'i kullanarak tek bir aracı / çok araçlı dağıtımı güvenli bir şekilde dağıtacaksınız. Gemini Enterprise'da bir kullanıcı tarafından başlatılan yapay zeka aracısının, MCP aracı yanıtlarından gelen hassas verileri uçuş sırasında düzeltmek için GKE Gateway ile Hizmet Uzantıları'nı kullanarak Google Cloud'da nasıl güvenli bir şekilde gezindiğini öğreneceksiniz.

Öğrenecekleriniz

İhtiyacınız olanlar

  • Chrome gibi bir web tarayıcısı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi
  • Terraform, Kubernetes ve Python hakkında temel düzeyde bilgi

Bu codelab, kurumsal ortamlarda ajan tabanlı iş akışlarını dağıtmak ve güvenliğini sağlamak isteyen geliştiriciler ve güvenlik uzmanları içindir.

2. Başlamadan önce

Google Cloud projesi oluşturun ve gerekli API'leri etkinleştirin.

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.

Gerekli IAM rolleri

Bu codelab'de, Google Cloud projeniz için Proje Sahibi rolüne sahip olduğunuz varsayılır.

API'leri etkinleştir

  1. Google Cloud Console'da Cloud Shell'i etkinleştir'i tıklayın: Cloud Shell'i daha önce hiç kullanmadıysanız Cloud Shell'i güvenilir bir ortamda, hızlandırma ile veya hızlandırma olmadan başlatma seçeneği sunan bir bölme görünür. Cloud Shell'i yetkilendirmeniz istenirse Yetkilendir'i tıklayın.
  2. Cloud Shell'de gerekli tüm API'leri etkinleştirin:
    gcloud services enable \
    compute.googleapis.com \
    container.googleapis.com \
    dns.googleapis.com \
    certificatemanager.googleapis.com \
    dlp.googleapis.com \
    aiplatform.googleapis.com \
    discoveryengine.googleapis.com \
    apigee.googleapis.com
    

Bağımlıları yükleme

Cloud Shell'de gerekli araçların yüklü olduğundan emin olun. Terraform, kubectl ve Go genellikle önceden yüklenmiş olarak gelir. uv (Python paket yöneticisi) ve Skaffold'u yüklemeniz gerekir:

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install Skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/

Ortam değişkenlerini ayarlama

Bu codelab boyunca kullanılan aşağıdaki ortam değişkenlerini ayarlayın:

export PROJECT_ID=$(gcloud config get project)
export REGION=us-central1
export LOCATION=${REGION}

Herkese açık DNS bölgesi oluşturma

Bu codelab'de, Terraform yapılandırmasını uygulamadan önce projenizde herkese açık bir DNS bölgesi bulunması gerekir. Bu bölge, kurulumun Certificate Manager için gerekli kayıtların oluşturulmasını otomatikleştirebilmesi amacıyla ad sunucusu temsilcisi için gereklidir.

Bölgeyi oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud dns managed-zones create "inference-gateway-zone" \
    --dns-name="gateway.example.com." \
    --description="Public zone for Inference Gateway" \
    --visibility="public" \
    --project="${PROJECT_ID}"

3. GitHub deposunu kopyalama

  1. Yerel makinenizdeki bir terminalde cloud-networking-solutions deposunu klonlayın:
    git clone https://github.com/googleCloudPlatform/cloud-networking-solutions.git
    
  2. İndirilen depo dizinine gidin:
    cd cloud-networking-solutions/demos/service-extensions-gke-gateway
    

4. Terraform ile altyapı dağıtma

Temel ağı, GKE kümesini ve gerekli kimlik yapılandırmalarını sağlamak için Terraform'u kullanacaksınız.

  1. Klonlanan depoda terraform dizinine gidin:
    cd terraform
    
  2. Terraform arka ucunu yapılandırın. Kısmi arka uç yapılandırması için bir backend.conf dosyası oluşturun. yerine global olarak benzersiz bir paket adı girin.
    cat <<EOF > backend.conf
    bucket = "<YOUR_TERRAFORM_STATE_BUCKET>"
    prefix = "terraform"
    EOF
    
  1. Örnek değişken dosyasını kopyalayın ve proje değerlerinizle güncelleyin:
    cp example.tfvars terraform.tfvars
    
  2. terraform.tfvars dosyasını düzenleyin ve yer tutucu değerlerini değiştirin.Aşağıdakileri değiştirin:
    • project_id: Google Cloud proje kimliğiniz.
    • organization_id: Sayısal GCP kuruluş kimliğiniz.
    • dns_zone_domain: Kontrol ettiğiniz bir alan (ör. demo.example.com.). Nokta ile bitmelidir.
    Aşağıdaki özellik işaretlerinin etkinleştirildiğinden emin olun (örnek dosyada önceden yapılandırılmıştır):
    • enable_certificate_manager = true
    • enable_model_armor = true
    • enable_agent_engine = true
    • enable_psc_interface = true
  3. Terraform yapılandırmasını başlatın ve uygulayın:
    terraform init -backend-config=backend.conf
    terraform plan -out=tfplan
    terraform apply "tfplan"
    

5. Skaffold ile örnek iş yüklerini dağıtma

Ardından, MCP sunucularını ve harici işleme hizmetlerini GKE kümenize dağıtın.

  1. Terraform tarafından oluşturulan GKE kümesine bağlanın:
    gcloud container clusters get-credentials gateway-cluster \
        --region=${REGION} \
        --project=${PROJECT_ID}
    
  2. Proje köküne geri dönün ve Kubernetes manifest şablonlarını yapılandırın. Örnek yapılandırmayı kopyalayın ve proje kimliğinizi ve temel alanınızı ayarlayın:BASE_DOMAIN değerini ortamınızla eşleşecek şekilde ayarlayın. BASE_DOMAIN, dns_zone_domain Terraform değişkeninizle (sondaki nokta olmadan) eşleşmelidir.
    export BASE_DOMAIN=example.com
    
  3. Şablonlardan Kubernetes manifestleri ve skaffold.yaml oluşturun:
    bash k8s/generate.sh
    envsubst '${PROJECT_ID}' < skaffold.yaml.tmpl > skaffold.yaml
    
  4. Tüm arka uç hizmetlerini dağıtın:
    skaffold run -m legacy-dms,income-verification-api,corporate-email,dlp-ext-proc
    
  5. Ağ geçidi ve HTTPRoute yapılandırmasını dağıtın:
    kubectl apply -k k8s/gateway-internal/
    

6. Model Armor ile yapay zeka koruma sınırları uygulama

Zararlı istemleri kaldırma veya veri sızıntılarını önleme gibi içerik güvenliği kararlarını Model Armor'a devredebilirsiniz.

Ön koşullar: IAM rollerini verme

Gerekli rolleri GKE Gateway hizmet hesabına vermeniz gerekir. Hizmet hesabı şu biçimdedir: service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com.

Gerekli izinleri vermek için aşağıdaki komutları çalıştırın:

export GATEWAY_PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# Grant roles in the Gateway project
gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/modelarmor.calloutUser

gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/serviceusage.serviceUsageConsumer

# Grant role in the project containing Model Armor templates
gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/modelarmor.user

Model Armor Yetkilendirme Uzantısı'nı oluşturma

Bölgenizdeki Model Armor hizmetine işaret eden bir uzantı tanımlayın. Bu yapılandırmayı ma-content-authz-extension.yaml olarak kaydedin.

Terraform tarafından oluşturulan Model Armor şablon kimliğini dışa aktarın.

export MA_TEMPLATE_ID=$(cd terraform && terraform output -raw model_armor_template_id)
cat >ma-content-authz-extension.yaml <<EOF
name: ma-ext
service: modelarmor.$LOCATION.rep.googleapis.com
metadata:
  model_armor_settings: '[
  {
  "response_template_id": "projects/${PROJECT_ID}/locations/$LOCATION/templates/${MA_TEMPLATE_ID}",
  "request_template_id": "projects/${PROJECT_ID}/locations/$LOCATION/templates/${MA_TEMPLATE_ID}"
  }
  ]'
failOpen: true
EOF

gcloud beta service-extensions authz-extensions import ma-ext \
    --source=ma-content-authz-extension.yaml \
    --location=$LOCATION

Model Armor yetkilendirme politikasını oluşturma

Model Armor uzantısını Agent Gateway'inizle ilişkilendiren bir politika oluşturun. Bu yapılandırmayı ma-content-authz-policy.yaml olarak kaydedin.

cat >ma-content-authz-policy.yaml <<EOF
name: ma-content-authz-policy
target:
  resources:
  -   "projects/$PROJECT_ID/locations/$LOCATION/gateways/mortgage-gateway"
policyProfile: CONTENT_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
    -   "projects/$PROJECT_ID/locations/$LOCATION/authzExtensions/ma-ext"
EOF

gcloud network-security authz-policies import ma-content-authz-policy \
    --source=ma-content-authz-policy.yaml \
    --location=$LOCATION

7. Gemini Enterprise'ı yapılandırma

Gözlemlenebilirliği etkinleştirme

Mortgage aracısı, OpenTelemetry enstrümantasyonu ve aşağıdaki telemetri ortam değişkenleri varsayılan olarak etkinleştirilmiş şekilde dağıtılır:

  • GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY=true
  • OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
  • OTEL_TRACES_SAMPLER=parentbased_traceidratio

Gemini Enterprise'da izleri ve kapsamları yapılandırma hakkında ayrıntılı bilgi için Gözlemlenebilirlik ayarlarını yönetme başlıklı makaleyi inceleyin.

Gemini Enterprise'da Model Armor'u etkinleştirme

Hem kullanıcı istemlerini hem de model yanıtlarını taramak için Gemini Enterprise asistanına Model Armor filtreleme uygulayın. Global Gemini Enterprise uygulamaları, us çoklu bölgesinde Model Armor şablonu gerektirir. Bu nedenle Terraform, bu amaçla ayrı bir şablon dağıtır.

Şablon adını Terraform çıkışından alın:

cd terraform
export GE_MA_TEMPLATE_NAME=$(terraform output -raw model_armor_gemini_enterprise_template_name)

Gemini Enterprise örneğinizin uygulama kimliğini getirin:

  1. Google Cloud Console'da Gemini Enterprise sayfasına gidin.
  2. Gezinme menüsünden Uygulamalar'ı tıklayın.
  3. Gemini Enterprise örneğinin kimliğini kopyalayın.

Kimliği ortam değişkeni olarak dışa aktarın.

export APP_ID=<PASTE_APP_ID>

Model Armor'u etkinleştirmek için asistanı yamalayın:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: ${PROJECT_ID}" \
  "https://global-discoveryengine.googleapis.com/v1/projects/${PROJECT_ID}/locations/global/collections/default_collection/engines/${APP_ID}/assistants/default_assistant?update_mask=customerPolicy" \
  -d '{
    "customerPolicy": {
      "modelArmorConfig": {
        "userPromptTemplate": "'"$GE_MA_TEMPLATE_NAME"'",
        "responseTemplate": "'"$GE_MA_TEMPLATE_NAME"'",
        "failureMode": "FAIL_OPEN"
      }
    }
  }'

Model Armor kullanılamadığında isteklerin geçmesine izin vermek için failureMode politikasını FAIL_OPEN olarak, istekleri engellemek için FAIL_CLOSED olarak ayarlayın.

8. Gemini Enterprise'da Ajanı Dağıtma ve Ajan Ekleme

Yetkilendirme ayrıntılarını edinme

Yetkilendirme ayrıntılarını almak için aşağıdaki adımları uygulayın.

  1. Google Cloud Console'daki API'ler ve Hizmetler sayfasında Kimlik Bilgileri sayfasına gidin.
  2. Kimlik bilgileri'ne gidin.
  3. Kimlik bilgileri oluştur'u tıklayın ve OAuth istemci kimliğini seçin.
  4. Uygulama türü bölümünde Web uygulaması'nı seçin.
  5. Yetkilendirilmiş yönlendirme URI'leri bölümüne aşağıdaki URI'leri ekleyin:
  • https://vertexaisearch.cloud.google.com/oauth-redirect
  • https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
  1. Oluştur'u tıklayın.
  2. Dağıtım için istemci kimliğini ve istemci sırrını dışa aktarın.
export OAUTH_CLIENT_ID=<Client ID>
export OAUTH_CLIENT_SECRET=<Client Secret>

Mortgage temsilcisini dağıtma

src/mortgage-agent/deploy_agent.py komut dosyası, ADK aracısını Agent Engine'e dağıtır ve isteğe bağlı olarak Gemini Enterprise'a kaydeder. Gemini Enterprise kayıt akışıyla ilgili arka plan bilgileri için A2A aracısını kaydetme ve yönetme başlıklı makaleyi inceleyin.

Değişkenleri Terraform dağıtımından dışa aktarın.

export VPC_NAME=$(cd terraform && terraform output -raw vpc_name)
export PSC_ATTACHMENT=$(cd terraform && terraform output -raw psc_interface_network_attachment_id)
export DNS_PEERING_DOMAIN=$(cd terraform && terraform output -raw psc_interface_dns_peering_domain)

Bağımlılıkları yükleyin ve dağıtın:

cd src/mortgage-agent
uv sync

Ajanı Vertex Agent Engine'e dağıtın ve Gemini Enterprise'a kaydedin:

uv run python deploy_agent.py \
    --project=${PROJECT_ID} \
    --dms-mcp-url=https://dms.${DNS_PEERING_DOMAIN%%.}/mcp \
    --income-verification-url=https://income-verification.${DNS_PEERING_DOMAIN%%.} \
    --email-mcp-url=https://email.${DNS_PEERING_DOMAIN%%.}/mcp \
    --network-attachment=projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/${PSC_ATTACHMENT} \
    --dns-peering-domain=${DNS_PEERING_DOMAIN} \
    --dns-peering-target-project=${PROJECT_ID} \
    --dns-peering-target-network=${VPC_NAME} \
    --enable-agent-identity \
    --ge-deploy \
    --app-id=${APP_ID} \
    --oauth-client-id=${OAUTH_CLIENT_ID} \
    --agent-name=mortgage-agent

İşaret referansı

İşaret

Varsayılan

Açıklama

--project

$PROJECT_ID

GCP proje kimliği

--dms-mcp-url

(gerekli)

DMS MCP sunucu URL'si

--income-verification-url

(gerekli)

Gelir Doğrulama API'sinin temel URL'si; /mcp otomatik olarak eklenir.

--email-mcp-url

(gerekli)

E-posta MCP sunucusu URL'si

--region

$REGION

GCP bölgesi

--staging-bucket

gs://PROJECT-staging

Hazırlık için GCS paketi

--display-name

Mortgage Assistant Agent

Dağıtılan aracının görünen adı

--update

(isteğe bağlı)

Mevcut bir aracı yerinde güncelleme (tam kaynak adını iletme)

--network-attachment

(isteğe bağlı)

PSC arayüzü için ağ eki (tam yol veya ad)

--dns-peering-domain

(isteğe bağlı)

PSC-I DNS eşlemesi için DNS alanı (nokta ile bitmelidir)

--dns-peering-target-project

(isteğe bağlı)

DNS eşleme için hedef VPC ağını barındıran proje

--dns-peering-target-network

(isteğe bağlı)

DNS eşleme için VPC ağ adı

--enable-agent-identity

false

Aracı başına en az ayrıcalık kimlik bilgilerini etkinleştirme

--ge-deploy

false

Dağıtımdan sonra Gemini Enterprise'da ajanı kaydetme

--app-id

(isteğe bağlı)

Gemini Enterprise motoru kimliği (--ge-deploy ile birlikte gereklidir)

--oauth-client-id

$OAUTH_CLIENT_ID

OAuth2 istemci kimliği (--ge-deploy ile birlikte gereklidir)

--oauth-client-secret

$OAUTH_CLIENT_SECRET

OAuth2 istemci sırrı (--ge-deploy ile gereklidir)

--model

gemini-3.1-flash-lite-preview

Ajanın Gemini model adı

--agent-name

mortgage-agent

Gemini Enterprise yetkilendirmesi ve aracı adı

--ge-deploy-only

(isteğe bağlı)

Yeniden dağıtım yapmadan Gemini Enterprise'a mevcut bir akıl yürütme motoru kaydetme (tam kaynak adını iletme)

İzin verilen kullanıcıları ekleme

Google Cloud Console'u kullanarak bir ADK aracısına izinli kullanıcı eklemek için Kullanıcıları ve izinlerini ekleme veya değiştirme başlıklı makaleyi inceleyin.

9. Temsilcinizi test etme

Aracıyı, GKE Gateway'i ve tüm arka uç hizmetlerini dağıtıp yapılandırdığınıza göre güvenlik politikalarının beklendiği gibi çalıştığını doğrulamak için uçtan uca akışı test edin. Gemini Enterprise arayüzünde "mortgage-agent" ile etkileşime gireceksiniz.

Aracıya erişme

  1. Google Cloud Console'da Gemini Enterprise sayfasına gidin.
  2. Daha önce yapılandırdığınız ve "mortgage-agent"ın kayıtlı olduğu Gemini Enterprise uygulamasını seçin.
  3. Genel Bakış sekmesinde, "Gemini Enterprise web uygulamanız hazır" bölümünde gösterilen URL'ye gidin.
  4. Soldaki Agent Gallery (Agent Galerisi) adlı menüden Agent Tab'i (Agent Sekmesi) seçin.
  5. Artık "Mortgage Assistant Agent" ile sohbet edebilirsiniz.

Test Senaryosu 1: "İdeal Durum" - Kişisel Verileri İfşa Edici Bilgilerin Çıkarılmasıyla Verileri Özetleme

Bu test, aracının Aracı Ağ Geçidi üzerinden arka uç sistemlerine erişebildiğini ve hassas bilgileri çıkarmak için Veri Kaybını Önleme (DLP) politikalarının uygulandığını doğrular.

  1. Mortgage Asistanı Temsilcisi'ne aşağıdaki istemi gönderin:
    I'm reviewing the Sterling family's current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
    
  2. Kamera arkasında neler oluyor?
    • Gemini Enterprise'daki aracı, gerekli araçlara (ör. vergi beyannameleri için Belge Yönetim Sistemi (DMS), Gelir Doğrulama API'si) istekler oluşturur.
    • Model Armor, istek ve yanıt yüklerinde tehdit olup olmadığını inceler.
    • Yapılandırdığınız "İçeriğe Dayalı Yetkilendirme Politikası", özel Veri Kaybını Önleme uzantısını (dlp-content-authz-ext) tetikliyor. Bu uzantı, arka uç sistemlerinden getirilen verileri inceler.
    • Veri Kaybını Önleme hizmeti, vergi iadesi verileri temsilciye ulaşmadan önce bu verilerden kimliği tanımlayabilecek bilgileri (PII) (ör. sosyal güvenlik numaraları) çıkarır.
  3. Beklenen Sonuç: Temsilci, vergi beyanlarının bir özetini ve gelir doğrulama durumunu döndürür. Temsilcinin sağladığı özeti dikkatlice inceleyin. Vergi mükellefi kimlikleri (SSN'ler) gibi hassas bilgilerin yer tutucularla (ör. [REDACTED]) değiştirildiğini görmelisiniz. Bu, DLP politikasının ağ geçidi üzerinden yürütüldüğünü onaylar.

Gözlemlenebilirlik ve Denetleme

Bu testler sırasında, Agent Platform ve ilişkili hizmetler telemetri verileri toplar:

  • Cloud Logging: GKE Gateway, GKE iş yükleri ve diğer hizmetlerden alınan ayrıntılı günlükler; isteklerin, politika değerlendirmelerinin ve sonuçların denetleme izini sağlar.
  • Cloud Trace: Aracılarda ve arka uç hizmetlerinde yapılandırılan OpenTelemetry enstrümantasyonu, Gemini Enterprise'dan GKE ağ geçidine ve arka uç araçlarına kadar tüm çağrı akışını görselleştirmenize olanak tanır. Bu, hata ayıklama ve istek yaşam döngüsünü anlama açısından çok değerlidir.

Oturumlarınızın izlerini görüntüleme:

  1. Google Cloud Console'da Vertex AI Agent Engine sayfasına gidin.
  2. Agent Engine'e gidin. Seçilen projeye ait Agent Engine örnekleri listede görünür. Listeyi belirttiğiniz sütuna göre filtrelemek için Filtre alanını kullanabilirsiniz.
  3. Agent Engine örneğinizin adını tıklayın.
  4. İzler sekmesini tıklayın.
  5. Oturum görünümü veya Kapsam görünümü'nü seçebilirsiniz.
  6. İzleme ayrıntılarını (kapsamlarının yönlendirilmiş döngüsüz grafiği (DAG), girişleri, çıkışları ve meta veri özellikleri dahil) incelemek için bir oturumu veya kapsamı tıklayın.

10. İsteğe bağlı: Apigee ile REST API'lerini MCP'ye dönüştürme

Gelir doğrulama hizmetimiz Model Context Protocol'ü doğal olarak desteklese de birçok kurumsal eski sistem yalnızca RESTful API'ler sağlar. Bu isteğe bağlı adımda, gelir doğrulama hizmetinin REST uç noktasını bir MCP aracına dönüştürmek için Apigee MCP Discovery Proxy'yi kullanacaksınız. Bu sayede Apigee'nin gelişmiş yönetişim, sıklık sınırlama ve güvenlik politikalarını eski araçlarınıza uygulayabilirsiniz.

Daha fazla bilgi için Apigee MCP'ye genel bakış başlıklı makaleyi inceleyin.

Ön koşullar

Devam etmeden önce Apigee API Hub'ı sağladığınızdan ve yapılandırdığınızdan emin olun. Kurulumunu yapmak ve Apigee örneğinizi eklemek için Provision API Hub dokümanındaki adımları uygulayın.

1. adım: Apigee için hizmet eki oluşturun

Apigee'nin GKE'de çalışan dahili hizmetlerinize ulaşmasına izin vermek için bir hizmet eki oluşturmanız gerekir.

  1. Dahili GKE ağ geçidi iletim kuralını arayın:
    export RULE_URI=$(gcloud compute forwarding-rules list \
      --filter="loadBalancingScheme=INTERNAL_MANAGED AND target~targetHttpsProxies" \
      --format="value(selfLink.segment(6), region.basename(), name)" | \
      awk '{print "projects/" $1 "/regions/" $2 "/forwardingRules/" $3}')
    
  2. Hizmet ekini oluşturun:
    gcloud compute service-attachments create internal-gke-gateway-apigee \
        --region=${REGION} \
        --target-service=$RULE_URI \
        --connection-preference=ACCEPT_AUTOMATIC \
        --nat-subnets=gateway-psc-subnet
    

2. adım: Terraform ile Apigee'yi etkinleştirin

Şimdi, Apigee kuruluşunu ve örneğini sağlama amacıyla altyapı yapılandırmanızı güncelleyin.

  1. terraform dizinine gidin:
    cd terraform
    
  2. terraform.tfvars öğesini düzenleyin ve enable_apigee = true öğesini ayarlayın.
  3. Değişiklikleri uygulayın:
    terraform apply
    

3. adım: OpenAPI Specification'ı tanımlayın

Apigee, araçları keşfetmek ve kod dönüştürmek için standart OpenAPI (OAS) tanımlarını kullanır. Aşağıdaki içeriğe sahip income-verification-oas.yaml adlı bir dosya oluşturun:

openapi: 3.0.0
info:
  title: Income Verification API
  description: Verify applicant income through third-party employer records.
  version: 1.0.0
servers:
  -   url: https://income-verification.internal.${DNS_PEERING_DOMAIN%%.}/api
paths:
  /income-verification/verify:
    post:
      summary: Verify applicant income
      operationId: verifyApplicant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                last_name:
                  type: string
      responses:
        '200':
          description: Successful verification
          content:
            application/json:
              schema:
                type: object

4. adım: Apigee MCP Discovery Proxy'yi dağıtın

MCP Discovery Proxy, MCP sunucusu olarak işlev gören özel bir Apigee proxy'sidir.

  1. Apigee kullanıcı arayüzünde Geliştir > API Proxy'leri'ne gidin.
  2. Yeni Oluştur'u tıklayın ve MCP Discovery Proxy'yi seçin.
  3. Proxy'yi adlandırın income-verification-discovery.
  4. OpenAPI Spec (OpenAPI Spesifikasyonu) bölümünde, oluşturduğunuz income-verification-oas.yaml dosyasını yükleyin.
  5. Ortam Grubu'nu, dahili ağ geçidinizin erişilebilir olduğu grup olarak ayarlayın.
  6. Dağıt'ı tıklayın.

(İsteğe bağlı) Güvenlik politikası ekleme

Proxy'nizi dağıtmadan veya paylaşmadan önce güvenliğini sağlamanız gerekir. OAuth jetonları veya API anahtarları gibi güvenlik şartlarını zorunlu kılmak için politikalar ekleyebilirsiniz. Güvenlik politikası ekleme talimatları için API'leri güvenli hâle getirme ile ilgili Apigee belgelerine bakın.

5. adım: Transcoded Tool Access'i doğrulayın

Apigee, dağıtıldıktan sonra POST /verify uç noktasını otomatik olarak verifyApplicant MCP aracına dönüştürür.

  1. Apigee MCP uç noktası üzerinden kullanılabilen araçları listeleyin:
    curl -X POST https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/list",
        "params": {}
      }'
    
  2. Yanıtınızda, REST spesifikasyonunuzdan dönüştürülmüş verifyApplicant aracını görmeniz gerekir. Artık bu aracı Apigee üzerinden çağırabilirsiniz. Apigee, yapılandırdığınız güvenlik politikalarını uygularken temel REST hizmetine çeviri işlemini gerçekleştirir.

6. adım: Mortgage Agent'ı Apigee'yi kullanacak şekilde güncelleyin

Apigee, REST API'nizi MCP uyumlu bir araca başarıyla dönüştürdüğüne göre artık aracının dağıtım yapılandırmasını güncellemeniz gerekir. Aracı Apigee uç noktasına yönlendirerek tüm gelir doğrulama istekleri artık Apigee'nin kurumsal düzeydeki güvenlik, günlük kaydı ve trafik yönetiminden yararlanabilir.

  1. Apigee MCP URL'nizi belirleyin: Uç noktanız şu kalıba uymalıdır: https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp.
  2. Dağıtım komut dosyasını yeniden çalıştırın: Yeni --income-verification-url ile birlikte --update işaretini kullanın. Bu işlem, tam silme işlemi gerektirmeden Agent Engine'deki mevcut aracıyı günceller.
    cd src/mortgage-agent
    
    # Update the agent to route income verification through Apigee
    uv run python deploy_agent.py \
        --project=${PROJECT_ID} \
        --update \
        --agent-name=mortgage-agent \
        --dms-mcp-url=https://dms.${DNS_PEERING_DOMAIN%%.}/mcp \
        --income-verification-url=https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp \
        --email-mcp-url=https://email.${DNS_PEERING_DOMAIN%%.}/mcp \
        --network-attachment=projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/${PSC_ATTACHMENT} \
        --dns-peering-domain=${DNS_PEERING_DOMAIN} \
        --dns-peering-target-project=${PROJECT_ID} \
        --dns-peering-target-network=${VPC_NAME} \
        --ge-deploy \
        --app-id=${APP_ID} \
        --oauth-client-id=${OAUTH_CLIENT_ID}
    
  1. Değişikliği doğrulayın: Gemini Enterprise arayüzüne dönün ve ajandan bir başvuru sahibinin gelirini doğrulamasını isteyin.
    "Can you verify the joint income for the Sterlings using the verification service?"
    
    Apigee Debug sekmesinde, GKE ağ geçidinden gelen JSON-RPC isteğinin arka uç GKE hizmetinize yönelik standart bir REST POST isteğine dönüştürüldüğünü görmeniz gerekir.

11. Temizleme

Bu codelab'de oluşturulan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız bunları tamamladığınızda silin.

  1. Manuel olarak oluşturulan hizmet ekini silin:
    gcloud compute service-attachments delete internal-gke-gateway \
        --region=${REGION} --quiet
    
  2. terraform dizinine gidin ve tüm kaynakları yok edin:
    cd terraform
    terraform destroy
    
  3. İsteğe bağlı olarak Google Cloud projesini tamamen silin:
    gcloud projects delete ${PROJECT_ID}
    

12. Tebrikler

Bu codelab'i tamamladınız ve bulutlar arası ajan tabanlı kurumsal dağıtımların güvenliğini nasıl sağlayacağınızı öğrendiniz.

İşlediğiniz konular

  • OpenTelemetry enstrümantasyonu ile Agent Engine'e bir ADK ipotek asistanı aracısı dağıtıldı.
  • Dahili bir ağ geçidinin arkasında GKE'ye dağıtılan arka uç MCP sunucuları
  • PSC arayüzü ve DNS eşlemesi kullanarak Agent Engine'i bir proje VPC'sine bağlama
  • Veri Kaybını Önleme ile düzeltme ve MCP yetkilendirmesi ile yönetilen aracı çıkışı için GKE ağ geçidi yapılandırıldı
  • İstem ve yanıt taraması için Model Armor ile uygulanan yapay zeka koruma önlemleri
  • İsteğe bağlı olarak, Apigee MCP Discovery Proxy'yi kullanarak REST API'lerini MCP'ye dönüştürdüyseniz

Sonraki adımlar