Halaman ini menjelaskan aturan masuk dan keluar untuk Kontrol Layanan VPC. Kontrol Layanan VPC menggunakan aturan masuk dan keluar untuk mengizinkan akses ke dan dari resource dan klien yang dilindungi oleh perimeter layanan.
Blok aturan masuk dan keluar menentukan arah akses yang diizinkan ke dan dari berbagai identitas dan resource. Aturan masuk dan keluar dapat menggantikan dan menyederhanakan kasus penggunaan yang sebelumnya memerlukan satu atau beberapa jembatan perimeter.
Untuk mempelajari cara menerapkan kebijakan traffic masuk dan keluar ke perimeter layanan, lihat Mengonfigurasi kebijakan traffic masuk dan keluar.
Anda dapat mengonfigurasi grup identitas dan identitas pihak ketiga (Pratinjau) di aturan masuk dan keluar. Untuk contoh kasus penggunaan, lihat Contoh penggunaan grup identitas dan ID pihak ketiga dalam aturan masuk dan keluar.
Untuk daftar kasus penggunaan dan contoh pertukaran data yang aman, lihat Mengamankan pertukaran data dengan aturan masuk dan keluar.
Untuk mengetahui daftar kasus penggunaan dan contoh akses kontekstual, lihat Akses kontekstual dengan aturan masuk.
Manfaat aturan masuk dan keluar
- Aturan traffic masuk dan keluar memungkinkan Anda bertukar data secara pribadi dan efisien dalam dan di seluruh organisasi menggunakan API layanan Google Cloud.
- Aturan masuk dan keluar memungkinkan Anda memberikan akses ke resource Google Cloud
dalam perimeter berdasarkan konteks permintaan API:
- Batasi jenis identitas atau identitas yang dapat digunakan dengan jaringan, alamat IP, atau perangkat sumber.
- Batasi API dan metode Google Cloud yang dapat diakses dengan jaringan sumber, alamat IP, perangkat, dan jenis identitas.
- Minimalkan risiko pemindahan data yang tidak sah dengan membatasi layanan, metode, project Google Cloud, jaringan VPC, dan identitas yang tepat yang digunakan untuk menjalankan pertukaran data.
- Berikan akses hanya baca ke set data dan gambar eksternal yang tidak dikelola oleh Anda.
- Pastikan klien di segmen dengan hak istimewa yang lebih rendah tidak memiliki akses ke resource Google Cloud di segmen dengan hak istimewa yang lebih tinggi; sekaligus mengizinkan akses ke arah lain.
- Sederhanakan konfigurasi yang sebelumnya memerlukan satu atau beberapa jembatan perimeter.
Definisi traffic masuk dan keluar
Definisi ingress dan egress tidak bergantung pada operasi yang dipanggil pada resource. Dengan demikian, definisi tersebut mengacu pada arah permintaan, bukan arah pergerakan data.
Traffic masuk: Mengacu pada akses apa pun oleh klien API dari luar perimeter layanan ke resource dalam perimeter layanan. Contoh:
- Klien Cloud Storage di luar perimeter layanan yang memanggil operasi baca, tulis, atau salin Cloud Storage pada resource Cloud Storage dalam perimeter.
Egress Mengacu pada akses apa pun yang melibatkan klien atau resource API dalam perimeter layanan dan resource di luar perimeter layanan. Contoh:
- Klien Compute Engine dalam perimeter layanan yang memanggil
operasi
create
Compute Engine dengan resource image berada di luar perimeter. - Klien Cloud Storage – dalam atau di luar perimeter – yang memanggil perintah
copy
dengan satu bucket berada dalam perimeter dan bucket lainnya berada di luarnya.
- Klien Compute Engine dalam perimeter layanan yang memanggil
operasi
Model kebijakan
Aturan masuk atau keluar terdiri dari blok from
dan to
dengan:
from
mereferensikan atribut klien API.to
mereferensikan atribut layanan dan resource Google Cloud.
Beberapa aturan masuk dan keluar dapat dikaitkan dengan perimeter layanan. Panggilan layanan Google Cloud diizinkan atau ditolak berdasarkan semantik berikut:
- Permintaan dari klien di luar perimeter ke resource Google Cloud dalam perimeter diizinkan jika kondisi aturan masuk yang diperlukan terpenuhi.
- Permintaan dari klien dalam perimeter ke resource Google Cloud di luar perimeter diizinkan jika kondisi aturan keluar yang diperlukan terpenuhi.
- Panggilan API yang melibatkan resource Google Cloud dalam perimeter dan resource Google Cloud di luar perimeter diizinkan jika ada aturan traffic masuk yang dipenuhi klien (jika klien tidak berada dalam perimeter), dan aturan traffic keluar yang dipenuhi resource eksternal.
Contoh permintaan API yang diizinkan oleh aturan traffic masuk
- Klien Cloud Storage di luar perimeter yang mendownload objek dari
bucket Cloud Storage di dalam perimeter ke mesin lokal (misalnya,
menggunakan perintah
gcloud storage cp
). - Klien BigQuery di luar perimeter menggunakan tugas BigQuery
dalam project di dalam perimeter untuk membuat kueri set data BigQuery di dalam
perimeter (misalnya menggunakan perintah
bq query
). - VM Compute Engine di jaringan VPC yang berada di luar perimeter menulis ke bucket Cloud Storage di dalam perimeter.
Contoh permintaan API yang diizinkan oleh aturan traffic keluar
- Klien Cloud Storage di dalam perimeter yang menyalin objek antara
bucket Cloud Storage di luar perimeter dan bucket di dalam
perimeter (misalnya menggunakan perintah
gcloud storage cp
).
- Klien BigQuery di dalam perimeter menggunakan tugas BigQuery
dalam project di luar perimeter untuk membuat kueri set data BigQuery di dalam
perimeter (misalnya menggunakan perintah
bq query
).
Contoh permintaan API yang diizinkan oleh kombinasi aturan masuk dan keluar
- Klien Cloud Storage di luar perimeter menyalin objek antara
bucket Cloud Storage di luar perimeter dan bucket di dalam
perimeter (misalnya menggunakan perintah
gcloud storage cp
). - Klien BigQuery di luar perimeter menggunakan tugas BigQuery dalam project di luar perimeter untuk membuat kueri set data BigQuery di dalam perimeter (misalnya, menggunakan perintah
bq query
). - Klien Compute Engine di luar perimeter yang membuat disk Compute Engine di luar perimeter menggunakan kunci Cloud KMS di dalam perimeter.
Dalam contoh BigQuery dan Compute Engine, aturan masuk tidak memadai, karena tugas BigQuery atau disk Compute Engine berada di luar perimeter. Aturan keluar diperlukan untuk mengizinkan permintaan API yang melibatkan resource Google Cloud di dalam perimeter (set data BigQuery atau kunci Cloud KMS) dan resource di luar perimeter (tugas BigQuery atau disk Compute Engine).
Permintaan API yang melibatkan beberapa perimeter layanan
Jika resource yang diakses dan/atau klien API termasuk dalam perimeter layanan
yang berbeda, kebijakan semua perimeter yang terlibat harus mengizinkan permintaan
API. Misalnya, pertimbangkan klien Cloud Storage dan bucket a
dalam
perimeter layanan A
dan bucket b
dalam perimeter layanan B
. Dalam contoh ini, agar klien Cloud Storage dapat menyalin objek dari bucket a
ke bucket b
dan dari bucket b
ke bucket a
, aturan masuk dan keluar berikut diperlukan:
- aturan traffic keluar di perimeter
A
untuk mengizinkan akses ke bucket Cloud Storageb
, - aturan traffic keluar di perimeter
B
untuk mengizinkan akses ke bucket Cloud Storagea
, - aturan masuk di perimeter
B
untuk mengizinkan akses bagi klien Cloud Storage yang berada di luar perimeterB
.
Referensi aturan masuk
Aturan traffic masuk dapat dikonfigurasi menggunakan konsol Google Cloud,
file JSON, atau file YAML. Contoh berikut menggunakan format .yaml
:
- ingressFrom: identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT *OR* identities: - PRINCIPAL_IDENTIFIER sources: - resource: RESOURCE *OR* - accessLevel: ACCESS_LEVEL ingressTo: operations: - serviceName: SERVICE methodSelectors: - method: METHOD *OR* - permission: PERMISSION resources: - projects/PROJECT
- ingressFrom:
- (Wajib) Memulai blokfrom
yang mencantumkan sumber dan identitas yang diizinkan di luar perimeter.identityType:
- (Atribut ini atau atributidentities
harus digunakan) Atribut ini menentukan jenis identitas yang dapat digunakan darisources
yang ditentukan (asal jaringan). Nilai yang dapat diterima:ANY_IDENTITY
,ANY_USER_ACCOUNT
,ANY_SERVICE_ACCOUNT
.ANY_IDENTITY
mengizinkan semua identitas.ANY_USER_ACCOUNT
mengizinkan semua pengguna manusia.ANY_SERVICE_ACCOUNT
mengizinkan semua akun layanan.Atribut ini tidak membatasi identitas berdasarkan organisasi. Misalnya,
ANY_SERVICE_ACCOUNT
mengizinkan akun layanan dari organisasi mana pun.identities:
- (Atribut ini atau atributidentityType
harus digunakan) Atribut ini memulai daftar akun layanan, akun pengguna, grup Google, atau identitas pihak ketiga yang dapat mengakses resource di perimeter.PRINCIPAL_IDENTIFIER
: Tentukan akun pengguna, akun layanan, grup Google, atau identitas pihak ketiga yang ingin Anda berikan akses ke resource di perimeter. Gunakan format yang ditentukan dalam ID Utama APIv1
IAM. Misalnya, gunakan formatgroup:GROUP_NAME@googlegroups.com
untuk menentukan grup Google.Kontrol Layanan VPC hanya mendukung identitas
v1
yang dimulai dengan awalanuser
,serviceAccount
,group
(Pratinjau),principal
(Pratinjau), danprincipalSet
(Pratinjau) di ID Utama APIv1
IAM.sources:
- (Wajib) Atribut ini merujuk pada daftar origin jaringan. Setiap nilai dalam daftar adalah level akses atau project Google Cloud. Jika Anda menetapkan atributaccessLevel
ke"*"
, kebijakan masuk akan mengizinkan akses dari asal jaringan mana pun. Jika Anda menetapkan atribut ini ke project Google Cloud, kebijakan masuk akan mengizinkan akses dari jaringan VPC yang merupakan bagian dari project.Nilai ini mungkin dihapus saat project terkait dihapus secara permanen. Namun, penghapusan nilai ini tidak menyebabkan error. Selalu periksa apakah nilai ini ada saat memecahkan masalah.
- resource:
- (Gunakan atribut ini atau atributaccessLevel
) Menentukan project atau jaringan VPC dari luar perimeter yang ingin Anda berikan akses. Untuk menentukan project, gunakan format berikut:projects/PROJECT_NUMBER
. Untuk menentukan jaringan VPC, gunakan format berikut://compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_NAME
.- accessLevel:
- (Atribut ini atau atributresource
harus digunakan) Menentukan tingkat akses dari luar perimeter tempat akses diberikan. Jika Anda menetapkan atributaccessLevel
ke"*"
, kebijakan masuk akan mengizinkan akses dari asal jaringan mana pun.ingressTo:
- (Wajib) Memulai blokto
yang mencantumkan operasi layanan yang diizinkan pada resource Google Cloud tertentu dalam perimeter.operations:
- (Wajib) Menandai awal daftar layanan dan tindakan/metode yang dapat diakses dan diizinkan untuk diakses oleh klien yang memenuhi kondisi blokfrom
.- serviceName:
- (Wajib) Kolom ini dapat berupa nama layanan yang valid atau ditetapkan ke"*"
untuk mengizinkan akses ke semua layanan. Misalnya,bigquery.googleapis.com
adalahserviceName
yang valid. Untuk daftar layanan yang tersedia, lihat Produk yang didukung.methodSelectors:
- (Wajib jikaserviceName
bukan"*"
) Awal daftar metode yang diizinkan untuk diakses oleh klien yang memenuhi kondisi blokfrom
. Untuk mengetahui daftar metode dan izin yang dapat dibatasi untuk layanan, lihat Pembatasan metode layanan yang didukung.- method:
- (Atribut ini atau atributpermission
harus digunakan) Kolom ini dapat merupakan metode layanan yang valid, atau dapat ditetapkan ke"*"
untuk mengizinkan akses ke semua metode layanan yang ditentukan.- permission:
- (Atribut ini atau atributmethod
harus digunakan) Kolom ini harus berupa izin layanan yang valid. Akses ke resource di dalam perimeter diizinkan untuk operasi yang memerlukan izin.Jika permintaan ke resource memerlukan beberapa izin, Anda harus menentukan semua izin yang diperlukan dalam operasi yang sama agar aturan masuk dapat berfungsi. Misalnya, jika permintaan ke resource BigQuery memerlukan izin
bigquery.jobs.create
danbigquery.tables.create
, Anda harus menentukan kedua izin ini dalam operasi yang sama. Selain itu, jika Anda menentukan izin beberapa kali untuk resource yang sama menggunakan konsol Google Cloud, izin tersebut tidak akan dibuat dalam operasi yang sama. Untuk menghindari masalah ini, tentukan semua izin sekaligus untuk resource.resources:
- (Wajib) Atribut ini menentukan daftar resource Google Cloud di Perimeter Layanan yang dapat diakses klien di luar perimeter. Kolom ini dapat ditetapkan ke"*"
untuk mengizinkan akses masuk ke resource Google Cloud apa pun di dalam perimeter.
Untuk membuat aturan masuk yang berfungsi, Anda harus menentukan atribut berikut:
- Atribut
sources
. Anda harus menentukanaccessLevel
atauresource
(project Google Cloud atau jaringan VPC), atau menetapkan atributaccessLevel
ke"*"
.
- Atribut
identityType
atauidentities
resources
atributserviceName
atribut
Setelah selesai mengonfigurasi file kebijakan traffic masuk, lihat Memperbarui kebijakan traffic masuk dan keluar untuk mengetahui petunjuk cara menerapkan file kebijakan traffic masuk ke perimeter layanan Anda.
Jika Anda mengonfigurasi beberapa aturan masuk di perimeter layanan, Kontrol Layanan VPC akan mengizinkan permintaan jika memenuhi kondisi salah satu aturan masuk.
Referensi aturan traffic keluar
Aturan traffic keluar dapat dikonfigurasi menggunakan konsol Google Cloud,
file JSON, atau file YAML. Contoh berikut menggunakan format .yaml
:
- egressTo: operations: - serviceName: SERVICE_NAME methodSelectors: - method: METHOD *OR* - permission: PERMISSION resources: - projects/PROJECT *OR* externalResources: - EXTERNAL_RESOURCE_PATH egressFrom: identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT *OR* identities: - PRINCIPAL_IDENTIFIER
- egressTo:
- (Wajib) Memulai blokto
yang mencantumkan operasi layanan yang diizinkan pada resource Google Cloud dalam project tertentu di luar perimeter.operations:
- (Wajib) Menandai awal daftar layanan dan tindakan/metode yang dapat diakses dan diizinkan untuk diakses oleh klien yang memenuhi kondisi blokfrom
.- serviceName:
- (Wajib) Kolom ini dapat berupa nama layanan yang valid atau ditetapkan ke"*"
untuk mengizinkan akses ke semua layanan. Untuk daftar layanan yang tersedia, lihat Produk yang didukung.methodSelectors:
- (Wajib jikaserviceName
bukan"*"
) Awal daftar metode yang diizinkan untuk diakses oleh klien yang memenuhi kondisi blokfrom
. Untuk mengetahui daftar metode dan izin yang dapat dibatasi untuk layanan, lihat Pembatasan metode layanan yang didukung.- method:
- (Atribut ini atau atributpermission
harus digunakan.) Kolom ini dapat berupa metode layanan yang valid, atau dapat ditetapkan ke"*"
untuk mengizinkan akses ke semua metode layanan yang ditentukan.- permission:
- (Atribut ini atau atributmethod
harus digunakan.) Kolom ini harus berupa izin layanan yang valid. Akses ke resource tertentu di luar perimeter diizinkan untuk operasi yang memerlukan izin ini.Jika permintaan ke resource memerlukan beberapa izin, Anda harus menentukan semua izin yang diperlukan dalam operasi yang sama agar aturan keluar dapat berfungsi. Misalnya, jika permintaan ke resource BigQuery memerlukan izin
bigquery.jobs.create
danbigquery.tables.create
, Anda harus menentukan kedua izin ini dalam operasi yang sama. Selain itu, jika Anda menentukan izin beberapa kali untuk resource yang sama menggunakan konsol Google Cloud, izin tersebut tidak akan dibuat dalam operasi yang sama. Untuk menghindari masalah ini, tentukan semua izin sekaligus untuk resource.resources:
- Atribut ini adalah daftar resource Google Cloud yang ditentukan oleh project-nya yang dapat diakses oleh klien dalam perimeter. Anda dapat menetapkan kolom ini ke"*"
untuk mengizinkan akses keluar ke resource Google Cloud mana pun.externalResources:
- Atribut ini hanya digunakan untuk menentukan resource BigQuery Omni. Atribut ini adalah daftar resource eksternal yang didukung oleh BigQuery Omni yang dapat diakses oleh klien di dalam perimeter. Anda hanya dapat menentukan resource Amazon S3 atau Azure Blob Storage. Untuk Amazon S3, format yang didukung adalahs3://BUCKET_NAME
. Untuk Azure Storage, format yang didukung adalahazure://myaccount.blob.core.windows.net/CONTAINER_NAME
.egressFrom:
- (Wajib) Memulai blokfrom
yang mencantumkan sumber dan identitas yang diizinkan dalam perimeter.identityType:
- (Atribut ini atau atributidentities
harus digunakan.) Atribut ini menentukan jenis identitas yang dapat digunakan untuk mengakses resource tertentu di luar perimeter. Nilai yang dapat diterima:ANY_IDENTITY
,ANY_USER_ACCOUNT
,ANY_SERVICE_ACCOUNT
.ANY_IDENTITY
mengizinkan semua identitas.ANY_USER_ACCOUNT
mengizinkan semua pengguna manusia.ANY_SERVICE_ACCOUNT
mengizinkan semua akun layanan.Atribut ini tidak membatasi identitas berdasarkan organisasi. Misalnya,
ANY_SERVICE_ACCOUNT
mengizinkan akun layanan dari organisasi mana pun.identities:
- (Atribut ini atau atributidentityType
harus digunakan.) Atribut ini memulai daftar akun layanan, akun pengguna, grup Google, atau identitas pihak ketiga yang dapat mengakses resource yang ditentukan di luar perimeter.PRINCIPAL_IDENTIFIER
: Tentukan akun pengguna, akun layanan, grup Google, atau identitas pihak ketiga yang dapat mengakses resource yang ditentukan di luar perimeter. Gunakan format yang ditentukan dalam ID Utama APIv1
IAM. Misalnya, gunakan formatgroup:GROUP_NAME@googlegroups.com
untuk menentukan grup Google.Kontrol Layanan VPC hanya mendukung identitas
v1
yang dimulai dengan awalanuser
,serviceAccount
,group
(Pratinjau),principal
(Pratinjau), danprincipalSet
(Pratinjau) di ID Utama APIv1
IAM.
Setelah selesai mengonfigurasi file kebijakan traffic keluar, lihat Memperbarui kebijakan traffic masuk dan keluar untuk mengetahui petunjuk cara menerapkan file kebijakan traffic keluar ke perimeter layanan Anda.
Jika Anda mengonfigurasi beberapa aturan keluar di perimeter layanan, Kontrol Layanan VPC akan mengizinkan permintaan jika memenuhi kondisi salah satu aturan keluar.
Menggunakan mode uji coba untuk menguji kebijakan masuk/keluar
Jika Anda tidak ingin memberikan akses ke semua metode layanan, terkadang sulit untuk menentukan daftar metode yang tepat untuk diizinkan. Hal ini dapat terjadi karena metode tertentu untuk layanan dapat menyebabkan metode yang berbeda dipanggil di layanan Google Cloud terpisah. Misalnya, BigQuery memuat tabel dari bucket Cloud Storage untuk menjalankan kueri.
Untuk menentukan kumpulan metode yang benar untuk diizinkan, Anda dapat menggunakan Mode uji coba Kontrol Layanan VPC. Lakukan hal ini dengan mengaktifkan perimeter terlebih dahulu dalam mode uji coba tanpa kebijakan masuk atau keluar, dan kumpulkan daftar metode yang dipanggil dari log audit. Kemudian, tambahkan metode ini secara bertahap ke kebijakan masuk/keluar dalam mode uji coba hingga semua pelanggaran berhenti. Pada saat itu, konfigurasi dapat dipindahkan dari mode uji coba ke mode yang diterapkan.
Fitur yang tidak didukung
Fitur berikut saat ini tidak didukung untuk aturan masuk dan keluar:
- Mengidentifikasi resource Google Cloud berdasarkan label, bukan project.
- Tidak semua layanan mendukung aturan masuk/keluar per metode. Lihat Pembatasan metode layanan yang didukung.
- Jenis identitas
ANY_SERVICE_ACCOUNT
danANY_USER_ACCOUNT
tidak dapat digunakan untuk mengizinkan operasi berikut:- Semua operasi Container Registry.
- Semua operasi layanan notebooks.googleapis.com.
- Operasi Cloud Storage menggunakan URL Bertanda Tangan.
- Dengan fungsi Cloud Run, deployment Cloud Function dari komputer lokal.
- Mengekspor log dari sink Cloud Logging ke resource Cloud Storage.
- Semua operasi antarmuka pengguna web Apache Airflow di Cloud Composer.
Batasan
Untuk mengetahui informasi tentang batas traffic masuk dan keluar, lihat Kuota dan batas.
Langkah selanjutnya
- Selesaikan codelab ini untuk mempelajari cara memperbaiki pelanggaran traffic masuk dan keluar.