Pelajari cara menyiapkan perimeter layanan menggunakan Kontrol Layanan VPC. Tutorial ini menggunakan setelan jaringan seperti firewall, Private Service Connect, dan konfigurasi DNS yang diperlukan untuk menggunakan perimeter Kontrol Layanan VPC secara efektif. Tutorial ini kemudian menunjukkan cara mengizinkan atau menolak layanan, dan cara membuat pengecualian terperinci untuk daftar yang diizinkan dari layanan tertentu.
Tujuan
- Konfigurasi perimeter Kontrol Layanan VPC dengan kontrol jaringan tambahan untuk mengurangi jalur pemindahan data yang tidak sah.
- Mengizinkan atau menolak akses ke layanan di dalam perimeter dari permintaan yang berasal dari dalam perimeter atau di luar perimeter.
- Mengizinkan atau menolak akses ke layanan di luar perimeter dari permintaan yang berasal dalam perimeter.
- Gunakan kebijakan organisasi Batasi Penggunaan Layanan Resource dan Kontrol Layanan VPC secara bersamaan.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih berikut: Google Cloud
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Tutorial ini memerlukan project di organisasi Anda. Jika Anda belum memiliki organisasi Google Cloud , lihat membuat dan mengelola organisasi.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Access Context Manager, and Cloud DNS APIs.
-
In the Google Cloud console, activate Cloud Shell.
Make sure that you have the following role or roles on the organization: Access Context Manager Admin, Organization Policy Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih organisasi.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Make sure that you have the following role or roles on the project: Compute Admin, DNS Administrator, IAP-Secured Tunnel User, Service Account User, Service Directory Editor
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Di Cloud Shell, tetapkan variabel:
gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Ganti kode berikut:
- PROJECT_ID: project ID untuk project tempat Anda akan membuat resource
- REGION: region yang dekat dengan lokasi Anda—misalnya,
us-central1
- ZONE: zona yang dekat dengan lokasi Anda—misalnya,
us-central1-a
Buat jaringan VPC dan subnet dengan Akses Google Pribadi yang diaktifkan:
gcloud compute networks create restricted-vpc --subnet-mode=custom gcloud compute networks subnets create restricted-subnet \ --range=10.0.0.0/24 \ --network=restricted-vpc \ --enable-private-ip-google-access
Buat endpoint Private Service Connect dan aturan penerusan yang dikonfigurasi untuk menggunakan paket vpc-sc:
gcloud compute addresses create restricted-psc-endpoint \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=10.0.1.1 \ --network=restricted-vpc gcloud compute forwarding-rules create restrictedpsc \ --global \ --network=restricted-vpc \ --address=restricted-psc-endpoint \ --target-google-apis-bundle=vpc-sc
Konfigurasi kebijakan server Cloud DNS untuk mengalihkan kueri untuk Google Cloud API ke endpoint Private Service Connect Anda:
gcloud dns managed-zones create restricted-dns-zone \ --description="Private DNS Zone to map Google API queries to the Private Service Connect endpoint for Google APIs" \ --dns-name="googleapis.com." \ --networks=restricted-vpc \ --visibility=private gcloud dns record-sets create googleapis.com \ --rrdatas=10.0.1.1 \ --type=A \ --ttl=300 \ --zone=restricted-dns-zone gcloud dns record-sets create *.googleapis.com \ --rrdatas="googleapis.com." \ --type=CNAME \ --ttl=300 \ --zone=restricted-dns-zone
Konfigurasi aturan firewall dengan prioritas rendah untuk menolak semua traffic keluar:
gcloud compute firewall-rules create deny-all-egress \ --priority=65534 \ --direction=egress \ --network=restricted-vpc \ --action=DENY \ --rules=all \ --destination-ranges=0.0.0.0/0
Konfigurasi aturan firewall dengan prioritas yang lebih tinggi untuk mengizinkan traffic mencapai alamat IP yang digunakan oleh endpoint Private Service Connect Anda:
gcloud compute firewall-rules create allow-psc-for-google-apis \ --priority=1000 \ --direction=egress \ --network=restricted-vpc \ --action=ALLOW \ --rules=tcp:443 \ --destination-ranges=10.0.1.1
Aturan firewall ini menolak traffic keluar secara luas, sebelum mengizinkan traffic keluar ke endpoint Private Service Connect secara selektif. Konfigurasi ini menolak traffic keluar ke domain default yang biasanya dapat dijangkau secara default dengan Akses Google Pribadi dan aturan firewall implisit.
Di Cloud Shell, buat kebijakan akses sebagai prasyarat untuk membuat perimeter Kontrol Layanan VPC:
gcloud access-context-manager policies create \ --organization=ORGANIZATION_ID --title "Access policy at organization node"
Outputnya mirip dengan hal berikut ini:
"Create request issued Waiting for operation [operations/accessPolicies/123456789/create/123456789] to complete...done."
Hanya boleh ada satu penampung kebijakan akses di node organisasi. Jika kebijakan telah dibuat di organisasi Anda, output-nya akan terlihat mirip dengan berikut ini:
"ALREADY_EXISTS: Policy already exists with parent ContainerKey{containerId=organizations/123456789012, numericId=123456789012}"
Jika Anda melihat pesan ini, lanjutkan ke langkah berikutnya.
Buat perimeter Kontrol Layanan VPC yang membatasi layanan Cloud Storage dan Compute Engine.
export POLICY_ID=$(gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format="value(name)") gcloud access-context-manager perimeters create demo_perimeter \ --title="demo_perimeter" \ --resources=projects/$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") \ --restricted-services="storage.googleapis.com,compute.googleapis.com" \ --enable-vpc-accessible-services \ --policy=$POLICY_ID \ --vpc-allowed-services="RESTRICTED-SERVICES"
Di Cloud Shell, jalankan perintah berikut untuk membuat VM di dalam jaringan VPC Anda.
gcloud compute instances create demo-vm \ --machine-type=e2-micro \ --subnet=restricted-subnet \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Request is prohibited by organization's policy."
Permintaan gagal karena Cloud Shell berada di luar perimeter Anda, dan Compute Engine dikonfigurasi dengan tanda
--restricted-services
.Di Cloud Shell, jalankan perintah berikut untuk mengakses layanan Resource Manager, yang tidak dikonfigurasi dalam tanda
--restricted-services
.gcloud projects describe PROJECT_ID
Respons yang berhasil akan menampilkan detail project Anda. Respons ini menunjukkan bahwa perimeter Anda mengizinkan traffic eksternal ke Cloud Resource Manager API.
Anda telah menunjukkan bahwa perimeter menolak traffic eksternal ke layanan yang dikonfigurasi di
--restricted-services
dan mengizinkan traffic eksternal ke layanan yang tidak dikonfigurasi secara eksplisit di--restricted-services
.Dari Cloud Shell, buat file YAML yang menjelaskan konfigurasi tingkat akses dan terapkan ke perimeter Anda. Contoh ini membuat tingkat akses untuk identitas pengguna yang saat ini Anda gunakan untuk menjalankan tutorial.
export USERNAME=$(gcloud config list account --format "value(core.account)") cat <<EOF > user_spec.yaml - members: - user:$USERNAME EOF
gcloud access-context-manager levels create single_user_level \ --title="single-user access level" \ --basic-level-spec=user_spec.yaml \ --policy=$POLICY_ID gcloud access-context-manager perimeters update demo_perimeter \ --add-access-levels=single_user_level \ --policy=$POLICY_ID
Dari Cloud Shell, jalankan kembali perintah berikut untuk mencoba membuat VM:
gcloud compute instances create demo-vm \ --machine-type=e2-micro \ --subnet=restricted-subnet \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address
Kali ini, permintaan berhasil. Perimeter Anda mencegah traffic eksternal menggunakan layanan yang dibatasi, tetapi tingkat akses yang Anda konfigurasi memungkinkan pengecualian.
Dari tab Cloud Shell, jalankan perintah berikut untuk menghapus tingkat akses.
gcloud access-context-manager perimeters update demo_perimeter \ --policy=$POLICY_ID \ --clear-access-levels
Dari tab Cloud Shell, buat kebijakan ingress yang memungkinkan identitas pengguna Anda melakukan ingress ke layanan Compute Engine saja, lalu terapkan kebijakan tersebut ke perimeter Anda.
cat <<EOF > ingress_spec.yaml - ingressFrom: identities: - user:$USERNAME sources: - accessLevel: '*' ingressTo: operations: - methodSelectors: - method: '*' serviceName: compute.googleapis.com resources: - '*' EOF
gcloud access-context-manager perimeters update demo_perimeter \ --set-ingress-policies=ingress_spec.yaml \ --policy=$POLICY_ID
Dari tab Cloud Shell, jalankan perintah berikut untuk membuat bucket Cloud Storage di dalam perimeter.
gcloud storage buckets create gs://PROJECT_ID-01
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.storage.buckets.create) HTTPError 403: Request is prohibited by organization's policy."
Cloud Shell adalah klien di luar perimeter, sehingga perimeter Kontrol Layanan VPC memblokir Cloud Shell untuk berkomunikasi dengan layanan yang dibatasi di dalam perimeter.
Dari tab Cloud Shell, jalankan perintah berikut untuk membuat permintaan ke layanan Compute Engine di dalam perimeter.
gcloud compute instances describe demo-vm --zone=ZONE
Respons yang berhasil akan menampilkan detail
demo-vm
. Respons ini menunjukkan bahwa perimeter Anda mengizinkan traffic eksternal yang memenuhi kondisi kebijakan ingress ke layanan Compute Engine.Dari Cloud Shell, buat aturan firewall yang mengizinkan traffic SSH ke jaringan VPC Anda dengan mengizinkan ingress dari rentang alamat IP 35.235.240.0/20 yang digunakan oleh layanan IAP untuk penerusan TCP:
gcloud compute firewall-rules create demo-allow-ssh \ --direction=INGRESS \ --priority=1000 \ --network=restricted-vpc \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Mulai sesi SSH ke instance ini:
gcloud compute ssh demo-vm --zone=ZONE
Pastikan Anda telah berhasil terhubung ke instance
demo-vm
dengan mengonfirmasi bahwa command prompt telah berubah untuk menampilkan nama host instance Anda:username@demo-vm:~$
Jika perintah sebelumnya gagal, Anda mungkin melihat pesan error yang mirip dengan berikut:
"[/usr/bin/ssh] exited with return code [255]"
Dalam hal ini, instance Compute Engine mungkin belum selesai melakukan booting. Tunggu sebentar, lalu coba lagi.
Dari sesi SSH di dalam perimeter Anda, verifikasi layanan yang diizinkan secara internal oleh perimeter Anda menggunakan layanan Google Cloud yang dikonfigurasi dalam daftar yang diizinkan untuk layanan yang dapat diakses VPC. Misalnya, coba perintah apa pun menggunakan layanan Compute Engine.
gcloud compute instances describe demo-vm --zone=ZONE
Respons yang berhasil akan menampilkan detail
demo-vm
. Respons ini menunjukkan bahwa perimeter Anda mengizinkan traffic internal ke Compute Engine API.Dari sesi SSH di dalam perimeter Anda, verifikasi bahwa layanan yang tidak disertakan dalam daftar yang diizinkan untuk layanan yang dapat diakses VPC tidak diizinkan dari VM Anda. Misalnya, perintah berikut menggunakan layanan Resource Manager, yang tidak dikonfigurasi dalam daftar yang diizinkan untuk layanan yang dapat diakses VPC.
gcloud projects describe PROJECT_ID
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.projects.list) PERMISSION_DENIED: Request is prohibited by organization's policy."
Instance Compute Engine dan endpoint jaringan lainnya hanya dapat meminta layanan yang dikonfigurasi dalam daftar yang diizinkan untuk layanan yang dapat diakses VPC. Namun, resource atau traffic layanan serverless yang berasal dari luar perimeter Anda dapat meminta layanan tersebut. Jika Anda ingin mencegah penggunaan layanan dalam project Anda, lihat kebijakan Penggunaan Resource Layanan yang Dibatasi.
Dari sesi SSH di dalam perimeter Anda, jalankan perintah berikut untuk membuat bucket penyimpanan di dalam perimeter Anda. Perintah ini berfungsi karena layanan Cloud Storage dikonfigurasi di
restricted-services
danaccessible-services
.gcloud storage buckets create gs://PROJECT_ID-02
Respons yang berhasil akan membuat bucket penyimpanan. Respons ini menunjukkan bahwa perimeter Anda mengizinkan traffic internal ke layanan Cloud Storage.
Dari sesi SSH di dalam perimeter Anda, jalankan perintah berikut untuk membaca dari bucket yang berada di luar perimeter Anda. Bucket publik ini mengizinkan izin hanya baca ke
allUsers
, tetapi perimeter menolak traffic dari dalam perimeter Anda ke layanan yang dibatasi di luar perimeter.gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.storage.objects.describe) HTTPError 403: Request is prohibited by organization's policy."
Respons ini menunjukkan bahwa Anda dapat menggunakan layanan yang dibatasi di dalam perimeter, tetapi resource di dalam perimeter tidak dapat berkomunikasi dengan layanan yang dibatasi di luar perimeter.
Buka sesi Cloud Shell baru dengan mengklik
open a new tab di Cloud Shell. Pada langkah-langkah berikutnya, Anda akan beralih antara tab pertama dengan sesi SSH di dalam perimeter Anda, dan tab kedua di Cloud Shell di luar perimeter Anda tempat perintah command line dimulai denganusername@cloudshell
.Dari tab Cloud Shell, buat kebijakan keluar yang mengizinkan keluar dari identitas akun layanan terlampir
demo-vm
menggunakan metodegoogle.storage.objects.get
ke bucket publik di project eksternal. Perbarui perimeter dengan kebijakan traffic keluar.export POLICY_ID=$(gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format="value(name)") export SERVICE_ACCOUNT_EMAIL=$(gcloud compute instances describe demo-vm \ --zone=ZONE) \ --format="value(serviceAccounts.email)"
cat <<EOF > egress_spec.yaml - egressFrom: identities: - serviceAccount:$SERVICE_ACCOUNT_EMAIL egressTo: operations: - methodSelectors: - method: 'google.storage.objects.get' serviceName: storage.googleapis.com resources: - projects/950403849117 EOF
gcloud access-context-manager perimeters update demo_perimeter \ --set-egress-policies=egress_spec.yaml \ --policy=$POLICY_ID
Kembali ke tab dengan sesi SSH ke VM di dalam perimeter Anda, tempat perintah command line dimulai dengan
username@demo-vm
.Dari sesi SSH di dalam perimeter Anda, buat permintaan lain ke bucket Cloud Storage dan verifikasi apakah bucket tersebut berfungsi.
gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt
Outputnya mirip dengan hal berikut ini:
"Hello world! This is a sample file in Cloud Storage that is viewable to allUsers."
Respons ini menunjukkan bahwa kebijakan perimeter dan keluar Anda mengizinkan traffic internal dari identitas tertentu ke bucket Cloud Storage tertentu.
Dari sesi SSH di dalam perimeter, Anda juga dapat menguji metode lain yang tidak diizinkan secara eksplisit oleh pengecualian kebijakan keluar. Misalnya, perintah berikut memerlukan izin
google.storage.buckets.list
yang ditolak oleh perimeter Anda.gcloud storage ls gs://solutions-public-assets/vpcsc-tutorial/*
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.storage.cp) Request is prohibited by organization's policy."
Respons ini menunjukkan bahwa perimeter Anda menolak traffic internal dari mencantumkan objek di bucket eksternal, yang menunjukkan bahwa kebijakan keluar hanya mengizinkan metode yang ditentukan secara eksplisit.
- Beralih ke tab Cloud Shell, tempat perintah command line
dimulai dengan
username@cloudshell
. Dari tab Cloud Shell, buat file YAML yang menjelaskan Layanan Kebijakan Organisasi yang hanya akan mengizinkan penggunaan layanan Compute Engine dan menolak semua layanan lainnya, lalu terapkan ke project Anda.
cat <<EOF > allowed_services_policy.yaml constraint: constraints/gcp.restrictServiceUsage listPolicy: allowedValues: - compute.googleapis.com inheritFromParent: true EOF
gcloud resource-manager org-policies set-policy allowed_services_policy.yaml \ --project=PROJECT_ID
Kembali ke tab dengan sesi SSH ke VM di dalam perimeter Anda, tempat perintah command line dimulai dengan
username@demo-vm
.Dari sesi SSH di dalam perimeter Anda, jalankan perintah berikut untuk melihat bucket penyimpanan yang sama yang sebelumnya Anda buat di dalam project ini.
gcloud storage buckets describe gs://PROJECT_ID
Outputnya mirip dengan hal berikut ini:
"ERROR: (gcloud.storage.buckets.create) HTTPError 403: Request is disallowed by organization's constraints/gcp.restrictServiceUsage constraint for 'projects/123456789' attempting to use service 'storage.googleapis.com'."
Respons ini menunjukkan bahwa Layanan Kebijakan Organisasi menolak layanan Cloud Storage di dalam project Anda, terlepas dari konfigurasi perimeter Anda.
Dari sesi SSH di dalam perimeter Anda, jalankan perintah berikut untuk melihat bucket penyimpanan di luar perimeter yang diizinkan oleh kebijakan keluar Anda.
gcloud storage cat gs://solutions-public-assets/vpcsc-tutorial/helloworld.txt
Outputnya mirip dengan hal berikut ini:
"Hello world! This is a sample file in Cloud Storage that is viewable to allUsers."
Respons yang berhasil akan menampilkan konten
helloworld.txt
di bucket penyimpanan eksternal. Respons ini menunjukkan bahwa perimeter dan kebijakan traffic keluar Anda mengizinkan traffic internal mencapai bucket penyimpanan eksternal dalam kondisi terbatas tertentu, tetapi Layanan Kebijakan Organisasi menolak layanan Cloud Storage di project Anda, terlepas dari konfigurasi perimeter Anda. Layanan di luar project Anda mungkin masih digunakan untuk pemindahan yang tidak sah jika diizinkan oleh perimeter Anda, terlepas dari Layanan Kebijakan Organisasi Penggunaan Resource Layanan yang Dibatasi.Untuk menolak komunikasi dengan Cloud Storage atau layanan Google lainnya di luar perimeter, hanya Layanan Kebijakan Organisasi Penggunaan Resource Layanan yang Dibatasi saja tidak cukup, Anda harus mengonfigurasi perimeter Kontrol Layanan VPC. Kontrol Layanan VPC memitigasi jalur pemindahan data yang tidak sah, dan Penggunaan Resource Layanan yang Dibatasi adalah kontrol kepatuhan untuk mencegah pembuatan layanan yang tidak disetujui di dalam lingkungan Anda. Gunakan kontrol ini bersama-sama untuk memblokir berbagai jalur pemin dahan ke dan mengizinkan layanan yang disetujui secara selektif untuk penggunaan internal di lingkungan Anda.
- Di pemilih project di bagian atas konsol Google Cloud , pilih organisasi yang Anda gunakan selama tutorial ini.
Di konsol Google Cloud , buka halaman VPC Service Controls.
Di bagian daftar perimeter, pilih perimeter yang ingin Anda hapus lalu klik Hapus.
Pada dialog, klik Hapus lagi untuk mengonfirmasi penghapusan.
- Pelajari praktik terbaik untuk mengaktifkan Kontrol Layanan VPC.
- Pelajari layanan yang didukung di Kontrol Layanan VPC.
- Pelajari cara mengaktifkan layanan yang dapat diakses VPC.
- Baca tentang konfigurasi Private Service Connect untuk mengakses Google API.
Untuk mengetahui lebih banyak arsitektur referensi, diagram, tutorial, dan praktik terbaik, jelajahi Pusat Arsitektur Cloud.
Menyiapkan perimeter Kontrol Layanan VPC Anda
Untuk menerapkan perimeter Kontrol Layanan VPC untuk jaringan VPC, Anda harus menerapkan kontrol jaringan yang menolak traffic ke layanan eksternal. Bagian berikut menjelaskan konfigurasi jaringan yang harus Anda terapkan di jaringan VPC di dalam perimeter Anda dan contoh konfigurasi perimeter.
Menyiapkan jaringan VPC
Di bagian ini, Anda akan menyiapkan konektivitas pribadi ke Google API dan layanan Google untuk jaringan VPC Anda guna memitigasi berbagai jalur keluar jaringan ke internet.
Membuat perimeter Kontrol Layanan VPC
Di bagian ini, Anda akan membuat perimeter Kontrol Layanan VPC.
Memverifikasi layanan yang diizinkan dari traffic di luar perimeter Anda
Bagian berikut menunjukkan cara perimeter Kontrol Layanan VPC mengizinkan atau menolak akses ke permintaan yang dibuat dari luar perimeter dan cara Anda dapat mengizinkan ingress ke layanan secara selektif dengan mengonfigurasi tingkat akses dan kebijakan ingress.
Untuk menyimulasikan traffic dari luar perimeter, Anda dapat menjalankan perintah di Cloud Shell. Cloud Shell adalah resource di luar project dan perimeter Anda sendiri. Perimeter mengizinkan atau menolak permintaan meskipun permintaan memiliki hak istimewa Identity and Access Management yang memadai agar berhasil.
Tutorial ini menggunakan Compute Engine API, Cloud Storage API, dan Cloud Resource Manager API, tetapi konsep yang sama juga berlaku untuk layanan lainnya.
Pastikan perimeter menolak traffic eksternal ke layanan yang dibatasi
Di bagian ini, Anda akan memverifikasi bahwa perimeter menolak traffic eksternal ke layanan yang dibatasi.
Diagram sebelumnya menggambarkan cara klien yang sah ditolak aksesnya ke layanan di dalam perimeter yang Anda konfigurasi sebagai dibatasi, tetapi klien diizinkan mengakses layanan yang tidak Anda konfigurasi sebagai dibatasi.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan menggunakan Cloud Shell untuk mencoba membuat VM di dalam jaringan VPC Anda, yang akan gagal karena konfigurasi perimeter Kontrol Layanan VPC.
Bagian berikut memperkenalkan pola pengecualian untuk menjangkau layanan yang dibatasi di dalam perimeter.
Memverifikasi bahwa tingkat akses mengizinkan pengecualian pada perimeter
Di bagian ini, Anda akan memverifikasi bahwa tingkat akses mengizinkan pengecualian pada perimeter. Level akses berguna saat Anda ingin membuat pengecualian untuk traffic eksternal agar dapat mengakses semua layanan yang dibatasi di dalam perimeter dan Anda tidak memerlukan pengecualian terperinci untuk setiap layanan atau atribut lainnya.
Diagram sebelumnya menggambarkan cara tingkat akses memungkinkan klien yang sah mengakses semua layanan yang dibatasi di dalam perimeter.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan membuat tingkat akses, lalu membuat permintaan yang berhasil ke layanan Compute Engine. Permintaan ini diizinkan meskipun Anda mengonfigurasi Compute Engine sebagai dibatasi.
Memastikan bahwa kebijakan ingress mengizinkan pengecualian terperinci pada perimeter
Di bagian ini, Anda akan memverifikasi bahwa kebijakan traffic masuk mengizinkan pengecualian terperinci ke perimeter. Dibandingkan dengan tingkat akses yang lebih luas, kebijakan ingress yang lebih terperinci dapat mengonfigurasi atribut tambahan tentang sumber traffic dan mengizinkan akses ke layanan atau metode individual.
Diagram sebelumnya menggambarkan cara kebijakan traffic masuk mengizinkan klien yang sah untuk mengakses hanya layanan tertentu di dalam perimeter, tanpa mengizinkan akses ke layanan terbatas lainnya.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan mengganti tingkat akses dengan kebijakan ingress yang memungkinkan klien yang sah mengakses hanya layanan Compute Engine, tetapi tidak mengizinkan akses ke layanan terbatas lainnya.
Memverifikasi layanan yang diizinkan dari traffic di dalam perimeter Anda
Bagian berikut menunjukkan cara perimeter Kontrol Layanan VPC mengizinkan atau menolak permintaan ke layanan dari dalam perimeter, dan cara Anda mengizinkan traffic keluar ke layanan eksternal secara selektif berdasarkan kebijakan traffic keluar.
Untuk mendemonstrasikan perbedaan antara traffic di dalam dan di luar perimeter, bagian berikut menggunakan Cloud Shell di luar perimeter dan instance Compute Engine yang Anda buat di dalam perimeter. Perintah yang Anda jalankan dari sesi SSH di instance Compute Engine di dalam perimeter menggunakan identitas akun layanan yang terlampir, sedangkan perintah yang dijalankan dari Cloud Shell di luar perimeter menggunakan identitas Anda sendiri. Saat mengikuti penyiapan yang direkomendasikan untuk tutorial, perimeter mengizinkan atau menolak permintaan meskipun permintaan memiliki hak istimewa IAM yang memadai agar berhasil.
Tutorial ini menggunakan Compute Engine API, Cloud Storage API, dan Cloud Resource Manager API, tetapi konsep yang sama juga berlaku untuk layanan lainnya.
Pastikan perimeter mengizinkan traffic internal ke layanan yang dibatasi di dalam perimeter
Di bagian ini, Anda memverifikasi bahwa perimeter mengizinkan traffic dari endpoint jaringan di dalam perimeter Anda jika layanan juga dikonfigurasi di layanan yang dapat diakses VPC.
Diagram sebelumnya menggambarkan cara perimeter mengizinkan traffic dari endpoint jaringan di dalam perimeter untuk menjangkau layanan terbatas yang juga Anda konfigurasi sebagai layanan yang dapat diakses VPC. Layanan yang tidak Anda konfigurasi sebagai layanan yang dapat diakses VPC tidak dapat dijangkau dari endpoint jaringan di dalam perimeter.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan membuat koneksi SSH ke instance Compute Engine di dalam perimeter, lalu membuat permintaan ke layanan.
Memastikan bahwa perimeter menolak traffic internal ke layanan yang dibatasi di luar perimeter
Di bagian ini, Anda akan memverifikasi bahwa perimeter memblokir komunikasi dari layanan di dalam perimeter ke Google Cloud layanan di luar perimeter.
Diagram sebelumnya menggambarkan bagaimana traffic internal tidak dapat berkomunikasi dengan layanan yang dibatasi di luar perimeter.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan mencoba mengirim traffic internal ke layanan yang dibatasi di dalam perimeter dan ke layanan yang dibatasi di luar perimeter.
Pastikan kebijakan egress mengizinkan pengecualian ke perimeter
Di bagian ini, Anda akan memverifikasi bahwa kebijakan traffic keluar mengizinkan pengecualian ke perimeter.
Diagram sebelumnya menggambarkan cara traffic internal dapat berkomunikasi dengan resource eksternal tertentu saat Anda memberikan pengecualian sempit dengan kebijakan keluar.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan membuat kebijakan traffic keluar, lalu mengakses bucket Cloud Storage publik di luar perimeter yang diizinkan oleh kebijakan traffic keluar.
Untuk referensi lainnya tentang pola umum untuk berbagi data di luar perimeter layanan Anda, lihat pertukaran data yang aman dengan aturan masuk dan keluar.
(Opsional) Mengonfigurasi kebijakan Penggunaan Resource Layanan yang Dibatasi
Anda mungkin juga memiliki persyaratan internal atau persyaratan kepatuhan untuk mengizinkan hanya API yang disetujui satu per satu untuk digunakan di lingkungan Anda. Dalam hal ini, Anda juga dapat mengonfigurasi Layanan Kebijakan Organisasi Penggunaan Resource Layanan yang Dibatasi. Dengan menerapkan Kebijakan Organisasi dalam sebuah project, Anda membatasi layanan yang dapat dibuat dalam project tersebut. Namun, Kebijakan Organisasi tidak mencegah layanan dalam project ini berkomunikasi dengan layanan dalam project lain. Sebagai perbandingan, Kontrol Layanan VPC memungkinkan Anda menentukan perimeter untuk mencegah komunikasi dengan layanan di luar perimeter.
Misalnya, jika Anda menentukan Kebijakan Organisasi untuk mengizinkan Compute Engine dan menolak Cloud Storage dalam project Anda, VM dalam project ini tidak dapat membuat bucket Cloud Storage dalam project Anda. Namun, VM dapat membuat permintaan ke bucket Cloud Storage di project lain, sehingga pemindahan yang tidak sah dengan layanan Cloud Storage masih dapat dilakukan. Langkah-langkah berikut menunjukkan cara menerapkan dan menguji skenario ini:
Pembersihan
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Meskipun perimeter Kontrol Layanan VPC tidak menimbulkan biaya tambahan, perimeter tersebut harus dibersihkan untuk menghindari kekacauan dan resource yang tidak digunakan di organisasi Anda.
Langkah berikutnya
-