Halaman ini menjelaskan cara mengizinkan traffic dari alamat IP internal di jaringan VPC ke perimeter layanan menggunakan aturan masuk dan keluar.
Ringkasan
Anda dapat menggunakan Kontrol Layanan VPC untuk menentukan kondisi guna mengizinkan rentang alamat IP jaringan VPC tertentu mengakses project dan jaringan VPC yang dilindungi. Fitur ini memungkinkan Anda melakukan tugas berikut:
Mendukung kondisi tingkat akses dasar untuk mengizinkan rentang alamat IP internal jaringan VPC.
Izinkan penggunaan kondisi tingkat akses ini untuk panggilan API masuk atau keluar ke dalam atau ke luar batas perimeter layanan.
Fitur ini memberikan manfaat berikut:
Anda dapat menentukan kondisi dalam konfigurasi Kontrol Layanan VPC untuk mengizinkan akses dari alamat IP internal di jaringan VPC.
Alur kerja yang memerlukan panggilan API untuk melewati beberapa perimeter layanan dapat membatasi akses agar hanya mengizinkan beberapa subnet, bukan mengizinkan seluruh jaringan atau project VPC.
Anda dapat mengonfigurasi berbagai resource dari infrastruktur lokal agar dapat hanya mengakses resource Google Cloud tertentu. Anda harus menggunakan rentang alamat IP subnet yang terkait dengan resource lokal ini dan jaringan VPC zona landing sebagai bagian dari tingkat akses.
Gambar 1 menunjukkan contoh penyiapan yang memungkinkan akses ke layanan tertentu yang dilindungi dari alamat IP internal yang diotorisasi.
Batasan penggunaan alamat IP internal
Saat Anda menggunakan alamat IP internal di Kontrol Layanan VPC, batasan berikut berlaku:
Anda dapat mengaktifkan alamat IP internal hanya dengan tingkat akses dasar, bukan dengan tingkat akses kustom.
Sebaiknya jangan negasi tingkat akses dengan kondisi berbasis alamat IP internal karena dapat menyebabkan perilaku yang tidak terduga.
Batasan dalam menambahkan jaringan VPC ke perimeter layanan juga berlaku.
Saat mencatat log audit kebijakan yang ditolak, Kontrol Layanan VPC akan menyamarkan nama jaringan VPC sebagai
__UNKNOWN__
dalam log audit.Jaringan VPC yang
SUBNET_MODE
-nya disetel kecustom
, tetapi tidak memiliki subnet, tidak didukung. Untuk mengaktifkan alamat IP internal, jaringan VPC harus berisi setidaknya satu subnet.Anda hanya dapat menentukan 500 jaringan VPC di semua tingkat akses dalam kebijakan akses Anda.
Saat Anda menghapus jaringan VPC yang direferensikan oleh tingkat akses atau perimeter layanan, lalu membuat ulang jaringan VPC lain dengan nama yang sama, Kontrol Layanan VPC tidak otomatis mengaktifkan alamat IP internal di jaringan VPC yang dibuat ulang. Untuk mengatasi keterbatasan ini, buat jaringan VPC dengan nama yang berbeda dan tambahkan ke perimeter.
Anda tidak dapat menggunakan alamat IP internal untuk mengizinkan akses dari layanan yang dikelola Google. Misalnya, Cloud SQL.
Jika Anda menggunakan tingkat akses yang memiliki kondisi berbasis alamat IP internal dengan aturan keluar, sebaiknya jangan tambahkan kondisi lain seperti jenis perangkat, identitas pengguna ke tingkat akses.
Alamat IP internal tidak cocok dengan tingkat akses yang merujuk ke wilayah geografis.
Menggunakan alamat IP internal di tingkat akses
Tentukan nama jaringan VPC dan rentang alamat IP di kolom
vpcNetworkSources
kondisi tingkat akses dasar.Nama jaringan VPC. Anda harus menentukan nama jaringan VPC dalam format berikut:
//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_NAME
Misalnya,
//compute.googleapis.com/projects/my-project/global/networks/my-vpc
.Rentang alamat IP. Rentang alamat IP yang ditentukan di kolom
VpcSubNetwork
VpcNetworkSource
harus mengikuti spesifikasi subnetwork IP blok CIDR. Anda dapat menggunakan rentang alamat IP apa pun yang merupakan rentang IPv4 yang valid untuk subnet.
Gunakan tingkat akses ini dengan kondisi izin di
IngressSource
atauEgressSource
.
Dengan menggunakan contoh skenario, bagian berikut menjelaskan cara melakukan langkah-langkah ini untuk mengaktifkan alamat IP internal.
Contoh penggunaan alamat IP internal untuk menyiapkan akses subnet
Pada contoh berikut, Anda memiliki dua project:
Project host jaringan:
Project1
menghosting jaringan VPC:default
. Dua VM diProject1
,VM1
, danVM2
, menggunakan jaringan ini sebagai antarmuka jaringan untuk mengirim traffic.Project Cloud Storage:
Project2
berisi bucket Cloud Storage.
Anda dapat menggunakan Kontrol Layanan VPC untuk hanya mengizinkan VM1
dari Project1
mengakses bucket Cloud Storage di Project2
menggunakan alamat IP internal.
Untuk melakukan penyiapan ini, Anda perlu melakukan langkah-langkah berikut:
Anda membuat perimeter layanan
sp1
di sekitarProject1
dan perimeter layanan lainnyasp2
di sekitarProject2
.Kemudian, Anda dapat menambahkan aturan masuk dan keluar ke perimeter layanan untuk hanya mengizinkan akses subnet
VM1
ke bucket Cloud Storage.
Diagram berikut menunjukkan penyiapan yang dijelaskan dalam contoh ini.
Mengonfigurasi kebijakan akses di tingkat organisasi
Pastikan Anda memiliki kebijakan akses di tingkat organisasi. Jika Anda tidak memiliki kebijakan akses di tingkat ini, jalankan perintah gcloud CLI berikut:
gcloud access-context-manager policies create \ --organization=ORGANIZATION_ID --title=POLICY_TITLE
Ganti kode berikut:
ORGANIZATION_ID: ID numerik organisasi Anda.
POLICY_TITLE: Judul yang dapat dibaca manusia untuk kebijakan akses Anda.
Untuk mengetahui informasi selengkapnya, lihat Membuat kebijakan akses tingkat organisasi.
Untuk menetapkan kebijakan ini sebagai kebijakan akses default, jalankan perintah gcloud CLI berikut:
gcloud config set access_context_manager/policy POLICY_NAME
Ganti POLICY_NAME dengan nama numerik kebijakan akses Anda.
Untuk informasi selengkapnya, lihat Menetapkan kebijakan akses default untuk alat command line
gcloud
.
Membuat perimeter untuk melindungi project host jaringan dan project Cloud Storage
Untuk membuat perimeter
sp1
di sekitarProject1
, jalankan perintah gcloud CLI berikut:gcloud access-context-manager perimeters create sp1 --title="sp1" --resources=PROJECT_NUMBER \ --restricted-services=storage.googleapis.com --policy=POLICY_NAME
Ganti kode berikut:
PROJECT_NUMBER: Nomor project project host jaringan. Contoh,
projects/111
.POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.
Untuk membuat perimeter
sp2
di sekitarProject2
yang membatasi layanan Cloud Storage, jalankan perintah gcloud CLI berikut:gcloud access-context-manager perimeters create sp2 --title="sp2" --resources=PROJECT_NUMBER \ --restricted-services=storage.googleapis.com --policy=POLICY_NAME
Ganti kode berikut:
PROJECT_NUMBER: Nomor project untuk project Cloud Storage. Contoh,
projects/222
.POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.
Untuk mengetahui informasi selengkapnya tentang pembuatan perimeter layanan, lihat Membuat perimeter layanan.
Setelah Anda membuat dua perimeter ini, bucket Cloud Storage tidak lagi dapat diakses dari dua VM.
Membuat tingkat akses dengan kondisi akses berbasis alamat IP internal
Buat tingkat akses yang hanya mengizinkan traffic yang berasal dari subnet VM1
.
Buat file YAML yang menentukan kondisi akses Anda. Contoh berikut hanya menampilkan atribut yang Anda perlukan untuk mengaktifkan alamat IP internal:
echo """ - vpcNetworkSources: - vpcSubnetwork: network: VPC_NETWORK_NAME vpcIpSubnetworks: - IP_RANGE """ > level.yaml
Ganti kode berikut:
VPC_NETWORK_NAME: Nama jaringan VPC tempat
VM1
berada. Contohnya,//compute.googleapis.com/projects/Project1/global/networks/default
.IP_RANGE: Rentang alamat IP subnet. Contoh,
10.10.0.0/24
.
Gunakan nama jaringan VPC dan format rentang alamat IP yang dijelaskan sebelumnya.
Untuk informasi selengkapnya tentang file YAML, lihat file YAML
basic-level-spec
.Untuk membuat tingkat akses menggunakan file YAML, jalankan perintah gcloud CLI berikut:
gcloud access-context-manager levels create LEVEL_NAME \ --title="TITLE" --basic-level-spec=FILE_NAME
Ganti kode berikut:
LEVEL_NAME: Nama unik untuk tingkat akses. Contoh,
allowvm1
.TITLE: Judul singkat yang dapat dibaca manusia untuk tingkat akses. Contoh,
allowvm1
.FILE_NAME: File YAML yang menentukan kondisi akses Anda untuk tingkat akses. Contoh,
level.yaml
.
Untuk mengetahui informasi selengkapnya, lihat Membuat tingkat akses dasar.
Mengonfigurasi kebijakan ingress untuk mengizinkan traffic API masuk ke bucket Cloud Storage
Untuk hanya mengizinkan akses dari VM1
, konfigurasikan kebijakan masuk di perimeter sp2
untuk mengizinkan traffic Cloud Storage API memasuki perimeter.
Buat file YAML yang menentukan kebijakan ingress Anda.
echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME ingressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - '*' """ > ingress.yaml
Ganti kode berikut:
POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.ACCESS_LEVEL_NAME: Nama tingkat akses Anda. Contoh,
allowvm1
.
Untuk informasi selengkapnya tentang file YAML, lihat Referensi aturan traffic masuk.
Untuk memperbarui kebijakan traffic masuk untuk perimeter layanan, jalankan perintah gcloud CLI berikut:
gcloud access-context-manager perimeters update PERIMETER --set-ingress-policies=FILE_NAME
Ganti kode berikut:
PERIMETER: Nama perimeter layanan Anda yang melindungi project Cloud Storage. Contoh,
sp2
.FILE_NAME: File YAML yang menentukan kebijakan traffic masuk Anda. Contoh,
ingress.yaml
.
Untuk informasi selengkapnya, lihat Memperbarui kebijakan traffic masuk dan keluar untuk perimeter layanan.
Mengonfigurasi kebijakan keluar untuk mengizinkan traffic API keluar ke bucket Cloud Storage
Selain itu, konfigurasikan kebijakan keluar di perimeter sp1
untuk mengizinkan
traffic Cloud Storage API keluar dari perimeter.
Buat file YAML yang menentukan kebijakan traffic keluar Anda. Pastikan Anda menetapkan kolom
sourceRestriction
sebagaiSOURCE_RESTRICTION_ENABLED
dalam file YAML.echo """ - egressFrom: identityType: ANY_IDENTITY sourceRestriction: SOURCE_RESTRICTION_ENABLED sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME egressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - '*' """ > egress.yaml
Ganti kode berikut:
POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.ACCESS_LEVEL_NAME: Nama tingkat akses Anda. Contoh,
allowvm1
.
Untuk informasi selengkapnya tentang file YAML, lihat Referensi aturan traffic keluar.
Untuk memperbarui kebijakan traffic keluar untuk perimeter layanan, jalankan perintah berikut:
gcloud access-context-manager perimeters update PERIMETER --set-egress-policies=FILE_NAME
Ganti kode berikut:
PERIMETER: Nama perimeter layanan Anda yang melindungi project host jaringan. Contoh,
sp1
.FILE_NAME: File YAML yang menentukan kebijakan keluar Anda. Contoh,
egress.yaml
.
Untuk informasi selengkapnya, lihat Memperbarui kebijakan traffic masuk dan keluar untuk perimeter layanan.
Setelah Anda mengonfigurasi kebijakan masuk dan keluar, bucket Cloud Storage dapat diakses dari VM1
, sedangkan bucket Cloud Storage tidak dapat diakses dari VM2
.
Rekomendasi
Saat mengaktifkan alamat IP internal, sebaiknya nonaktifkan penerusan IP untuk VM Anda. Penerusan IP memungkinkan VM dalam jaringan VPC yang sama mengirim permintaan menggunakan alamat IP yang berbeda, sehingga menimbulkan risiko spoofing alamat IP.
Jika Anda ingin mengaktifkan penerusan IP, sebaiknya gunakan konfigurasi berikut untuk mengurangi risiko spoofing alamat IP:
Gunakan batasan kebijakan organisasi
Restrict VM IP Forwarding
(constraints/compute.vmCanIpForward
) untuk memastikan hanya VM yang diotorisasi yang dapat mengaktifkan penerusan IP.Gunakan sumber untuk aturan firewall untuk membatasi alamat IP yang dapat berkomunikasi dengan VM yang mengaktifkan penerusan IP. Selesaikan tugas berikut:
Siapkan aturan firewall masuk untuk mengizinkan traffic masuk hanya dari rentang alamat IP tertentu ke VM yang mengaktifkan penerusan IP.
Siapkan aturan firewall keluar untuk mengizinkan traffic keluar hanya ke rentang alamat IP tertentu dari VM yang mengaktifkan penerusan IP.