استقرار عامل و «دروازه عامل» با «کنترل‌های سرویس‌های VPC»

۱. مقدمه

این codelab شما را در پیکربندی محیط Google Cloud برای راه‌اندازی عامل و «دروازه عامل» با محیط‌های VPC Service Controls راهنمایی می‌کند. محیطی برای «کنترل‌های سرویس VPC» ایجاد می‌کنید، شبکه و ساناد را پیکربندی می‌کنید، «دروازه عامل» را با Identity-Aware Proxy (IAP) برای صدور مجوز درخواست مستقر می‌کنید، و عامل را به‌طور ایمن آزمایش می‌کنید.

آنچه خواهید ساخت

در این codelab، معماری امن Google Cloud را برای پلاتفرم Gemini Enterprise Agent و درگاه عامل می‌سازید که کارهای زیر را انجام می‌دهد:

آنچه خواهید آموخت

  • نحوه فعال کردن Google Cloud APIs موردنیاز برای «پلاتفرم عامل» و امنیت.
  • نحوه پیکربندی محیط «کنترل‌های خدمات VPC» و قوانین دسترسی ورودی.
  • نحوه راه‌اندازی اتصال‌پذیری شبکه خصوصی و گزارش‌های «ساناد خصوصی».
  • نحوه ایجاد «درگاه عامل» و الگوهای اتصال‌پذیری عامل.
  • نحوه پیکربندی افزونه‌ها و خط‌مشی‌های مجوز درخواست IAP.
  • نحوه استقرار و آزمایش ایمن عامل «موتور عامل».

آنچه نیاز خواهید داشت

  • ‫Google Cloud CLI نصب شده باشد و به جدیدترین نسخه به‌روز شده باشد.
  • ‫Python 3 در ایستگاه کاری شما نصب شده باشد.
  • ‫Git در ایستگاه کاری شما نصب شده باشد.
  • سازمان Google Cloud فعال و اجازه‌های حساب صورت‌حساب.

۲. پیش‌نیازها

این بخش الزامات اولیه ابزار خط فرمان و پیکربندی محیط موردنیاز قبل‌از اجرای اسکریپت‌های راه‌اندازی را شرح می‌دهد.

  1. تأیید کنید که Google Cloud CLI نصب شده و به جدیدترین نسخه به‌روز شده است، سپس با حساب Google خود اصالت‌سنجی کنید. عناصر Google Cloud CLI را به‌روز کنید تا مطمئن شوید از جدیدترین پشتیبانی ویژگی برای «خدمات شبکه» و «کنترل‌های سرویس VPC» برخوردار هستید.
gcloud components update
gcloud auth login
gcloud config set account USER_EMAIL
  1. برای پیکربندی و استقرار چارچوب عامل سفارشی، تأیید کنید که Python 3 نصب شده باشد. برای دریافت دستورالعمل، به نصب پیمانه‌های Python مراجعه کنید:
python3 --version
  1. مطمئن شوید که Git نصب شده باشد تا مخزن نمونه حاوی کد راه‌اندازی و الگوهای پیکربندی را شبیه‌سازی کنید. برای دستورالعمل‌ها، نصب Git را ببینید.

۳. پیکربندی پروژه Google Cloud

ایجاد یک پروژه مجزا در سازمانتان تضمین می‌کند که همه منابع، شبکه‌ها، و اجازه‌های استفاده‌شده در این آزمایش کدپله‌ای محصور و قابل‌مدیریت باقی بمانند. درباره ایجاد و مدیریت پروژه‌ها بیشتر بدانید.

پروژه Google Cloud جدیدی را در سازمانتان مقداردهی اولیه کنید تا منابع این راه‌اندازی را میزبانی کند. می‌توانید از پروژه خودتان نیز استفاده کنید:

export PROJ_ID="YOUR_PROJECT_ID"
gcloud projects create ${PROJ_ID} --organization=YOUR_ORG_ID
gcloud config set project $PROJ_ID
gcloud auth application-default set-quota-project $PROJ_ID

با ورود به سیستم، اعتبارنامه‌های پیش‌فرض برنامه را دریافت کنید:

gcloud auth application-default login

پیکربندی‌تان را درستی‌سنجی کنید:

gcloud config list

فعال کردن صورت‌حساب

برای فعال کردن استفاده از سرویس، حساب صورت‌حساب فعالی را به پروژه جدیداً ایجادشده پیوند دهید.

فعال کردن صورت‌حساب پیش‌نیاز مصرف سهمیه API و آماده‌سازی زیرساخت Google Cloud مثل «دروازه‌های عامل»، «ابر خصوصی مجازی»، و گره‌های محاسباتی است. برای جزئیات مربوط به پیکربندی‌های صورت‌حساب، به مستندات صورت‌حساب Google Cloud مراجعه کنید.

gcloud billing accounts list
# Copy the billing account to assign to your GCP project
gcloud billing projects link $PROJ_ID --billing-account=BILLING_ACCOUNT_ID

۴. فعال کردن سرویس‌ها

همه «میاناهای برنامه‌سازی کاربردی Google Cloud» موردنیاز را برای ویژگی‌های «عامل»، «دروازه عامل»، شبکه، امنیت، و قابلیت مشاهده فعال کنید.

فعال‌سازی میانای برنامه‌سازی کاربردی، سرویس‌های ابری زیرینه را برای مدیریت منابع، قابلیت مشاهده، و قابلیت‌های شبکه‌سازی موردنیاز برای اتصال ایمن عامل نمایان می‌کند. در اسناد API استفاده از سرویس اطلاعات بیشتری کسب کنید.

gcloud services enable \
  agentregistry.googleapis.com \
  aiplatform.googleapis.com \
  apphub.googleapis.com \
  apptopology.googleapis.com \
  cloudapiregistry.googleapis.com \
  cloudtrace.googleapis.com \
  compute.googleapis.com \
  dataform.googleapis.com \
  iam.googleapis.com \
  iap.googleapis.com \
  logging.googleapis.com \
  modelarmor.googleapis.com \
  monitoring.googleapis.com \
  networksecurity.googleapis.com \
  networkservices.googleapis.com \
  notebooks.googleapis.com \
  observability.googleapis.com \
  securitycenter.googleapis.com
gcloud services enable \
  saasservicemgmt.googleapis.com \
  storage.googleapis.com \
  telemetry.googleapis.com \
  texttospeech.googleapis.com \
  run.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  dns.googleapis.com \
  accesscontextmanager.googleapis.com \
  discoveryengine.googleapis.com \
  agentidentity.googleapis.com \
  agentidentitycredentials.googleapis.com

۵. صادر کردن متغیرهای محیط

متغیرهای محیطی قابل‌استفاده مجدد را برای منطقه، شناسه پروژه، شماره پروژه، شناسه سازمان، و هویت کاربر تعریف کنید. تنظیم متغیرهای پوسته دستورات پیکربندی منبع را در مراحل استاندارد می‌کند و خطاهای جایگزینی دستی را درطول اجرای دستورگان به حداقل می‌رساند.

export REGION="us-central1"
export PROJ_ID=$(gcloud config list --format="value(core.project)")
export PROJ_NO=$(gcloud projects describe ${PROJ_ID} --format="value(projectNumber)")
export ORG_ID=$(gcloud projects get-ancestors ${PROJ_ID} --format="value(id)" | tail -n 1)
export USER_IDENTITY=$(gcloud config get-value account)

‫۶. ایجاد «محدوده کنترل‌های سرویس‌های VPC»

محیط سرویس VPC Service Controls ایجاد کنید تا منابع پروژه را جدا کنید و به جلوگیری از برون‌ریزی داده‌ها کمک کنید. برای اطلاعات بیشتر، نمای کلی کنترل‌های سرویس‌های VPC را ببینید.

واکشی خط‌مشی دسترسی

شناسه خط‌مشی «مدیر زمینه دسترسی» منسوب به سازمانتان را بازیابی کنید. خط‌مشی‌های Access Context Manager مرز سازمانی را تعریف می‌کنند که محیط‌های VPC Service Controls به آن پیوست و اعمال می‌شود.

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 Service Controls جلوگیری شود. بااین‌حال، برای کمک به شما در عیب‌یابی درطول آزمایش، VPC Service Controls گزارش‌های رد دسترسی دقیق و ابزارهای هوش خط‌مشی ارائه می‌دهد.

عیب‌یابی کردن رد شدن کنترل‌های سرویس‌های VPC

درطول آزمایش، به نکات عیب‌یابی زیر مراجعه کنید:

  1. برای پیگیری آخرین نقض‌ها در محیط خود، داشبورد نقض را فعال کنید.
  2. «گزارش‌های ممیزی Cloud» را برای گزارش‌های رد دسترسی (۴۰۳) «کنترل‌های سرویس‌های VPC» پایش کنید.
  3. بااستفاده از شناسه یکتا یا کد نقض در «تحلیلگر نقض»، نقض‌ها را تشخیص دهید.
  4. برای راهنمایی گام‌به‌گام دقیق، ویدیو عیب‌یابی «کنترل‌های خدمات VPC» را تماشا کنید.

‫۷. راه‌اندازی شبکه

تنظیمات شبکه VPC را پیکربندی کنید تا از ارتباط خصوصی با سرویس‌ها و Google APIs پشتیبانی کند. پیکربندی صحیح شبکه تضمین می‌کند که ترافیک شبکه بین عامل‌ها، دروازه‌ها، و Google Cloud APIs در شبکه‌های داخلی خصوصی باقی بماند. برای الگوهای دقیق شبکه‌سازی، اسناد Google Cloud VPC را بررسی کنید.

فعال کردن «دسترسی خصوصی Google»

«دسترسی خصوصی به Google» را در زیرشبکه پیش‌فرض فعال کنید تا نمونه‌های ماشین مجازی و حجم‌های کاری داخلی بتوانند بااستفاده از نشانی‌های IP داخلی به‌جای نشانی‌های IP عمومی به Google APIs دسترسی پیدا کنند.

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

ایجاد پیوست شبکه PSC

پیوست شبکه «اتصال سرویس خصوصی» (PSC) برای اتصال «درگاه عامل» ایجاد کنید. پیوست‌های شبکه میاناهای Private Service Connect (PSC) را ارائه می‌دهند و ارتباط امن بین‌شبکه‌ای VPC را بین سرویس «درگاه عامل» و زیرشبکه داخلی شما تسهیل می‌کنند.

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

منطقه خصوصی Cloud DNS را پیکربندی کنید تا ترافیک googleapis.com را ازطریق محدوده‌های IP خصوصی مسیریابی کند. مناطق ساناد خصوصی جستجوهای دامنه عمومی را برای 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}

یکی از گزینه‌های دامنه زیر را برای مسیریابی خصوصی انتخاب کنید (فقط دستورات زیر «گزینه ۱» یا «گزینه ۲» را قبل‌از اجرای تراکنش اجرا کنید) — در گزینه‌های پیکربندی «دسترسی خصوصی به 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}

‫۸. ایجاد «درگاه عامل»

«دروازه عامل» را آماده کنید و الگوهای اتصال و قوانین مسیریابی آن را تعریف کنید. «دروازه عامل» به‌عنوان پراکسی متمرکز برای مدیریت ترافیک عامل، خط‌مشی‌های خروجی، مدیریت پروتکل، و شناسایی سرویس ایمن عمل می‌کند. برای مرجع‌های معماری، به نمای کلی درگاه عامل مراجعه کنید.

نمودار معماری که نشان می‌دهد «عامل» درخواست‌ها را ازطریق «دروازه عامل»، مجوز درخواست IAP، و پیوست شبکه PSC در محیط VPC Service Controls مسیریابی می‌کند.

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}

‫۹. ایجاد مجوز ازطریق IAP

خط‌مشی‌های مجوز درخواست «پراکسی آگاه از هویت» (IAP) و افزونه‌های سرویس را پیکربندی کنید تا پیش‌از اعطای دسترسی به «درگاه عامل»، اطلاعات اعتباری درخواست را درستی‌سنجی کنید. برای اطلاعات بیشتر، مستندات IAP را ببینید.

جریان‌نمایی که نشان می‌دهد چگونه «دروازه عامل» بااستفاده از «خط‌مشی Authz امنیت شبکه» و «افزونه سرویس Authz»، درخواست صدور مجوز را به «پراکسی آگاه از هویت» (IAP) واگذار می‌کند.

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

ایجاد افزونه AuthZ

cat > ${AUTHZ_EXT}.yaml << EOF
name: ${AUTHZ_EXT}
service: iap.googleapis.com
failOpen: false
timeout: 1s
metadata:
  iapPolicyVersion: "V2"
EOF
gcloud service-extensions authz-extensions import ${AUTHZ_EXT} \
    --source=${AUTHZ_EXT}.yaml \
    --location=${REGION}

ایجاد خط‌مشی AuthZ و ملزم کردن آن به «دروازه عامل»

cat > ${AUTHZ_POLICY}.yaml << EOF
name: ${AUTHZ_POLICY}
target:
  resources:
    - "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
      - "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AUTHZ_EXT}"
EOF
gcloud network-security authz-policies import ${AUTHZ_POLICY} \
    --source=${AUTHZ_POLICY}.yaml \
    --location=${REGION}

این codelab تضمین می‌کند که به‌طور پیش‌فرض با هیچ‌گونه رد دسترسی به IAP مواجه نخواهید شد. بااین‌حال، برای کمک به آزمایش شما، «دروازه عامل» قابلیت مشاهده‌پذیری دقیقی برای رد کردن دسترسی ارائه می‌دهد.

عیب‌یابی و نظارت بر رد شدن مجوزهای IAP

  1. ‫Log Analytics را در _Default logging bucket فعال کنید:
gcloud logging buckets update _Default --location=global --enable-analytics --async
  1. داشبورد قابلیت مشاهده «درگاه عامل» را باز کنید:
  2. در کنسول Google Cloud، به صفحه درگاه نماینده بروید.
  3. روی نام درگاهتان (برای مثال، gateway-xyz) کلیک کنید.
  4. روی زبانه قابلیت مشاهده کلیک کنید.
  5. داشبوردهای «عدم موفقیت در صدور مجوز» و «رد شدن درخواست با کد ۴۰۳» را مرور کنید.

‫۱۰. ایجاد عامل موتور عامل

ایجاد کردن «جام انبارش»

در منطقه هدف خود، سطل Cloud Storage ایجاد کنید تا مصنوعات آماده‌سازی موقت، وابستگی‌ها، و پیکربندی‌های استقرار را درطول مقداردهی اولیه زمان اجرا ذخیره کنید.

#Staging bucket name needs to be globally unique
export STAGING_BUCKET="agent-temp-bucket-${PROJ_NO}-${USER_IDENTITY}"
gcloud storage buckets create gs://${STAGING_BUCKET} --location=${REGION}

فعال کردن محیط مجازی Python

python3 -m venv .venv
source .venv/bin/activate

بارگیری کد عامل

git clone https://github.com/gpratikab/gcp-vpcsc-agent.git
cd gcp-vpcsc-agent

نصب وابستگی‌ها

python3 -m pip install --upgrade -r requirements.txt

اعطای نقش‌های IAM به نماینده سرویس «پلاتفرم نماینده»

gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
  --role="roles/agentgateway.serviceAgent"
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
  --role="roles/ml.serviceAgent"
gcloud projects add-iam-policy-binding ${PROJ_ID} \
  --member="serviceAccount:service-${PROJ_NO}@gcp-sa-aiplatform.iam.gserviceaccount.com" \
  --role="roles/networkservices.viewer"

استقرار عامل

python3 deploy_gcp_agent.py create

شناسه عامل چاپ‌شده در برونداد دستور قبلی را به‌عنوان متغیر محیط صادر کنید:

#Paste identity of your Agent, it will be printed as the output of the previous command
export AGENT_IDENTITY="principal://PRINCIPAL_ID"
echo $AGENT_IDENTITY

‫۱۱. مجاز کردن خروجی نماینده ازطریق درگاه

به عامل جدیداً ایجادشده اجازه دهید ترافیک خروجی را به googleapis.com ارسال کند.

توجه: می‌توانید بااستفاده از قابلیت مشاهده «درگاه عامل»، نقاط پایانی را به‌صورت انتخابی در فهرست مجاز قرار دهید. برای ساده‌تر شدن، این codelab اجازه دسترسی به همه «میاناهای برنامه‌سازی کاربردی» را می‌دهد.

پیکربندی قوانین خط‌مشی خروجی IAM صریح به عامل اجازه می‌دهد تا تماس‌های API را ازطریق «دروازه عامل» و پراکسی 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

‫۱۲. آزمایش عامل

عملکرد عامل اعتبارسنجی در کنسول Google Cloud تأیید می‌کند که ارتباط سرتاسر، خط‌مشی‌های IAM، و مرزهای «کنترل‌های سرویس VPC» به‌درستی کار می‌کنند. اکنون آماده‌اید تا عامل را آزمایش کنید:

  1. در کنسول Google Cloud، به صفحه استقرار عامل بروید.
  2. عامل مستقرشده‌تان (gcp_agent_...) را انتخاب کنید.
  3. برگه زمین بازی را باز کنید.
  4. در فیلد پیام‌واره، این را وارد کنید: List storage buckets in the current project.
  5. تأیید کنید که کارگزار فهرست دسته‌ها را ازطریق «دروازه کارگزار» خصوصی باموفقیت برمی‌گرداند.
  6. تأیید کنید که نماینده به‌دلیل رد شدن دسترسی نمی‌تواند از پروژه دیگری دسته‌ها را بازیابی کند. می‌توانید رد شدن را در «گزارش‌های ممیزی Cloud» یا داشبورد نقض VPC Service Controls بازرسی کنید.

‫۱۳. مرتب‌سازی

برای اینکه هزینه منابع استفاده‌شده در این کدآزمایی به حساب Google Cloud شما اضافه نشود، پروژه‌ای را که ایجاد کرده‌اید حذف کنید:

gcloud projects delete ${PROJ_ID}

‫۱۴. تبریک می‌گوییم

تبریک! «عامل» و «دروازه عامل» را باموفقیت در محیط امن VPC Service Controls در Google Cloud پیکربندی کرده‌اید.

بعد چه باید کرد؟

  • قوانین ورودی و خروجی دقیق را در «کنترل‌های سرویس‌های VPC» کاوش کنید.
  • خط‌مشی‌های دسترسی و معنایی را بااستفاده از «درگاه عامل» پیکربندی کنید.
  • برای فیلتر کردن ایمنی و امنیت پیشرفته، Model Armor را ادغام کنید.

اسناد مرجع