۱. مقدمه
کنترلهای سرویس VPC (VPC-SC) یک کنترل امنیتی در سطح سازمان در Google Cloud است که به مشتریان سازمانی امکان میدهد خطرات استخراج دادهها را کاهش دهند. کنترلهای سرویس VPC با فراهم کردن امکان محدود کردن دسترسی به IPهای مجاز، زمینه کلاینت و پارامترهای دستگاه هنگام اتصال به سرویسهای چندمستاجری از طریق اینترنت و سایر سرویسها، دسترسی به سبک Zero-Trust را به سرویسهای چندمستاجری ارائه میدهد تا از خسارات عمدی و غیرعمدی جلوگیری شود. میتوانید از کنترلهای سرویس VPC برای ایجاد محیطهایی استفاده کنید که از منابع و دادههای سرویسهایی که صریحاً مشخص میکنید، محافظت میکنند.
اهداف این آموزش عبارتند از:
- اصول اولیه کنترلهای سرویس VPC را درک کنید
- ایجاد محیط سرویس VPC
- محافظت از یک پروژه با کنترلهای سرویس VPC
- عیبیابی نقض ورود کنترلهای سرویس VPC
۲. تنظیمات و الزامات
برای این آموزش، به پیشنیازهای زیر نیاز داریم:
- یک سازمان GCP.
- یک پوشه در زیر شاخهی «سازمان».
- دو پروژه GCP در یک سازمان که در یک پوشه قرار دارند.
- مجوزهای مورد نیاز در سطح سازمان
- حساب صورتحساب برای هر دو پروژه.

تنظیم منابع
- در کنسول گوگل کلود ، یک پوشه در بخش سازمان (Organization) و دو پروژه جدید ایجاد کنید. ( میتوانید از پروژههای موجود دوباره استفاده کنید ).
(اگر از قبل حساب Google Workspace/Cloud Identity ندارید، باید یکی تهیه کنید زیرا برای این آموزش به یک سازمان نیاز دارید.)
- تأیید کنید که مجوزهای صحیح برای این آموزش را در سطح سازمانی دارید.
- نقشهای IAM برای پوشهها
- مجوزها و نقشها برای پروژهها
- مجوزها و نقشهای مورد نیاز برای پیکربندی کنترلهای سرویس VPC
- مجوزها و نقشهای مورد نیاز برای مدیریت موتور محاسبات
- مطمئن شوید که هر دو پروژه در زیر پوشه موجود هستند، زیرا باید یک سیاست محدود شده در سطح پوشه ایجاد کنیم. درباره انتقال یک پروژه به یک پوشه اطلاعات کسب کنید.

هزینه
برای استفاده از منابع/APIهای ابری، باید امکان پرداخت صورتحساب را در کنسول ابری فعال کنید. اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
تنها منبعی که هزینه ایجاد میکند، نمونه ماشین مجازی است. هزینه تخمینی را میتوان در ماشین حساب قیمتگذاری یافت .
۳. ایجاد یک محیط
در این آزمایشگاه مراحل زیر را انجام خواهیم داد:
- در کنسول گوگل، سازمان و کنترلهای سرویس VPC دسترسی خود را انتخاب کنید. لطفاً مطمئن شوید که در سطح سازمان هستید.

- برای ایجاد یک سیاست دسترسی جدید که در پوشه "Codelab" قرار دارد، روی "مدیریت سیاستها" کلیک کنید.

- یک Perimeter جدید در حالت forcedd ایجاد کنید . نام آن را برای این آموزش "SuperProtection" قرار دهید.
- هنگام ایجاد محیط، پروژهای را که قرار است اجرا شود، به عنوان ProjectZ انتخاب کنید.
- نوع محیط را "معمولی" انتخاب کنید.
- در پنجرهی «مشخص کردن سرویسها برای محدود کردن »، سرویسی را که میخواهید محدود کنید، «موتور محاسبات» انتخاب کنید.
تنظیمات پیرامونی باید به این شکل باشد:

۴. تأیید کنید که حریم اطراف رعایت شده است.
- با مراجعه به صفحه اصلی VM Instances به ProjectX دسترسی پیدا کنید و تأیید کنید که آیا میتوانید به Compute Engine API دسترسی داشته باشید یا خیر. باید بتوانید این کار را انجام دهید زیرا projectX توسط محیط VPC SC ایجاد شده محافظت نمیشود.
- به ProjectZ دسترسی پیدا کنید و بررسی کنید که آیا میتوانید به Compute Engine دسترسی پیدا کنید یا خیر. میتوانید ببینید که این درخواست توسط VPC Service Controls ممنوع شده است زیرا محیط سرویس SuperProtection از ProjectZ و رابط برنامهنویسی کاربردی Compute Engine محافظت میکند.

۵. عیبیابی رد درخواست
اول باید مشخص کنیم که مشکل دقیقاً چیست تا بتوانیم راه حلی برای آن پیدا کنیم.
- گزارشهای کنترلهای سرویس VPC شامل جزئیاتی در مورد درخواستها به منابع محافظتشده و دلیل رد درخواست توسط کنترلهای سرویس VPC است. بیایید با استفاده از کوئری زیر در Logs Explorer ، شناسه منحصر به فرد کنترلهای سرویس VPC را در گزارشهای حسابرسی ProjectZ پیدا کنیم:
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
این دستور تمام گزارشهای حسابرسی VPC Service Controls را نشان میدهد. ما به دنبال آخرین گزارش خطا خواهیم بود.
- روی سربرگ VPC Service Controls کلیک کنید و گزینه "Troubleshoot denial" را انتخاب کنید که VPC Service Controls Troubleshooter را باز خواهد کرد.
این API در یک رابط کاربری کاربرپسند، دلیل تخلف و اینکه آیا تخلف ورودی بوده یا خروجی، و موارد مفید دیگر را به ما نشان میدهد.
برای این تمرین به دنبال موارد زیر خواهیم بود:
"principalEmail": "user@domain"
"callerIp": "PUBLIC_IP_ADDRESS"
"serviceName": "compute.googleapis.com"
"servicePerimeterName":
"accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection
"ingressViolations": [
{
"targetResource": "projects/[PROJECT_NUMBER]",
"servicePerimeter": "accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection"
}
],
"violationReason": "NO_MATCHING_ACCESS_LEVEL",
"resourceNames": "[PROJECT_ID]"
ما دو گزینه برای رفع این مشکل انکار در ProjectZ داریم.
- ایجاد یک سطح دسترسی برای دسترسی به پروژه درون محیط با اعطای دسترسی به IP سیستم من.
- ایجاد یک قانون ورود برای اجازه دسترسی یک کلاینت API از خارج از محیط سرویس به منابع درون محیط سرویس.
در این آموزش با ایجاد سطح دسترسی (Access Level) به عیبیابی خواهیم پرداخت.
- به Access Context Manager در پوشه (Codelab) scope بروید و یک سطح دسترسی جدید ایجاد کنید.
- از «حالت پایه» استفاده کنید و ما زمانی که زیرشبکه IP و موقعیت جغرافیایی برقرار باشد، اجازه دسترسی خواهیم داد.

- به بخش کنترلهای سرویس VPC در محدوده سازمان بروید. سیاست دسترسی خود را برای این Codelab انتخاب کنید و محیطی را که قبلاً ایجاد کردیم ویرایش کنید.
- سطح دسترسی ایجاد شده در محدوده پوشه را اضافه کرده و ذخیره کنید.

۶. نتایج آزمایش.
تأیید کنید که به Compute Engine دسترسی داریم و میتوانیم یک نمونه ماشین مجازی ایجاد کنیم. حالا که سطح دسترسی را ایجاد کردهایم، بیایید سعی کنیم به Compute Engine در ProjectZ دسترسی پیدا کنیم و یک نمونه ماشین مجازی ایجاد کنیم.
- به Compute Engine بروید و روی Create Instance کلیک کنید.

- همه چیز را به صورت پیشفرض رها کنید و سعی کنید یک نمونه ماشین مجازی کمهزینه ایجاد کنید.
بعد از حدود یک دقیقه، باید نمونه ماشین مجازی ایجاد شده را ببینید و میتوانید تأیید کنید که به موتور محاسباتی محافظتشده در داخل محیط دسترسی کامل دارید.

۷. پاکسازی
اگرچه هیچ هزینه جداگانهای برای استفاده از کنترلهای سرویس VPC در زمانی که سرویس در حال استفاده نیست، وجود ندارد، اما بهترین روش، پاکسازی تنظیمات مورد استفاده در این آزمایشگاه است. همچنین میتوانید نمونه ماشین مجازی و/یا پروژههای ابری خود را حذف کنید تا از پرداخت هزینهها جلوگیری کنید. حذف پروژه ابری شما، پرداخت هزینه برای تمام منابع مورد استفاده در آن پروژه را متوقف میکند.
- برای حذف نمونه ماشین مجازی خود، کادر انتخاب سمت چپ نام نمونه ماشین مجازی خود را انتخاب کنید و سپس روی حذف کلیک کنید.

- برای حذف حاشیه، مراحل زیر را انجام دهید:
- در کنسول Google Cloud، روی Security کلیک کنید و سپس در محدوده Organization روی VPC Service Controls کلیک کنید.
- در صفحه کنترلهای سرویس VPC، در ردیف جدول مربوط به محیطی که میخواهید حذف کنید، روی «آیکون حذف» کلیک کنید.
- برای حذف سطح دسترسی، مراحل زیر را انجام دهید:
- در کنسول گوگل کلود، صفحه Access Context Manager را در محدوده پوشه باز کنید.
- در جدول، در ردیف مربوط به سطح دسترسی که میخواهید حذف کنید، روی «حذف آیکون» کلیک کنید و سپس روی «حذف» کلیک کنید.
- برای خاموش کردن پروژههای خود، مراحل زیر را انجام دهید:
- در کنسول گوگل کلود، به صفحه تنظیمات مدیریت و دسترسی به اطلاعات (IAM & Admin Settings) پروژهای که میخواهید حذف کنید، بروید.
- در صفحه تنظیمات مدیریت و دسترسی (IAM & Admin Settings)، روی خاموش کردن (Shutdown) کلیک کنید.
- شناسه پروژه را وارد کنید و روی «خاموش کردن به هر حال» کلیک کنید.
۸. تبریک میگویم!
در این آزمایشگاه کد، شما یک محیط کنترلهای سرویس VPC ایجاد کردید، آن را اجرا و عیبیابی کردید.
بیشتر بدانید
- به مستندات کنترلهای سرویس VPC مراجعه کنید.
- به مستندات Access Context Manager مراجعه کنید.
- به مستندات عیبیاب VPC-SC مراجعه کنید.
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.