Aturan traffic masuk dan keluar

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 serta klien yang dilindungi oleh perimeter layanan.

Blok aturan ingress dan outress menentukan arah akses yang diizinkan ke dan dari berbagai ID dan resource. Aturan traffic masuk dan keluar dapat mengganti dan menyederhanakan kasus penggunaan yang sebelumnya memerlukan satu atau beberapa perimeter perimeter.

Untuk mempelajari cara menerapkan kebijakan masuk dan keluar ke perimeter layanan Anda, lihat Mengonfigurasi kebijakan masuk dan keluar.

Untuk mengetahui 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

  1. Dengan aturan traffic masuk dan keluar, Anda dapat bertukar data secara pribadi dan efisien di dalam dan lintas organisasi menggunakan API layanan Google Cloud.
  2. Dengan aturan traffic masuk dan keluar, Anda dapat memberikan akses ke resource Google Cloud dalam perimeter berdasarkan konteks permintaan API:
    1. Membatasi jenis identitas atau identitas yang dapat digunakan berdasarkan jaringan sumber, alamat IP, atau perangkat.
    2. Membatasi Google Cloud API dan metode yang dapat diakses berdasarkan jaringan sumber, alamat IP, perangkat, dan jenis identitas.
  3. Minimalkan risiko pemindahan yang tidak sah dengan membatasi layanan, metode, project Google Cloud, jaringan VPC, dan identitas yang sama persis yang digunakan untuk menjalankan pertukaran data.
  4. Berikan akses hanya baca ke set data dan gambar eksternal yang tidak Anda kelola.
  5. Pastikan klien dalam segmen yang kurang istimewa tidak memiliki akses ke resource Google Cloud di segmen yang lebih istimewa; sambil mengizinkan akses ke arah sebaliknya.
  6. Menyederhanakan konfigurasi yang sebelumnya memerlukan satu atau beberapa perimeter jembatan.

Definisi masuk dan keluar

Definisi traffic masuk dan keluar tidak bergantung pada operasi yang dipanggil pada resource. Dengan demikian, definisi tersebut merujuk pada arah permintaan, bukan arah perpindahan data.

  • Ingress: Mengacu pada semua akses yang dilakukan klien API dari luar perimeter layanan ke resource di dalam perimeter layanan. Contoh:

    • Klien Cloud Storage di luar perimeter layanan yang memanggil operasi baca, tulis, atau salin Cloud Storage di resource Cloud Storage di dalam perimeter.
  • Traffic keluar Mengacu pada semua akses yang melibatkan klien API atau resource di dalam perimeter layanan dan resource di luar perimeter layanan. Contoh:

    • Klien Compute Engine dalam perimeter layanan yang memanggil operasi create Compute Engine dengan resource gambar berada di luar perimeter.
    • Klien Cloud Storage – di dalam atau di luar perimeter – yang memanggil perintah copy dengan satu bucket berada di dalam perimeter dan bucket lainnya berada di luar perimeter.

Model kebijakan

Aturan masuk atau keluar terdiri dari blok from dan to dengan:

  • from mereferensikan atribut klien API.
  • to merujuk pada atribut resource dan layanan 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 di dalam perimeter diizinkan jika kondisi aturan ingress 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 masuk yang dipenuhi klien (jika klien tidak berada dalam perimeter), dan aturan keluar yang terpenuhi oleh resource eksternal.

Contoh permintaan API yang diizinkan oleh aturan masuk

  • Klien Cloud Storage di luar perimeter yang mendownload objek dari bucket Cloud Storage di dalam perimeter ke mesin lokal (misalnya, menggunakan perintah gsutil cp).
  • Klien BigQuery di luar perimeter menggunakan tugas BigQuery dalam project di dalam perimeter untuk mengkueri 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 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 gsutil cp).
  • Klien BigQuery di dalam perimeter menggunakan tugas BigQuery dalam project di luar perimeter untuk mengkueri set data BigQuery di dalam perimeter (misalnya, menggunakan perintah bq query).

Contoh permintaan API yang diizinkan dengan kombinasi aturan masuk dan keluar

  • Klien Cloud Storage di luar perimeter yang menyalin objek antara bucket Cloud Storage di luar perimeter dan bucket di dalam perimeter (misalnya menggunakan perintah gsutil cp).
  • Klien BigQuery di luar perimeter menggunakan tugas BigQuery dalam project di luar perimeter untuk mengkueri 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 ingress 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 dari semua perimeter yang terlibat harus mengizinkan permintaan API. Misalnya, pertimbangkan klien Cloud Storage dan a bucket 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 keluar dalam perimeter A untuk mengizinkan akses ke bucket Cloud Storage b ,
  • aturan traffic keluar dalam perimeter B untuk mengizinkan akses ke bucket Cloud Storage a,
  • aturan masuk dalam perimeter B untuk mengizinkan akses bagi klien Cloud Storage yang berada di luar perimeter B.

Referensi aturan masuk

Aturan 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:
    - serviceAccount:service-account
    - user:user-account
    sources:
    - resource: resource
      *OR*
    - accessLevel: access-level
  ingressTo:
    operations:
    - serviceName: service
      methodSelectors:
      - method: method
      *OR*
      - permission: permission
    resources:
    - projects/project
  • - ingressFrom: - (Wajib) Memulai blok from yang mencantumkan sumber dan identitas yang diizinkan di luar perimeter.

  • identityType: - (Atribut ini atau atribut identities harus digunakan) Atribut ini menentukan jenis identitas yang dapat digunakan dari sources yang ditentukan (asal jaringan). Nilai yang dapat diterima: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY memungkinkan semua identitas. ANY_USER_ACCOUNT mengizinkan semua pengguna manusia. ANY_SERVICE_ACCOUNT mengizinkan semua akun layanan.

  • identities: - (Atribut ini atau atribut identityType harus digunakan) Atribut ini memulai daftar akun layanan atau akun pengguna yang dapat mengakses resource dalam perimeter. Traffic masuk oleh identitas workload identity federation tidak didukung.

  • serviceAccount - Akun layanan yang diberi akses ke resource di perimeter.

  • user - Akun pengguna yang diberi akses ke resource di perimeter.

  • sources: - (Wajib) Atribut ini merujuk pada daftar origin jaringan. Setiap nilai dalam daftar adalah tingkat akses atau project Google Cloud. Jika Anda menetapkan atribut accessLevel ke \"*\", kebijakan ingress akan mengizinkan akses dari asal jaringan mana pun. Jika Anda menetapkan atribut ini ke project Google Cloud, kebijakan traffic masuk akan mengizinkan akses dari jaringan VPC yang menjadi bagian dari project tersebut.

  • - resource: - (Gunakan atribut ini atau atribut accessLevel) Menentukan project atau jaringan VPC dari luar perimeter yang ingin Anda beri 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 atribut resource harus digunakan) Menentukan tingkat akses dari luar perimeter yang memberikan akses. Jika Anda menetapkan atribut accessLevel ke \"*\", kebijakan ingress akan mengizinkan akses dari asal jaringan mana pun.

  • ingressTo: - (Wajib) Memulai blok to 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 yang diizinkan untuk diakses oleh klien yang memenuhi kondisi blok from.

  • - serviceName: - (Wajib) Kolom ini dapat berupa nama layanan yang valid atau ditetapkan ke \"*\" untuk mengizinkan akses ke semua layanan. Misalnya, bigquery.googleapis.com adalah serviceName yang valid. Untuk daftar layanan yang tersedia, lihat Produk yang didukung.

  • methodSelectors: - (Wajib jika serviceName bukan \"*\") Awal daftar metode yang memenuhi syarat blok from diizinkan untuk diakses oleh klien. Untuk daftar metode dan izin yang dapat dibatasi untuk layanan, lihat Pembatasan metode layanan yang didukung.

  • - method: - (Atribut ini atau atribut permission 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 atribut method harus digunakan) Kolom ini harus merupakan izin layanan yang valid. Akses ke resource di dalam perimeter diperbolehkan 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 dan bigquery.tables.create, Anda harus menentukan kedua izin ini dengan operasi yang sama. Selain itu, jika Anda menentukan izin beberapa kali untuk resource yang sama dengan menggunakan Konsol Google Cloud, izin tidak akan dibuat dalam operasi yang sama. Untuk menghindari masalah ini, tentukan semua izin sekaligus untuk resource tersebut.

  • resources: - (Wajib) Atribut ini menentukan daftar resource Google Cloud dalam Perimeter Layanan yang dapat diakses oleh klien di luar perimeter. Kolom ini dapat ditetapkan ke \"*\" untuk mengizinkan akses masuk ke resource Google Cloud mana pun di dalam perimeter.

Untuk membuat aturan masuk yang berfungsi, Anda harus menentukan atribut berikut:

  • Atribut sources. Anda harus menentukan accessLevel atau resource (project Google Cloud atau jaringan VPC), atau menetapkan atribut accessLevel ke \"*\".
  • Atribut identityType atau identities
  • resources atribut
  • serviceName atribut

Setelah selesai mengonfigurasi file kebijakan masuk dan keluar, lihat artikel Memperbarui kebijakan masuk dan keluar untuk mengetahui petunjuk cara menerapkan file kebijakan masuk ke perimeter layanan Anda.

Referensi aturan keluar

Aturan 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:
    - serviceAccount:service-account
    - user:user-account
  • - egressTo: - (Wajib) Memulai blok to yang mencantumkan operasi layanan yang diizinkan di resource Google Cloud dalam project tertentu di luar perimeter.

  • operations: - (Wajib) Menandai awal daftar layanan dan tindakan/metode yang dapat diakses yang diizinkan untuk diakses oleh klien yang memenuhi kondisi blok from.

  • - 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 jika serviceName bukan \"*\") Awal daftar metode yang memenuhi syarat blok from diizinkan untuk diakses oleh klien. Untuk daftar metode dan izin yang dapat dibatasi untuk layanan, lihat Pembatasan metode layanan yang didukung.

  • - method: - (Atribut ini atau atribut permission 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 atribut method harus digunakan.) Kolom ini harus berupa izin layanan yang valid. Akses ke resource yang ditentukan 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 dan bigquery.tables.create, Anda harus menentukan kedua izin ini dengan operasi yang sama. Selain itu, jika Anda menentukan izin beberapa kali untuk resource yang sama dengan menggunakan Konsol Google Cloud, izin tidak akan dibuat dalam operasi yang sama. Untuk menghindari masalah ini, tentukan semua izin sekaligus untuk resource tersebut.

  • resources: - Atribut ini adalah daftar resource Google Cloud yang ditentukan oleh project-nya yang dapat diakses oleh klien di dalam perimeter. Anda dapat menetapkan kolom ini ke \"*\" untuk mengizinkan akses keluar ke resource Google Cloud apa pun.

  • externalResources: - Atribut ini hanya digunakan untuk menentukan resource BigQuery Omni. Atribut ini merupakan 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 adalah s3://BUCKET_NAME. Untuk Azure Storage, format yang didukung adalah azure://myaccount.blob.core.windows.net/CONTAINER_NAME.

  • egressFrom: - (Wajib) Memulai blok from yang mencantumkan sumber dan identitas yang diizinkan dalam perimeter.

  • identityType: - (Atribut ini atau atribut identities 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 memungkinkan semua identitas. ANY_USER_ACCOUNT mengizinkan semua pengguna manusia. ANY_SERVICE_ACCOUNT mengizinkan semua akun layanan.

  • identities: - (Atribut ini atau atribut identityType harus digunakan.) Atribut ini memulai daftar akun layanan atau akun pengguna yang dapat mengakses resource yang ditentukan di luar perimeter. Traffic keluar oleh identitas workload identity federation tidak didukung.

  • serviceAccount - Akun layanan yang dapat mengakses resource yang ditentukan di luar perimeter.

  • user - Akun pengguna yang dapat mengakses resource yang ditentukan di luar perimeter.

Setelah selesai mengonfigurasi file kebijakan keluar, lihat artikel Memperbarui kebijakan traffic masuk dan keluar untuk mengetahui petunjuk cara menerapkan file kebijakan keluar ke perimeter layanan Anda.

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 persis yang diizinkan. Hal ini dapat terjadi karena metode tertentu untuk suatu layanan dapat menyebabkan metode yang berbeda dipanggil pada layanan Google Cloud yang terpisah. Misalnya, BigQuery yang memuat tabel dari bucket Cloud Storage untuk menjalankan kueri.

Untuk menentukan serangkaian metode yang tepat untuk diizinkan, Anda dapat menggunakan Mode Dry-run Kontrol Layanan VPC. Lakukan hal ini dengan terlebih dahulu mengaktifkan perimeter dalam mode uji coba tanpa kebijakan traffic masuk atau keluar, dan mengumpulkan daftar metode yang dipanggil dari log audit. Kemudian, secara bertahap tambahkan metode ini ke kebijakan masuk/keluar dalam mode uji coba hingga semua pelanggaran berhenti. Pada saat itu, konfigurasi dapat dipindahkan dari mode uji coba ke mode diterapkan.

Fitur yang tidak didukung

Fitur berikut saat ini tidak didukung untuk aturan masuk dan keluar:

  1. Mengidentifikasi resource Google Cloud berdasarkan label, bukan project.
  2. Menentukan grup di kolom identities dari aturan from masuk/keluar.
  3. Tidak semua layanan mendukung aturan masuk/keluar per metode. Lihat Batasan metode layanan yang didukung.
  4. Jenis identitas ANY_SERVICE_ACCOUNT dan ANY_USER_ACCOUNT tidak dapat digunakan untuk mengizinkan operasi berikut:

Batasan

Untuk informasi tentang batas masuk dan keluar, lihat Kuota dan batas.