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 layanan diizinkan atau ditolak, dan cara membuat pengecualian yang terperinci untuk daftar yang diizinkan dari layanan tertentu.
Tujuan
- Konfigurasikan 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 dari 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:
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 dalam 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 colunn 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 New principals, masukkan ID pengguna Anda. Ini biasanya adalah 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 colunn 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 New principals, masukkan ID pengguna Anda. Ini biasanya adalah 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.
-
Menyiapkan perimeter Kontrol Layanan VPC
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 dan contoh konfigurasi perimeter.
Menyiapkan jaringan VPC
Di bagian ini, Anda akan menyiapkan konektivitas pribadi ke Google API dan layanan Google untuk jaringan VPC guna memitigasi berbagai jalur keluar jaringan ke internet.
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
Konfigurasikan 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
Konfigurasikan 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
Konfigurasikan aturan firewall dengan prioritas lebih tinggi untuk mengizinkan traffic menjangkau 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 secara selektif ke endpoint Private Service Connect. Konfigurasi ini menolak traffic keluar ke domain default yang biasanya dapat dijangkau secara default dengan Akses Google Pribadi dan aturan firewall implisit.
Membuat perimeter Kontrol Layanan VPC
Di bagian ini, Anda akan membuat perimeter Kontrol Layanan VPC.
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"
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 traffic masuk ke layanan secara selektif dengan mengonfigurasi tingkat akses dan kebijakan traffic masuk.
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 tersebut memiliki hak istimewa Identity and Access Management yang memadai untuk berhasil.
Tutorial ini menggunakan Compute Engine API, Cloud Storage API, dan Cloud Resource Manager API, tetapi konsep yang sama juga berlaku untuk layanan lainnya.
Memastikan 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 diotorisasi ditolak aksesnya ke layanan di dalam perimeter yang Anda konfigurasikan sebagai dibatasi, tetapi klien diizinkan mengakses layanan yang tidak Anda konfigurasikan sebagai dibatasi.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan menggunakan Cloud Shell untuk mencoba membuat VM di dalam jaringan VPC, yang gagal karena konfigurasi perimeter Kontrol Layanan VPC.
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
.
Bagian berikut memperkenalkan pola pengecualian untuk menjangkau layanan yang dibatasi di dalam perimeter.
Memverifikasi bahwa tingkat akses mengizinkan pengecualian untuk perimeter
Di bagian ini, Anda akan memverifikasi bahwa tingkat akses mengizinkan pengecualian untuk perimeter. Level akses berguna saat Anda ingin membuat pengecualian untuk traffic eksternal guna 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 mengizinkan klien resmi 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.
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 konfigurasikan mengizinkan pengecualian.
Memastikan bahwa kebijakan ingress mengizinkan pengecualian terperinci ke perimeter
Di bagian ini, Anda akan memverifikasi bahwa kebijakan traffic masuk mengizinkan pengecualian terperinci ke perimeter. Dibandingkan dengan tingkat akses yang kasar, kebijakan ingress yang terperinci dapat mengonfigurasi atribut tambahan tentang sumber traffic dan mengizinkan akses ke setiap layanan atau metode.
Diagram sebelumnya menggambarkan cara kebijakan traffic masuk mengizinkan klien yang diotorisasi untuk hanya mengakses layanan tertentu di dalam perimeter, tanpa mengizinkan akses ke layanan lain yang dibatasi.
Pada langkah-langkah berikut, Anda akan memverifikasi konsep ini dengan mengganti tingkat akses dengan kebijakan ingress yang memungkinkan klien yang diotorisasi hanya mengakses layanan Compute Engine, tetapi tidak mengizinkan akses ke layanan terbatas lainnya.
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 mengizinkan identitas pengguna Anda melakukan ingress ke layanan Compute Engine saja, dan terapkan kebijakan 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 agar tidak 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 Anda ke layanan Compute Engine.
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 dapat mengizinkan traffic keluar ke layanan eksternal secara selektif berdasarkan kebijakan traffic keluar.
Untuk menunjukkan 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 terpasang, 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 tersebut memiliki hak istimewa IAM yang memadai untuk berhasil.
Tutorial ini menggunakan Compute Engine API, Cloud Storage API, dan Cloud Resource Manager API, tetapi konsep yang sama juga berlaku untuk layanan lainnya.
Memverifikasi bahwa perimeter mengizinkan traffic internal ke layanan yang dibatasi di dalam perimeter
Di bagian ini, Anda akan memverifikasi bahwa perimeter mengizinkan traffic dari endpoint jaringan di dalam perimeter jika layanan juga dikonfigurasi di layanan yang dapat diakses VPC.
Diagram sebelumnya mengilustrasikan cara perimeter mengizinkan traffic dari endpoint jaringan di dalam perimeter untuk menjangkau layanan terbatas yang juga dikonfigurasi sebagai layanan yang dapat diakses VPC. Layanan yang tidak Anda konfigurasikan 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.
Dari Cloud Shell, buat aturan firewall yang mengizinkan traffic SSH ke jaringan VPC dengan mengizinkan traffic masuk 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 perintah command line 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 menyelesaikan proses booting. Tunggu sebentar, lalu coba lagi.
Dari sesi SSH di dalam perimeter, verifikasi layanan yang diizinkan perimeter Anda secara internal menggunakan layanan Google Cloud yang dikonfigurasi dalam daftar yang diizinkan 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, pastikan 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 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 serverless atau traffic layanan yang berasal dari luar perimeter Anda mungkin meminta layanan tersebut. Jika Anda ingin mencegah layanan digunakan dalam project, lihat kebijakan Penggunaan Resource Layanan yang Dibatasi.
Memastikan bahwa perimeter menolak traffic internal ke layanan terbatas di luar perimeter
Di bagian ini, Anda akan memverifikasi bahwa perimeter memblokir komunikasi dari layanan di dalam perimeter ke layanan Google Cloud 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.
Dari sesi SSH di dalam perimeter, jalankan perintah berikut untuk membuat bucket penyimpanan di dalam perimeter. 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, jalankan perintah berikut untuk membaca dari bucket yang berada di luar perimeter. 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.
Memverifikasi bahwa kebijakan egress mengizinkan pengecualian untuk perimeter
Di bagian ini, Anda akan memverifikasi bahwa kebijakan egress mengizinkan pengecualian untuk perimeter.
Diagram sebelumnya mengilustrasikan 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.
Buka sesi Cloud Shell baru dengan mengklik
buka tab baru di Cloud Shell. Pada langkah berikutnya, Anda akan beralih antara tab pertama dengan sesi SSH di dalam perimeter, dan tab kedua di Cloud Shell di luar perimeter 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 dalam 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, buat permintaan lain ke bucket Cloud Storage dan pastikan permintaan 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 egress 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 agar tidak mencantumkan objek di bucket eksternal, yang menunjukkan bahwa kebijakan keluar secara sempit mengizinkan metode yang ditentukan secara eksplisit.
Untuk referensi selengkapnya tentang pola umum untuk berbagi data di luar perimeter layanan Anda, lihat mengamankan pertukaran data dengan aturan masuk dan keluar.
(Opsional) Mengonfigurasi kebijakan Penggunaan Resource Layanan yang Dibatasi
Anda mungkin juga memiliki persyaratan internal atau persyaratan kepatuhan untuk hanya mengizinkan API yang disetujui satu per satu digunakan di lingkungan Anda. Dalam hal ini, Anda juga dapat mengonfigurasi Layanan Kebijakan Organisasi Penggunaan Resource Layanan Terbatas. 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:
- Beralihlah 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, jalankan perintah berikut untuk melihat bucket penyimpanan yang sama dengan yang Anda buat sebelumnya 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, 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 kebijakan perimeter dan egress Anda memungkinkan traffic internal menjangkau 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 Terbatas.Untuk menolak komunikasi dengan Cloud Storage atau layanan Google lainnya di luar perimeter, Layanan Kebijakan Organisasi Penggunaan Resource Layanan Terbatas saja tidak cukup, Anda harus mengonfigurasi perimeter Kontrol Layanan VPC. Kontrol Layanan VPC mengurangi 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 eksfiltrasi ke dan mengizinkan layanan yang disetujui secara selektif untuk penggunaan internal di lingkungan Anda.
Pembersihan
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Meskipun perimeter Kontrol Layanan VPC tidak menimbulkan biaya tambahan, perimeter ini harus dibersihkan untuk menghindari resource yang tidak digunakan dan berantakan di organisasi 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 dihapus, lalu klik Hapus.
Pada dialog, klik Delete lagi untuk mengonfirmasi penghapusan.
Langkah selanjutnya
- 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 tentang arsitektur referensi, diagram, tutorial, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.