درباره این codelab
1. مقدمه
نمای کلی
این نرم افزار کد به شما آموزش می دهد که چگونه پروکسی Identity-Aware را از Cloud Run فعال کنید و با مسیریابی به IAP برای احراز هویت، ترافیکی را که برای سرویس Cloud Run محدود می شود، ایمن کنید. با فعال کردن IAP از Cloud Run، میتوانید با یک کلیک ترافیک را از تمام مسیرهای ورودی، از جمله URLهای پیشفرض run.app و متعادلکنندههای بار، هدایت کنید.
در این کد لبه، شما سرویس hello container را اجرا می کنید. فقط کاربرانی که با استفاده از IAP در لیست مجاز قرار گرفته اند به این سرویس دسترسی دارند.
برای سایر محدودیتهای شناخته شده، لطفاً مستندات IAP در Cloud Run را بررسی کنید.
چیزی که یاد خواهید گرفت
- نحوه فعال کردن IAP با یک کلیک برای Cloud Run
- نحوه اعطای دسترسی هویت کاربر به سرویس Cloud Run از طریق IAP
2. قبل از شروع
API ها را فعال کنید
قبل از اینکه بتوانید از این کد لبه استفاده کنید، API های زیر را با اجرا فعال کنید:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. ایجاد متغیرهای محیطی
متغیرهای محیطی را تنظیم کنید که در سراسر این کد لبه مورد استفاده قرار خواهند گرفت
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)")
4. یک سرویس با فعال بودن 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 به کاربر اجازه دسترسی می دهید.
5. کنترل دسترسی 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 در پارامتر عضو استفاده کنید.
6. برنامه را تست کنید
دسترسی به برنامه را تأیید کنید
نشانی اینترنتی نمونه سرویس 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
را مشاهده خواهید کرد.
7. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم!
توصیه می کنیم اسناد Cloud Run IAP را مرور کنید.
آنچه را پوشش داده ایم
- نحوه فعال کردن IAP با یک کلیک برای Cloud Run
- نحوه اعطای دسترسی هویت کاربر به سرویس Cloud Run از طریق IAP
8. تمیز کردن
برای جلوگیری از هزینههای غیرعمدی، به عنوان مثال، اگر خدمات Cloud Run سهواً بیشتر از تخصیص فراخوانی ماهانه Cloud Run شما در ردیف رایگان فراخوانی میشوند، میتوانید سرویس Cloud Run iap-example
را که در مرحله 6 ایجاد کردهاید حذف کنید.
برای حذف سرویس Cloud Run، به کنسول Cloud Run Cloud در https://console.cloud.google.com/run بروید و سرویس iap-example
حذف کنید.
برای حذف کل پروژه، به مدیریت منابع بروید، پروژه خود را انتخاب کنید و حذف را انتخاب کنید. اگر پروژه را حذف کنید، باید پروژه ها را در Cloud SDK خود تغییر دهید. با اجرای gcloud projects list
می توانید لیست تمام پروژه های موجود را مشاهده کنید.