نحوه استفاده از پروکسی Identity Aware (IAP) با یک کلیک با Cloud Run

۱. مقدمه

نمای کلی

این کدلب به شما نحوه فعال کردن پروکسی آگاه از هویت از Cloud Run و ایمن‌سازی ترافیک محدود شده برای سرویس Cloud Run با مسیریابی به IAP برای احراز هویت را به طور کامل آموزش می‌دهد. با فعال کردن IAP از Cloud Run، می‌توانید ترافیک را با یک کلیک از تمام مسیرهای ورودی، از جمله URL های پیش‌فرض run.app و متعادل‌کننده‌های بار، مسیریابی کنید.

در این آزمایشگاه کد، سرویس hello container را پیاده‌سازی خواهید کرد. فقط کاربرانی که با استفاده از IAP در لیست مجاز قرار گرفته‌اند، به این سرویس دسترسی دارند.

برای سایر محدودیت‌های شناخته‌شده، لطفاً مستندات IAP در Cloud Run را بررسی کنید.

آنچه یاد خواهید گرفت

  • نحوه فعال کردن IAP با یک کلیک برای Cloud Run
  • نحوه اعطای دسترسی به هویت کاربر به سرویس Cloud Run از طریق IAP

۲. قبل از شروع

فعال کردن APIها

قبل از اینکه بتوانید از این codelab استفاده کنید، API های زیر را با اجرای دستور زیر فعال کنید:

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    iap.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com

۳. ایجاد متغیرهای محیطی

متغیرهای محیطی که در طول این codelab استفاده خواهند شد را تنظیم کنید.

export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>

export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")

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

با اجرای این دستور، حساب کاربری سرویس (که به عنوان هویت سرویس Cloud Run استفاده می‌شود) را ایجاد کنید:

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="IAP codelab CR identity"

تصویر کانتینر hello را با فعال کردن IAP مستقر کنید.

gcloud beta run deploy ${SERVICE_NAME} \
    --image=us-docker.pkg.dev/cloudrun/container/hello \
    --region=${REGION} \
    --service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
    --no-allow-unauthenticated \
    --iap

توجه: اگر اکنون سعی کنید به برنامه دسترسی پیدا کنید، صفحه خطای You don't have access » را مشاهده خواهید کرد. در مرحله بعد، از طریق IAP به کاربر دسترسی می‌دهید.

۵. پیکربندی کنترل دسترسی IAP

عامل سرویس IAP را ایجاد کنید.

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

نقش Cloud Run Invoker را به حساب سرویس IAP اختصاص دهید

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
  --role="roles/run.invoker"

با اجازه دادن به کاربران یا گروه‌های خاص از طریق IAP، به کاربر دسترسی بدهید

EMAIL_ADDRESS=<YOUR_EMAIL>

gcloud beta iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor \
    --condition=None

نکته: در صورت تمایل می‌توانید از group:your-group@example.com نیز در پارامتر member استفاده کنید.

۶. برنامه را آزمایش کنید

تأیید دسترسی به برنامه

آدرس اینترنتی (URL) سرویس Cloud Run نمونه را دریافت کنید.

gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'

URL را در مرورگر خود باز کنید و باید عبارت «در حال اجرا است! تبریک می‌گویم، شما با موفقیت یک تصویر کانتینر را در Cloud Run مستقر کردید» را ببینید.

تأیید حذف دسترسی به برنامه

با اجرای دستور زیر می‌توانید دسترسی خود را به برنامه حذف کنید.

gcloud beta iap web remove-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor

چند دقیقه صبر کنید تا سیاست IAM اعمال شود. حالا سعی کنید URL را در مرورگر خود باز کنید، صفحه خطای You don't have access را مشاهده خواهید کرد.

۷. تبریک می‌گویم!

تبریک می‌گویم که آزمایشگاه کد را تمام کردید!

توصیه می‌کنیم مستندات Cloud Run IAP را بررسی کنید.

آنچه ما پوشش داده‌ایم

  • نحوه فعال کردن IAP با یک کلیک برای Cloud Run
  • نحوه اعطای دسترسی به هویت کاربر به سرویس Cloud Run از طریق IAP

۸. تمیز کردن

برای جلوگیری از هزینه‌های ناخواسته، به عنوان مثال، اگر سرویس‌های Cloud Run به طور ناخواسته بیشتر از تخصیص فراخوانی ماهانه Cloud Run شما در سطح رایگان فراخوانی شوند، می‌توانید iap-example سرویس Cloud Run را که در مرحله 6 ایجاد کرده‌اید، حذف کنید.

To delete the Cloud Run service, go to the Cloud Run Cloud Console at https://console.cloud.google.com/run and delete the iap-example service.

برای حذف کل پروژه، به مدیریت منابع بروید، پروژه خود را انتخاب کنید و گزینه حذف را انتخاب کنید. اگر پروژه را حذف کنید، باید پروژه‌ها را در Cloud SDK خود تغییر دهید. می‌توانید با اجرای gcloud projects list لیست تمام پروژه‌های موجود را مشاهده کنید.