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 IP tertentu rentang alamat IP jaringan VPC untuk mengakses project dan jaringan VPC. Dengan fitur ini, Anda dapat melakukan hal berikut tugas:
Mendukung akses dasar level Anda menjadi mengizinkan rentang alamat IP internal jaringan VPC.
Izinkan penggunaan kondisi tingkat akses ini untuk API masuk atau keluar panggilan masuk atau keluar dari batas perimeter layanan.
Fitur ini memberikan manfaat sebagai berikut:
Anda dapat menetapkan kondisi dalam konfigurasi Kontrol Layanan VPC yang diizinkan dari alamat IP internal dalam jaringan VPC.
Alur kerja yang memerlukan panggilan API untuk melewati beberapa perimeter layanan dapat membatasi akses untuk hanya mengizinkan beberapa subnet, bukan mengizinkan seluruh project atau jaringan VPC.
Anda dapat mengonfigurasi berbagai resource lokal agar dapat mengakses resource Google Cloud tertentu saja. Anda perlu menggunakan IP subnet rentang alamat IP yang terkait dengan resource lokal dan zona landing ini Jaringan VPC sebagai bagian dari tingkat akses.
Gambar 1 menunjukkan contoh penyiapan yang mengizinkan akses ke perangkat tertentu yang dilindungi dari alamat IP internal resmi.
Batasan penggunaan alamat IP internal
Saat Anda menggunakan alamat IP internal di Kontrol Layanan VPC, batasan berlaku:
Anda dapat mengaktifkan alamat IP internal hanya dengan tingkat akses dasar, bukan dengan tingkat akses kustom.
Sebaiknya Anda tidak menegasikan tingkat akses dengan alamat IP internal kondisi tertentu karena dapat menyebabkan perilaku yang tidak terduga.
Batasan untuk menambahkan jaringan VPC ke perimeter layanan juga akan berlaku.
Saat Kontrol Layanan VPC mencatat log audit kebijakan yang ditolak, nama akan disamarkan dalam jaringan VPC sebagai
__UNKNOWN__
dalam log audit.Jaringan VPC dengan
SUBNET_MODE
yang ditetapkan kecustom
tetapi tidak memiliki subnet, tidak didukung. Mengaktifkan alamat IP internal mengharuskan jaringan VPC yang berisi setidaknya satu subnet.Anda hanya dapat menetapkan 500 VPC jaringan di seluruh tingkat akses dalam kebijakan akses.
Saat Anda menghapus jaringan VPC yang direferensikan oleh akses level atau perimeter layanan, lalu membuat ulang VPC lain menggunakan nama yang sama, Kontrol Layanan VPC tidak otomatis mengaktifkan alamat IP internal pada jaringan VPC yang dibuat ulang. Kepada mengatasi keterbatasan ini, buat sebuah jaringan VPC nama yang berbeda dan menambahkannya ke perimeter.
Anda tidak dapat menggunakan alamat IP internal untuk mengizinkan akses dari alamat IP yang dikelola Google layanan IT perusahaan mereka. Misalnya, Cloud SQL.
Jika Anda menggunakan tingkat akses yang memiliki kondisi berbasis alamat IP internal dengan aturan traffic keluar, sebaiknya jangan tambahkan kondisi lain seperti jenis perangkat, identitas pengguna, hingga tingkat akses.
Alamat IP internal tidak cocok dengan tingkat akses yang mengacu pada lokasi geografis region.
Menggunakan alamat IP internal di tingkat akses
Tentukan nama jaringan VPC dan rentang alamat IP di kolom Kolom
vpcNetworkSources
dari tingkat akses dasar kondisi.Nama jaringan VPC. Anda harus menentukan 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
VpcSubNetwork
bidangVpcNetworkSource
harus mengikuti spesifikasi subnetwork IP blok CIDR. Anda dapat menggunakan alamat IP apa pun rentang yang merupakan rentang IPv4 yang valid untuk subnet.
Gunakan tingkat akses ini dengan kondisi izinkan di
IngressSource
atauEgressSource
Dengan menggunakan contoh skenario, bagian berikut menjelaskan cara melakukannya langkah-langkah untuk mengaktifkan alamat IP internal.
Contoh penggunaan alamat IP internal untuk menyiapkan akses subnet
Dalam 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 lalu lintas.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
yang menggunakan alamat IP internal.
Untuk melakukan penyiapan ini, Anda perlu melakukan langkah-langkah berikut:
Anda membuat perimeter layanan
sp1
di sekitarProject1
dan layanan lainnya kelilingsp2
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 jika tidak memiliki kebijakan akses di tingkat ini, jalankan perintah Perintah gcloud CLI:
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 informasi selengkapnya, lihat Membuat akses tingkat organisasi kebijakan kami.
Untuk menetapkan kebijakan ini sebagai kebijakan akses default, jalankan perintah berikut Perintah gcloud CLI:
gcloud config set access_context_manager/policy POLICY_NAME
Ganti POLICY_NAME dengan nama numerik untuk 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
sp1
perimeter di sekitarProject1
, jalankan perintah berikut Perintah gcloud CLI: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 dari project host jaringan. Contoh,
projects/111
.POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.
Untuk membuat
sp2
perimeter di sekitarProject2
yang membatasi 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 Cloud Storage proyek. Contoh,
projects/222
.POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh,
1234567890
.
Untuk informasi selengkapnya tentang pembuatan perimeter layanan, lihat Membuat layanan perimeter.
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 menunjukkan 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 format nama jaringan VPC dan rentang alamat IP dijelaskan sebelumnya.
Untuk informasi lebih lanjut tentang file YAML, lihat
basic-level-spec
YAML file.Untuk membuat tingkat akses menggunakan file YAML, jalankan perintah berikut Perintah gcloud CLI:
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 informasi selengkapnya, lihat Membuat akses dasar level aplikasi.
Mengonfigurasi kebijakan masuk untuk mengizinkan traffic API masuk ke bucket Cloud Storage
Untuk hanya mengizinkan akses dari VM1
, konfigurasikan kebijakan masuk di sp2
perimeter untuk memungkinkan traffic Cloud Storage API memasuki perimeter.
Buat file YAML yang menentukan kebijakan traffic masuk 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 Aturan masuk .
Untuk memperbarui kebijakan masuk untuk perimeter layanan, jalankan perintah berikut Perintah gcloud CLI:
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 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 untuk keluar dari perimeter.
Membuat file YAML yang menentukan kebijakan traffic keluar Anda. Pastikan Anda mengatur kolom
sourceRestriction
sebagaiSOURCE_RESTRICTION_ENABLED
pada 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 Aturan traffic keluar .
Untuk memperbarui kebijakan keluar bagi perimeter layanan, jalankan perintah berikut 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 Anda. Contoh,
sp1
.FILE_NAME: File YAML yang menentukan kebijakan traffic keluar Anda. Contoh,
egress.yaml
.
Untuk informasi selengkapnya, lihat Memperbarui kebijakan 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 Anda menonaktifkan IP untuk VM Anda. Penerusan IP mengizinkan VM dalam jaringan VPC yang sama untuk mengirim permintaan menggunakan alamat IP yang berbeda, yang menimbulkan risiko spoofing alamat IP.
Jika Anda ingin mengaktifkan penerusan IP, sebaiknya gunakan konfigurasi berikut untuk mengurangi risiko spoofing alamat IP:
Gunakan kebijakan organisasi
Restrict VM IP Forwarding
batasan (constraints/compute.vmCanIpForward
) untuk memastikan hanya VM yang diotorisasi yang dapat mengaktifkan penerusan IP.Menggunakan sumber untuk aturan firewall untuk membatasi alamat IP yang dapat berkomunikasi dengan VM yang memiliki IP penerusan diaktifkan. Selesaikan tugas-tugas berikut:
Siapkan aturan firewall masuk untuk mengizinkan traffic masuk hanya dari Rentang alamat IP ke VM yang mengaktifkan penerusan IP.
Siapkan aturan firewall keluar untuk mengizinkan traffic keluar hanya ke Rentang alamat IP dari VM yang mengaktifkan penerusan IP.