Menggunakan aturan firewall VPC

Halaman ini berisi penjelasan mengenai perintah untuk menggunakan aturan firewall Virtual Private Cloud (VPC) dan menawarkan beberapa contoh cara penggunaannya. Dengan aturan firewall VPC, Anda dapat mengizinkan atau menolak traffic ke atau dari instance virtual machine (VM) di jaringan VPC berdasarkan nomor port, tag, atau protokol.

Sebelum memulai

Untuk mempelajari lebih lanjut aturan firewall VPC, seperti aturan tersirat dan aturan yang dibuat sistem untuk jaringan default, lihat Aturan firewall VPC.

Sebelum mengonfigurasi aturan firewall, tinjau komponen aturan firewall untuk memahami komponen firewall seperti yang digunakan di Google Cloud.

Membuat aturan firewall VPC

Aturan firewall VPC ditentukan di level jaringan, dan hanya berlaku untuk jaringan tempat aturan tersebut dibuat. Namun, nama yang Anda pilih untuk setiap aturan tersebut harus unik untuk project.

Aturan firewall dapat berisi rentang IPv4 atau IPv6, tetapi tidak keduanya.

Saat membuat aturan firewall, Anda dapat memilih untuk mengaktifkan Logging Aturan Firewall. Jika mengaktifkan logging, Anda dapat menghilangkan kolom metadata untuk menghemat biaya penyimpanan. Untuk mengetahui informasi lebih lanjut, lihat Menggunakan Logging Aturan Firewall.

Jika Anda ingin menentukan beberapa akun layanan untuk kolom akun layanan target atau sumber, gunakan Google Cloud CLI, API, atau library klien.

Jaringan default menyediakan aturan firewall otomatis pada waktu pembuatan. Dengan jaringan mode otomatis dan kustom, Anda dapat membuat firewall serupa dengan mudah selama pembuatan jaringan jika menggunakan konsol Google Cloud. Jika Anda menggunakan gcloud CLI atau API dan ingin membuat aturan firewall yang serupa dengan aturan yang disediakan jaringan default, lihat Mengonfigurasi aturan firewall untuk kasus penggunaan umum.

Konsol

  1. Di Konsol Google Cloud, buka halaman Firewall policies.

    Buka Kebijakan firewall

  2. Klik Create firewall rule.

  3. Masukkan Name untuk aturan firewall.

    Nama ini harus unik untuk project.

  4. (Opsional) Anda dapat mengaktifkan logging aturan firewall:

    • Klik Logs > Aktif.
    • Untuk menghilangkan metadata, klik Show logs details, lalu hapus centang Include metadata.
  5. Tentukan Network untuk aturan firewall.

  6. Tentukan Prioritas aturan.

    Semakin rendah angkanya, semakin tinggi prioritasnya.

  7. Untuk Arah traffic, pilih traffic masuk atau keluar.

  8. Untuk Tindakan pada kecocokan, pilih izinkan atau tolak.

  9. Tentukan Targets aturan.

    • Jika Anda ingin aturan tersebut berlaku untuk semua instance dalam jaringan, pilih Semua instance dalam jaringan.
    • Jika Anda ingin aturan diterapkan ke instance yang dipilih berdasarkan tag jaringan (target), pilih Specified target tags, lalu di kolom Target tags, ketik tag yang harus diterapkan aturan tersebut.
    • Jika Anda ingin aturan tersebut diterapkan ke instance yang dipilih berdasarkan akun layanan terkait, pilih Specified service account, tunjukkan apakah akun layanan tersebut berada dalam project saat ini atau di project lain dalam Service account scope, lalu di kolom Target service account, pilih atau ketik nama akun layanan.
  10. Untuk aturan masuk, tentukan Source filter:

    • Untuk memfilter traffic masuk menurut rentang IPv4 sumber, pilih IPv4 ranges, lalu masukkan blok CIDR ke kolom Source IPv4 ranges. Gunakan 0.0.0.0/0 untuk sumber IPv4 apa pun.
    • Untuk memfilter traffic masuk menurut rentang IPv6 sumber, pilih IPv6 ranges, lalu masukkan blok CIDR ke kolom Source IPv6 ranges. Gunakan ::/0 untuk sumber IPv6 apa pun.
    • Untuk memfilter traffic masuk menurut tag jaringan, pilih Source tags, lalu ketik tag jaringan ke kolom Source tags. Untuk batas jumlah tag sumber, lihat Batas per jaringan. Pemfilteran menurut tag sumber hanya tersedia jika target tidak ditentukan oleh akun layanan. Untuk informasi selengkapnya, lihat memfilter berdasarkan akun layanan versus tag jaringan.
    • Untuk memfilter traffic masuk berdasarkan akun layanan, pilih Akun layanan, tunjukkan apakah akun layanan ada dalam project saat ini atau dalam project lain dalam Cakupan akun layanan, lalu pilih atau ketik nama akun layanan di kolom Akun layanan sumber. Pemfilteran menurut akun layanan sumber hanya tersedia jika target tidak ditentukan oleh tag jaringan. Untuk informasi selengkapnya, lihat memfilter berdasarkan akun layanan versus tag jaringan.
    • Tentukan Filter sumber kedua jika diinginkan. Filter sumber sekunder tidak dapat menggunakan kriteria filter yang sama dengan filter utama. Rentang IP sumber dapat digunakan bersama dengan Tag sumber atau Akun layanan sumber. Set sumber yang efektif adalah gabungan alamat IP rentang sumber dan instance yang diidentifikasi oleh tag jaringan atau akun layanan. Artinya, jika rentang IP sumber, atau tag sumber (atau akun layanan sumber) cocok dengan kriteria filter, sumber akan disertakan dalam set sumber yang efektif.
    • Tag sumber dan Akun layanan sumber tidak dapat digunakan bersama.
  11. Untuk aturan masuk, tentukan Filter tujuan:

    • Untuk memfilter traffic masuk menurut rentang IPv4 tujuan, pilih IPv4 ranges dan masukkan blok CIDR ke kolom Destination IPv4 ranges. Gunakan 0.0.0.0/0 untuk tujuan IPv4 apa pun.
    • Untuk memfilter traffic masuk menurut rentang IPv6 tujuan, pilih IPv6 ranges dan masukkan blok CIDR ke kolom Destination IPv6 ranges. Gunakan ::/0 untuk tujuan IPv6 apa pun. Untuk informasi selengkapnya, lihat Tujuan untuk aturan masuk.
  12. Untuk aturan keluar, tentukan Filter tujuan:

    • Untuk memfilter traffic keluar menurut rentang IPv4 tujuan, pilih IPv4 ranges dan masukkan blok CIDR ke kolom Destination IPv4 ranges. Gunakan 0.0.0.0/0 untuk tujuan IPv4 apa pun.
    • Untuk memfilter traffic keluar menurut rentang IPv6 tujuan, pilih IPv6 ranges dan masukkan blok CIDR ke kolom Destination IPv6 ranges. Gunakan ::/0 untuk tujuan IPv6 apa pun.
  13. Untuk aturan keluar, tentukan Source filter:

    • Untuk memfilter traffic keluar menurut rentang IPv4 sumber, pilih IPv4 ranges dan masukkan blok CIDR ke kolom Source IPv4 ranges. Gunakan 0.0.0.0/0 untuk sumber IPv4 apa pun.
    • Untuk memfilter traffic keluar menurut rentang IPv6 sumber, pilih IPv6 ranges dan masukkan blok CIDR ke kolom Source IPv6 ranges. Gunakan ::/0 untuk tujuan IPv6 apa pun. Untuk informasi selengkapnya, lihat Sumber untuk aturan traffic keluar.
  14. Tentukan Protokol dan port tempat aturan diterapkan:

    • Agar aturan ini diterapkan ke semua protokol dan port tujuan, pilih Allow all atau Deny all, bergantung pada tindakannya.
    • Untuk menentukan protokol dan port tujuan tertentu, pilih Specified protocols and ports:

      • Pilih TCP untuk menyertakan protokol TCP dan port tujuan. Masukkan all atau daftar port tujuan yang dipisahkan koma, seperti 20-22, 80, 8080.
      • Pilih UDP untuk menyertakan protokol UDP dan port tujuan. Masukkan all atau daftar port tujuan yang dipisahkan koma, seperti 67-69, 123.
      • Pilih Other untuk menyertakan protokol seperti icmp, sctp, atau nomor protokol. Misalnya, gunakan icmp atau nomor protokol 1 untuk ICMP IPv4. Gunakan nomor protokol 58 untuk ICMP IPv6.

        Untuk informasi selengkapnya, lihat protokol dan port tujuan.

  15. (Opsional) Anda dapat membuat aturan firewall, tetapi tidak dapat menerapkannya dengan menyetel status penerapannya ke dinonaktifkan. Klik Disable rule, lalu pilih Disabled.

  16. Klik Create.

gcloud

Untuk membuat aturan firewall VPC, gunakan perintah gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    [--network NETWORK; default="default"] \
    [--priority PRIORITY;default=1000] \
    [--direction (ingress|egress|in|out); default="ingress"] \
    [--action (deny | allow )] \
    [--target-tags TAG[,TAG,...]] \
    [--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--source-tags TAG,TAG,] \
    [--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
    [--disabled | --no-disabled] \
    [--enable-logging | --no-enable-logging] \
    [--logging-metadata LOGGING_METADATA]

Gunakan parameter sebagai berikut. Detail selengkapnya tentang setiap fitur tersedia dalam dokumentasi referensi SDK.

  • --network Jaringan untuk aturan. Jika dihilangkan, aturan akan dibuat di jaringan default. Jika tidak memiliki jaringan default atau ingin membuat aturan di jaringan tertentu, Anda harus menggunakan kolom ini.
  • --priority Nilai numerik yang menunjukkan prioritas untuk aturan tersebut. Semakin rendah angkanya, semakin tinggi prioritasnya.
  • --direction Arah traffic, ingress atau egress.
  • --action Tindakan pada kecocokan, baik allow maupun deny. Harus digunakan dengan flag --rules.
  • Tentukan target menggunakan salah satu cara berikut:
    • Hapus --target-tags dan --target-service-accounts jika aturan harus diterapkan ke semua target di jaringan.
    • Gunakan flag --target-tags untuk menentukan target menurut tag jaringan.
    • Gunakan flag --target-service-accounts untuk menentukan target oleh akun layanan terkait.
  • Untuk aturan masuknya, guna menyaring tujuan lebih lanjut, gunakan --destination-ranges untuk menentukan rentang alamat IPv4 atau IPv6 dalam format CIDR. Jika --destination-ranges dihilangkan, tujuan masuknya adalah alamat IPv4 apa pun, 0.0.0.0/0. Untuk mengetahui informasi selengkapnya, lihat Tujuan untuk aturan masuk serta Alamat IP dan target untuk aturan masuk.

  • Untuk aturan masuk, tentukan source:

    • --source-ranges Gunakan flag ini untuk menentukan rentang alamat IPv4 atau IPv6 sumber dalam format CIDR.
    • Jika --source-ranges, source-tags, dan --source-service-accounts dihilangkan, sumber masuknya adalah alamat IPv4 apa pun, 0.0.0.0/0.
    • --source-tags Gunakan tanda ini untuk menentukan instance sumber berdasarkan tag jaringan. Pemfilteran menurut tag sumber hanya tersedia jika target tidak ditentukan oleh akun layanan. Untuk informasi selengkapnya, lihat memfilter berdasarkan akun layanan versus tag jaringan.
    • --source-ranges dan --source-tags dapat digunakan bersama. Jika keduanya ditentukan, set sumber yang efektif adalah gabungan alamat IP rentang sumber dan instance yang diidentifikasi oleh tag jaringan, meskipun instance yang diberi tag tidak memiliki IP dalam rentang sumber.
    • --source-service-accounts Gunakan tanda ini untuk menentukan instance berdasarkan akun layanan yang digunakannya. Pemfilteran menurut akun layanan sumber hanya tersedia jika target tidak ditentukan oleh tag jaringan. Untuk informasi selengkapnya, lihat memfilter berdasarkan akun layanan versus tag jaringan. --source-ranges dan --source-service-accounts dapat digunakan bersama. Jika keduanya ditentukan, set sumber yang efektif adalah gabungan alamat IP rentang sumber dan instance yang diidentifikasi oleh akun layanan sumber, meskipun instance yang diidentifikasi oleh akun layanan sumber tidak memiliki IP dalam rentang sumber.
  • Untuk aturan traffic keluar, guna lebih menyaring sumber, gunakan --source-ranges untuk
    menentukan rentang alamat IPv4 atau IPv6 dalam format CIDR. Jika --source-ranges dihilangkan, sumber traffic keluar adalah semua alamat IPv4, 0.0.0.0/0. Untuk mengetahui informasi selengkapnya, lihat Sumber untuk aturan keluar serta Alamat target dan IP untuk aturan keluar.

  • Untuk aturan keluar, tentukan destination:

    • --destination-ranges Gunakan flag ini untuk menentukan rentang alamat IPv4 atau IPv6 tujuan dalam format CIDR.
    • Jika --destination-ranges dihilangkan, tujuan keluar adalah alamat IPv4 apa pun, 0.0.0.0/0.
  • --rules Daftar protokol dan port tujuan tempat aturan berlaku. Gunakan all untuk membuat aturan berlaku untuk semua protokol dan semua port tujuan. Memerlukan flag --action.

  • Secara default, aturan firewall dibuat dan diterapkan secara otomatis, tetapi perilaku ini dapat diubah.

    • Jika --disabled dan --no-disabled dihilangkan, aturan firewall akan dibuat dan diterapkan.
    • --disabled Tambahkan flag ini untuk membuat aturan firewall, tetapi tidak menerapkannya. Aturan firewall akan tetap nonaktif hingga Anda mengupdate aturan firewall untuk mengaktifkannya.
    • --no-disabled Tambahkan flag ini untuk memastikan aturan firewall diterapkan.
  • --enable-logging | --no-enable-logging Anda dapat mengaktifkan Logging Aturan Firewall untuk aturan saat Anda membuat atau memperbaruinya. Firewall Rules Logging memungkinkan Anda mengaudit, memverifikasi, dan menganalisis efek aturan firewall Anda. Lihat Firewall Rules Logging untuk mengetahui detailnya.

    • --logging-metadata Jika Anda mengaktifkan logging, secara default, Firewall Rules Logging akan menyertakan kolom dasar dan metadata. Anda dapat menghilangkan kolom metadata untuk menghemat biaya penyimpanan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Logging Aturan Firewall.

Terraform

Untuk membuat aturan firewall, Anda dapat menggunakan resource google_compute_firewall.

resource "google_compute_firewall" "rules" {
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  allow {
    protocol = "tcp"
    ports    = ["80", "443"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["web"]
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

API

Membuat aturan firewall VPC.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "name": "RULE_NAME",
  "network": "projects/PROJECT-ID/global/networks/NETWORK",
  ... other fields
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • NETWORK: nama jaringan VPC tempat aturan firewall dibuat.
  • RULE_NAME: nama aturan firewall.

  • Untuk aturan firewall masuk, tentukan sumber dan tujuan masuk:

    • Gunakan kolom sourceRanges, sourceTags, atau sourceServiceAccounts untuk menentukan sumber masuk.

    • sourceRanges dapat berupa rentang IPv4 atau IPv6, tetapi bukan kombinasi keduanya. Untuk menggunakan rentang 0.0.0.0/0, jangan tentukan kolom apa pun.

    • Anda tidak dapat menggunakan kolom sourceTags dan sourceServiceAccounts bersama-sama. Namun, Anda dapat menggunakan sourceRanges dengan sourceTags atau sourceServiceAccounts. Jika Anda melakukannya, koneksi hanya perlu cocok dengan salah satunya agar aturan firewall dapat diterapkan.

    • Untuk kolom target, jika menggunakan kolom sourceTags, Anda tidak dapat menggunakan kolom targetServiceAccounts. Anda harus menggunakan kolom targetTags atau tanpa kolom target. Demikian pula, jika menggunakan kolom sourceServiceAccounts, Anda tidak dapat menggunakan kolom targetTags. Jika Anda tidak menentukan kolom target, aturan akan diterapkan ke semua target dalam jaringan.

    • Gunakan kolom destinationRanges untuk menentukan tujuan masuk. destinationRanges dapat berupa rentang IPv4 atau IPv6, tetapi bukan kombinasi keduanya.
      Jika Anda tidak menentukan tujuan, Google Cloud akan menggunakan 0.0.0.0/0. Untuk mengetahui informasi selengkapnya, lihat Tujuan untuk aturan masuk serta Target dan alamat IP untuk aturan masuk.

  • Untuk aturan firewall keluar, tentukan sumber dan tujuan traffic keluar:

    • Gunakan kolom sourceRanges untuk menentukan sumber traffic keluar. sourceRange dapat berupa rentang IPv4 atau IPv6, tetapi bukan kombinasi keduanya.
      Jika Anda tidak menentukan sumber, Google Cloud akan menggunakan 0.0.0.0/0. Untuk mengetahui informasi selengkapnya, lihat Sumber untuk aturan keluar serta Alamat target dan IP untuk aturan keluar.

    • Gunakan kolom destinationRanges untuk menentukan tujuan. destinationRanges dapat berupa rentang IPv4 atau IPv6, tetapi bukan kombinasi dari keduanya.
      Jika Anda tidak menentukan tujuan, Google Cloud akan menggunakan 0.0.0.0/0. Gunakan kolom targetTags atau targetServiceAccounts untuk menentukan target tempat aturan diterapkan. Jika Anda tidak menentukan kolom target, aturan akan diterapkan ke semua target dalam jaringan.

Untuk informasi selengkapnya dan deskripsi untuk setiap kolom, lihat metode firewalls.insert.

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class CreateFirewallRuleAsyncSample
{
    public async Task CreateFirewallRuleAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string firewallRuleName = "my-test-firewall-rule",
        // Name of the network the rule will be applied to. Some available name formats:
        // projects/{project_id}/global/networks/{network}
        // global/networks/{network}
        string networkName = "global/networks/default")
    {
        Firewall firewallRule = new Firewall
        {
            Name = firewallRuleName,
            Network = networkName,
            Direction = ComputeEnumConstants.Firewall.Direction.Ingress,
            Allowed =
            {
                new Allowed
                {
                    Ports = { "80", "443" },
                    IPProtocol = "tcp"
                }
            },
            TargetTags = { "web" },
            Description = "Allows TCP traffic on port 80 and 443 from anywhere."
        };

        // Note that the default value of priority for the firewall API is 1000.
        // If you check the value of firewallRule.Priority at this point it
        // will be equal to 0, however it is not treated as "set" by the library, and thus
        // the default will be applied to the new rule. If you want to create a rule that
        // has priority == 0, you'll need to explicitly set it: firewallRule.Priority = 0.
        // You can use the firewallRule.HasPriority property to check if the priority has been set.
        // You can use the firewallRule.ClearPriority() method to unset the priority.

        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        FirewallsClient client = await FirewallsClient.CreateAsync();

        // Create the firewall rule in the specified project.
        var firewallRuleCreation = await client.InsertAsync(projectId, firewallRule);

        // Wait for the operation to complete using client-side polling.
        await firewallRuleCreation.PollUntilCompletedAsync();
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// createFirewallRule creates a firewall rule allowing for incoming HTTP and HTTPS access from the entire Internet.
func createFirewallRule(w io.Writer, projectID, firewallRuleName, networkName string) error {
	// projectID := "your_project_id"
	// firewallRuleName := "europe-central2-b"
	// networkName := "global/networks/default"

	ctx := context.Background()
	firewallsClient, err := compute.NewFirewallsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer firewallsClient.Close()

	firewallRule := &computepb.Firewall{
		Allowed: []*computepb.Allowed{
			{
				IPProtocol: proto.String("tcp"),
				Ports:      []string{"80", "443"},
			},
		},
		Direction: proto.String(computepb.Firewall_INGRESS.String()),
		Name:      &firewallRuleName,
		TargetTags: []string{
			"web",
		},
		Network:     &networkName,
		Description: proto.String("Allowing TCP traffic on port 80 and 443 from Internet."),
	}

	// Note that the default value of priority for the firewall API is 1000.
	// If you check the value of `firewallRule.GetPriority()` at this point it
	// will be equal to 0, however it is not treated as "set" by the library and thus
	// the default will be applied to the new rule. If you want to create a rule that
	// has priority == 0, you need to explicitly set it so:

	// firewallRule.Priority = proto.Int32(0)

	req := &computepb.InsertFirewallRequest{
		Project:          projectID,
		FirewallResource: firewallRule,
	}

	op, err := firewallsClient.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create firewall rule: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Firewall rule created\n")

	return nil
}

Java


import com.google.cloud.compute.v1.Allowed;
import com.google.cloud.compute.v1.Firewall;
import com.google.cloud.compute.v1.Firewall.Direction;
import com.google.cloud.compute.v1.FirewallsClient;
import com.google.cloud.compute.v1.InsertFirewallRequest;
import java.io.IOException;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateFirewallRule {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample
    /* project: project ID or project number of the Cloud project you want to use.
       firewallRuleName: name of the rule that is created.
       network: name of the network the rule will be applied to. Available name formats:
        * https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{network}
        * projects/{project_id}/global/networks/{network}
        * global/networks/{network} */
    String project = "your-project-id";
    String firewallRuleName = "firewall-rule-name-" + UUID.randomUUID();
    String network = "global/networks/default";

    // The rule will be created with default priority of 1000.
    createFirewall(project, firewallRuleName, network);
  }

  // Creates a simple firewall rule allowing for incoming HTTP and
  // HTTPS access from the entire Internet.
  public static void createFirewall(String project, String firewallRuleName, String network)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    /* Initialize client that will be used to send requests. This client only needs to be created
       once, and can be reused for multiple requests. After completing all of your requests, call
       the `firewallsClient.close()` method on the client to safely
       clean up any remaining background resources. */
    try (FirewallsClient firewallsClient = FirewallsClient.create()) {

      // The below firewall rule is created in the default network.
      Firewall firewallRule = Firewall.newBuilder()
          .setName(firewallRuleName)
          .setDirection(Direction.INGRESS.toString())
          .addAllowed(
              Allowed.newBuilder().addPorts("80").addPorts("443").setIPProtocol("tcp").build())
          .addSourceRanges("0.0.0.0/0")
          .setNetwork(network)
          .addTargetTags("web")
          .setDescription("Allowing TCP traffic on port 80 and 443 from Internet.")
          .build();

      /* Note that the default value of priority for the firewall API is 1000.
         If you check the value of `firewallRule.getPriority()` at this point it
         will be equal to 0, however it is not treated as "set" by the library and thus
         the default will be applied to the new rule. If you want to create a rule that
         has priority == 0, you'll need to explicitly set it so: setPriority(0) */

      InsertFirewallRequest insertFirewallRequest = InsertFirewallRequest.newBuilder()
          .setFirewallResource(firewallRule)
          .setProject(project).build();

      firewallsClient.insertAsync(insertFirewallRequest).get(3, TimeUnit.MINUTES);

      System.out.println("Firewall rule created successfully -> " + firewallRuleName);
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const firewallRuleName = 'YOUR_FIREWALL_RULE_NAME'
// const networkName = 'global/networks/default'

const compute = require('@google-cloud/compute');
const computeProtos = compute.protos.google.cloud.compute.v1;

async function createFirewallRule() {
  const firewallsClient = new compute.FirewallsClient();
  const operationsClient = new compute.GlobalOperationsClient();

  const firewallRule = new computeProtos.Firewall();
  firewallRule.name = firewallRuleName;
  firewallRule.direction = 'INGRESS';
  firewallRule.allowed = [
    {
      IPProtocol: 'tcp',
      ports: ['80', '443'],
    },
  ];
  firewallRule.targetTags = ['web'];
  firewallRule.network = networkName;
  firewallRule.description =
    'Allowing TCP traffic on port 80 and 443 from Internet.';

  // Note that the default value of priority for the firewall API is 1000.
  // If you check the value of `firewallRule.priority` at this point it
  // will be equal to null, however it is not treated as "set" by the library and thus
  // the default will be applied to the new rule. If you want to create a rule that
  // has priority == 0, you need to explicitly set it so:

  // firewallRule.priority = 0

  const [response] = await firewallsClient.insert({
    project: projectId,
    firewallResource: firewallRule,
  });
  let operation = response.latestResponse;

  // Wait for the create operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Firewall rule created');
}

createFirewallRule();

PHP

use Google\Cloud\Compute\V1\Allowed;
use Google\Cloud\Compute\V1\Client\FirewallsClient;
use Google\Cloud\Compute\V1\Enums\Firewall\Direction;

/**
 * To correctly handle string enums in Cloud Compute library
 * use constants defined in the Enums subfolder.
 */
use Google\Cloud\Compute\V1\Firewall;
use Google\Cloud\Compute\V1\InsertFirewallRequest;

/**
 * Creates a simple firewall rule allowing incoming HTTP and HTTPS access from the entire internet.
 *
 * @param string $projectId Project ID or project number of the Cloud project you want to create a rule for.
 * @param string $firewallRuleName Name of the rule that is created.
 * @param string $network Name of the network the rule will be applied to. Available name formats:
 *                        https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{network}
 *                        projects/{project_id}/global/networks/{network}
 *                        global/networks/{network}
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 * @throws \Google\ApiCore\ValidationException if local error occurs before remote call.
 */

function create_firewall_rule(string $projectId, string $firewallRuleName, string $network = 'global/networks/default')
{
    $firewallsClient = new FirewallsClient();
    $allowedPorts = (new Allowed())
      ->setIPProtocol('tcp')
      ->setPorts(['80', '443']);
    $firewallResource = (new Firewall())
      ->setName($firewallRuleName)
      ->setDirection(Direction::INGRESS)
      ->setAllowed([$allowedPorts])
      ->setSourceRanges(['0.0.0.0/0'])
      ->setTargetTags(['web'])
      ->setNetwork($network)
      ->setDescription('Allowing TCP traffic on ports 80 and 443 from Internet.');

    /**
    * Note that the default value of priority for the firewall API is 1000.
    * If you check the value of its priority at this point it will be
    * equal to 0, however it is not treated as "set" by the library and thus
    * the default will be applied to the new rule. If you want to create a rule
    * that has priority == 0, you need to explicitly set it so:
    *
    *   $firewallResource->setPriority(0);
    */

    //Create the firewall rule using Firewalls Client.
    $request = (new InsertFirewallRequest())
        ->setFirewallResource($firewallResource)
        ->setProject($projectId);
    $operation = $firewallsClient->insert($request);

    // Wait for the operation to complete.
    $operation->pollUntilComplete();
    if ($operation->operationSucceeded()) {
        printf('Created rule %s.' . PHP_EOL, $firewallRuleName);
    } else {
        $error = $operation->getError();
        printf('Firewall rule creation failed: %s' . PHP_EOL, $error?->getMessage());
    }
}

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def create_firewall_rule(
    project_id: str, firewall_rule_name: str, network: str = "global/networks/default"
) -> compute_v1.Firewall:
    """
    Creates a simple firewall rule allowing for incoming HTTP and HTTPS access from the entire Internet.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        firewall_rule_name: name of the rule that is created.
        network: name of the network the rule will be applied to. Available name formats:
            * https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{network}
            * projects/{project_id}/global/networks/{network}
            * global/networks/{network}

    Returns:
        A Firewall object.
    """
    firewall_rule = compute_v1.Firewall()
    firewall_rule.name = firewall_rule_name
    firewall_rule.direction = "INGRESS"

    allowed_ports = compute_v1.Allowed()
    allowed_ports.I_p_protocol = "tcp"
    allowed_ports.ports = ["80", "443"]

    firewall_rule.allowed = [allowed_ports]
    firewall_rule.source_ranges = ["0.0.0.0/0"]
    firewall_rule.network = network
    firewall_rule.description = "Allowing TCP traffic on port 80 and 443 from Internet."

    firewall_rule.target_tags = ["web"]

    # Note that the default value of priority for the firewall API is 1000.
    # If you check the value of `firewall_rule.priority` at this point it
    # will be equal to 0, however it is not treated as "set" by the library and thus
    # the default will be applied to the new rule. If you want to create a rule that
    # has priority == 0, you need to explicitly set it so:
    # TODO: Uncomment to set the priority to 0
    # firewall_rule.priority = 0

    firewall_client = compute_v1.FirewallsClient()
    operation = firewall_client.insert(
        project=project_id, firewall_resource=firewall_rule
    )

    wait_for_extended_operation(operation, "firewall rule creation")

    return firewall_client.get(project=project_id, firewall=firewall_rule_name)

Ruby


require "google/cloud/compute/v1"

# Creates a simple firewall rule allowing for incoming HTTP and HTTPS access from the entire Internet.
#
# @param [String] project project ID or project number of the Cloud project you want to use.
# @param [String] name: name of the rule that is created.
# @param network: name of the network the rule will be applied to. Available name formats:
#         * https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{network}
#         * projects/{project_id}/global/networks/{network}
#         * global/networks/{network}
def create_firewall_rule project:, name:, network: "global/networks/default"
  rule = {
    name: name,
    direction: "INGRESS",
    allowed: [{
      I_p_protocol: "tcp",
      ports: ["80", "443"]
    }],
    source_ranges: ["0.0.0.0/0"],
    network: network,
    description: "Allowing TCP traffic on port 80 and 443 from Internet.",
    target_tags: ["web"]
  }

  # Note that the default value of priority for the firewall API is 1000.
  # If you want to create a rule that has priority == 0, you need to explicitly set it:
  #   rule[:priority] = 0
  # Use `rule.has_key? :priority` to check if the priority has been set.
  # Use `rule.delete :priority` method to unset the priority.

  request = {
    firewall_resource: rule,
    project: project
  }

  client = ::Google::Cloud::Compute::V1::Firewalls::Rest::Client.new
  operation = client.insert request

  wait_until_done operation: operation
end

Memperbarui aturan firewall VPC

Anda dapat memodifikasi beberapa komponen aturan firewall VPC, seperti protokol dan port tujuan yang ditentukan untuk kondisi kecocokan. Anda tidak dapat mengubah nama aturan firewall, jaringan, tindakan pada kecocokan, dan arah traffic.

Jika perlu mengubah nama, jaringan, atau komponen tindakan atau arah, Anda harus menghapus aturan dan membuat aturan baru.

Jika Anda ingin menambahkan atau menghapus beberapa akun layanan, gunakan gcloud CLI, API, atau library klien. Anda tidak dapat menggunakan konsol Google Cloud untuk menentukan beberapa akun layanan target atau akun layanan sumber.

Konsol

  1. Di Konsol Google Cloud, buka halaman Firewall policies.

    Buka Kebijakan firewall

  2. Klik aturan firewall yang ingin Anda ubah.

  3. Klik Edit.

  4. Modifikasi komponen yang dapat diedit untuk memenuhi kebutuhan Anda.

  5. Klik Save.

gcloud

Untuk mengupdate aturan firewall VPC, gunakan perintah gcloud compute firewall-rules update:

gcloud compute firewall-rules update RULE_NAME \
    [--priority=PRIORITY] \
    [--description=DESCRIPTION] \
    [--target-tags=TAG,...] \
    [--target-service-accounts=IAM_SERVICE_ACCOUNT,_] \
    [--source-ranges=CIDR_RANGE,...] \
    [--source-tags=TAG,...] \
    [--source-service-accounts=IAM_SERVICE_ACCOUNT,_] \
    [--destination-ranges=CIDR_RANGE,...] \
    [--rules=[PROTOCOL[:PORT[-PORT]],…]] \
    [--disabled | --no-disabled] \
    [--enable-logging | --no-enable-logging]

Deskripsi untuk setiap flag sama dengan membuat aturan firewall, dan detail selengkapnya tentang setiap flag tersedia di dokumentasi referensi SDK.

API

Gunakan PATCH untuk memperbarui kolom berikut: allowed, description, sourceRanges, sourceTags, atau targetTags. Gunakan PUT atau POST untuk semua kolom lainnya.

(PATCH|(POST|PUT)) https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME",
  "network": "projects/PROJECT-ID/global/networks/NETWORK",
  ... other fields
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • NETWORK: nama jaringan VPC tempat aturan firewall berada.
  • RULE_NAME: nama aturan firewall yang akan diperbarui.

Untuk informasi selengkapnya dan deskripsi untuk setiap kolom, lihat metode firewalls.patch atau firewalls.update.

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class PatchFirewallRuleAsyncSample
{
    public async Task PatchFirewallRuleAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string firewallRuleName = "my-test-firewall-rule",
        int newPriority = 10)
    {
        // The patch operation doesn't require the full definition of a Firewall object.
        // It will only update the values that were set in it,
        // in this case it will only change the priority.
        Firewall firewallRule = new Firewall
        {
            Priority = newPriority
        };

        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        FirewallsClient client = await FirewallsClient.CreateAsync();

        // Patch the firewall rule in the specified project.
        var firewallRulePatching = await client.PatchAsync(projectId, firewallRuleName, firewallRule);

        // Wait for the operation to complete using client-side polling.
        await firewallRulePatching.PollUntilCompletedAsync();
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// patchFirewallPriority modifies the priority of a given firewall rule.
func patchFirewallPriority(w io.Writer, projectID, firewallRuleName string, priority int32) error {
	// projectID := "your_project_id"
	// firewallRuleName := "europe-central2-b"
	// priority := 10

	ctx := context.Background()
	firewallsClient, err := compute.NewFirewallsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer firewallsClient.Close()

	firewallRule := &computepb.Firewall{
		Priority: proto.Int32(priority),
	}

	req := &computepb.PatchFirewallRequest{
		Project:          projectID,
		Firewall:         firewallRuleName,
		FirewallResource: firewallRule,
	}

	// The patch operation doesn't require the full definition of a Firewall interface. It will only update
	// the values that were set in it, in this case it will only change the priority.
	op, err := firewallsClient.Patch(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to patch firewall rule: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Firewall rule updated\n")

	return nil
}

Java


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.compute.v1.Firewall;
import com.google.cloud.compute.v1.FirewallsClient;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.PatchFirewallRequest;
import java.io.IOException;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class PatchFirewallRule {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample
    // project: project ID or project number of the Cloud project you want to use.
    // firewallRuleName: name of the rule you want to modify.
    // priority: the new priority to be set for the rule.
    String project = "your-project-id";
    String firewallRuleName = "firewall-rule-name-" + UUID.randomUUID();
    int priority = 10;

    patchFirewallPriority(project, firewallRuleName, priority);
  }

  // Modifies the priority of a given firewall rule.
  public static void patchFirewallPriority(String project, String firewallRuleName, int priority)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    /* Initialize client that will be used to send requests. This client only needs to be created
       once, and can be reused for multiple requests. After completing all of your requests, call
       the `firewallsClient.close()` method on the client to safely
       clean up any remaining background resources. */
    try (FirewallsClient firewallsClient = FirewallsClient.create()) {

      /* The patch operation doesn't require the full definition of a Firewall object. It will only
         update the values that were set in it, in this case it will only change the priority. */
      Firewall firewall = Firewall.newBuilder()
          .setPriority(priority).build();

      PatchFirewallRequest patchFirewallRequest = PatchFirewallRequest.newBuilder()
          .setProject(project)
          .setFirewall(firewallRuleName)
          .setFirewallResource(firewall).build();

      OperationFuture<Operation, Operation> operation = firewallsClient.patchAsync(
          patchFirewallRequest);
      operation.get(3, TimeUnit.MINUTES);
      System.out.println("Firewall Patch applied successfully ! ");
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const firewallRuleName = 'FIREWALL_RULE_NAME';
// const priority = 10;

const compute = require('@google-cloud/compute');
const computeProtos = compute.protos.google.cloud.compute.v1;

async function patchFirewallPriority() {
  const firewallsClient = new compute.FirewallsClient();
  const operationsClient = new compute.GlobalOperationsClient();

  const firewallRule = new computeProtos.Firewall();
  firewallRule.priority = priority;

  // The patch operation doesn't require the full definition of a Firewall object. It will only update
  // the values that were set in it, in this case it will only change the priority.
  const [response] = await firewallsClient.patch({
    project: projectId,
    firewall: firewallRuleName,
    firewallResource: firewallRule,
  });
  let operation = response.latestResponse;

  // Wait for the create operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Firewall rule updated');
}

patchFirewallPriority();

PHP

use Google\Cloud\Compute\V1\Client\FirewallsClient;
use Google\Cloud\Compute\V1\Firewall;
use Google\Cloud\Compute\V1\PatchFirewallRequest;

/**
 * Modifies the priority of a given firewall rule.
 *
 * @param string $projectId Project ID or project number of the Cloud project you want to patch a rule from.
 * @param string $firewallRuleName Name of the rule that you want to modify.
 * @param int $priority The new priority to be set for the rule.
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 * @throws \Google\ApiCore\ValidationException if local error occurs before remote call.
 */
function patch_firewall_priority(string $projectId, string $firewallRuleName, int $priority)
{
    $firewallsClient = new FirewallsClient();
    $firewallResource = (new Firewall())->setPriority($priority);

    // The patch operation doesn't require the full definition of a Firewall object. It will only update
    // the values that were set in it, in this case it will only change the priority.
    $request = (new PatchFirewallRequest())
        ->setFirewall($firewallRuleName)
        ->setFirewallResource($firewallResource)
        ->setProject($projectId);
    $operation = $firewallsClient->patch($request);

    // Wait for the operation to complete.
    $operation->pollUntilComplete();
    if ($operation->operationSucceeded()) {
        printf('Patched %s priority to %d.' . PHP_EOL, $firewallRuleName, $priority);
    } else {
        $error = $operation->getError();
        printf('Patching failed: %s' . PHP_EOL, $error?->getMessage());
    }
}

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def patch_firewall_priority(
    project_id: str, firewall_rule_name: str, priority: int
) -> None:
    """
    Modifies the priority of a given firewall rule.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        firewall_rule_name: name of the rule you want to modify.
        priority: the new priority to be set for the rule.
    """
    firewall_rule = compute_v1.Firewall()
    firewall_rule.priority = priority

    # The patch operation doesn't require the full definition of a Firewall object. It will only update
    # the values that were set in it, in this case it will only change the priority.
    firewall_client = compute_v1.FirewallsClient()
    operation = firewall_client.patch(
        project=project_id, firewall=firewall_rule_name, firewall_resource=firewall_rule
    )

    wait_for_extended_operation(operation, "firewall rule patching")

Ruby


require "google/cloud/compute/v1"

# Modifies the priority of a given firewall rule.
#
# @param [String] project project ID or project number of the Cloud project you want to use.
# @param [String] name name of the rule you want to modify.
# @param [Google::Protobuf::RepeatedField] allowed the repeated instances of the Allowed field in the rule.
#         Compute errors out if allowed is empty.
# @param [Integer] priority the new priority to be set for the rule.
def patch_firewall_priority project:, name:, allowed:, priority:
  allowed_arr = allowed.map do |instance|
    {
      I_p_protocol: instance.I_p_protocol,
      ports: instance.ports.to_a
    }
  end.to_a

  rule = {
    priority: priority,
    allowed: allowed_arr
  }

  request = {
    project: project,
    firewall: name,
    firewall_resource: rule
  }

  # The patch operation doesn't require the full definition of a Firewall object. It will only update
  # the values that were set in it, in this case it will only change the priority.
  client = ::Google::Cloud::Compute::V1::Firewalls::Rest::Client.new
  operation = client.patch request

  wait_until_done operation: operation
end

Membuat daftar aturan firewall VPC untuk jaringan VPC

Anda dapat membuat daftar semua aturan firewall VPC untuk project Anda atau untuk jaringan VPC tertentu. Untuk setiap aturan firewall, Google Cloud menampilkan detail seperti jenis, target, dan filter aturan.

Jika Anda mengaktifkan Firewall Rules Logging, Analisis Firewall dapat memberikan insight tentang aturan firewall guna membantu Anda lebih memahami dan mengoptimalkan konfigurasinya dengan lebih aman. Misalnya, Anda dapat melihat aturan allow yang belum digunakan dalam enam minggu terakhir. Untuk mengetahui informasi selengkapnya, lihat Menggunakan layar Detail aturan firewall dalam dokumentasi Analisis Firewall.

Konsol

Untuk menampilkan semua aturan firewall VPC untuk semua jaringan di project Anda:

Untuk menampilkan aturan firewall VPC dalam jaringan tertentu:

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Klik Nama jaringan VPC untuk membuka halaman detailnya.

  3. Pada halaman detail untuk jaringan, klik tab Firewalls.

  4. Luaskan vpc-firewall-rules.

gcloud

Untuk membuat daftar aturan firewall VPC yang diurutkan untuk jaringan tertentu, gunakan perintah gcloud compute firewall-rules list:

gcloud compute firewall-rules list --filter network=NETWORK \
    --sort-by priority \
    --format="table(
        name,
        network,
        direction,
        priority,
        sourceRanges.list():label=SRC_RANGES,
        destinationRanges.list():label=DEST_RANGES,
        allowed[].map().firewall_rule().list():label=ALLOW,
        denied[].map().firewall_rule().list():label=DENY,
        sourceTags.list():label=SRC_TAGS,
        targetTags.list():label=TARGET_TAGS
        )"

Ganti NETWORK dengan nama jaringan yang akan mencantumkan aturan firewall.

API

Membuat daftar semua aturan firewall VPC untuk jaringan tertentu.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/?filter=network="NETWORK

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • NETWORK: nama jaringan VPC yang berisi aturan firewall yang akan dicantumkan.

Untuk informasi selengkapnya, lihat metode firewalls.list.

C#


using Google.Cloud.Compute.V1;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class ListFirewallRulesAsyncSample
{
    public async Task ListFirewallRulesAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id")
    {
        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        FirewallsClient client = await FirewallsClient.CreateAsync();

        // Make the request to list all firewall rules.
        await foreach (var firewallRule in client.ListAsync(projectId))
        {
            // The result is a Firewall sequence that you can iterate over.
            Console.WriteLine($"Firewal Rule: {firewallRule.Name}");
        }
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/api/iterator"
)

// listFirewallRules prints the list of firewall names and their descriptions in specified project
func listFirewallRules(w io.Writer, projectID string) error {
	// projectID := "your_project_id"

	ctx := context.Background()
	firewallsClient, err := compute.NewFirewallsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer firewallsClient.Close()

	req := &computepb.ListFirewallsRequest{
		Project: projectID,
	}

	it := firewallsClient.List(ctx, req)
	for {
		firewallRule, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "- %s: %s\n", firewallRule.GetName(), firewallRule.GetDescription())
	}

	return nil
}

Java


import com.google.cloud.compute.v1.Firewall;
import com.google.cloud.compute.v1.FirewallsClient;
import com.google.cloud.compute.v1.FirewallsClient.ListPagedResponse;
import java.io.IOException;

public class ListFirewallRules {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample
    // project: project ID or project number of the Cloud project you want to use.
    String project = "your-project-id";
    listFirewallRules(project);
  }

  // Return a list of all the firewall rules in specified project.
  // Also prints the list of firewall names and their descriptions.
  public static ListPagedResponse listFirewallRules(String project)
      throws IOException {
    /* Initialize client that will be used to send requests. This client only needs to be created
       once, and can be reused for multiple requests. After completing all of your requests, call
       the `firewallsClient.close()` method on the client to safely
       clean up any remaining background resources. */
    try (FirewallsClient firewallsClient = FirewallsClient.create()) {
      ListPagedResponse firewallResponse = firewallsClient.list(project);
      for (Firewall firewall : firewallResponse.iterateAll()) {
        System.out.println(firewall.getName());
      }
      return firewallResponse;
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';

const compute = require('@google-cloud/compute');

async function listFirewallRules() {
  const firewallsClient = new compute.FirewallsClient();

  const [firewallRules] = await firewallsClient.list({
    project: projectId,
  });

  for (const rule of firewallRules) {
    console.log(` - ${rule.name}: ${rule.description}`);
  }
}

listFirewallRules();

PHP

use Google\Cloud\Compute\V1\Client\FirewallsClient;
use Google\Cloud\Compute\V1\ListFirewallsRequest;

/**
 * Return a list of all the firewall rules in specified project. Also prints the
 * list of firewall names and their descriptions.
 *
 * @param string $projectId Project ID or project number of the Cloud project you want to list rules from.
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 */
function list_firewall_rules(string $projectId)
{
    // List all firewall rules defined for the project using Firewalls Client.
    $firewallClient = new FirewallsClient();
    $request = (new ListFirewallsRequest())
        ->setProject($projectId);
    $firewallList = $firewallClient->list($request);

    print('--- Firewall Rules ---' . PHP_EOL);
    foreach ($firewallList->iterateAllElements() as $firewall) {
        printf(' -  %s : %s : %s' . PHP_EOL, $firewall->getName(), $firewall->getDescription(), $firewall->getNetwork());
    }
}

Python

from __future__ import annotations

from collections.abc import Iterable

from google.cloud import compute_v1

def list_firewall_rules(project_id: str) -> Iterable[compute_v1.Firewall]:
    """
    Return a list of all the firewall rules in specified project. Also prints the
    list of firewall names and their descriptions.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.

    Returns:
        A flat list of all firewall rules defined for given project.
    """
    firewall_client = compute_v1.FirewallsClient()
    firewalls_list = firewall_client.list(project=project_id)

    for firewall in firewalls_list:
        print(f" - {firewall.name}: {firewall.description}")

    return firewalls_list

Ruby


require "google/cloud/compute/v1"

# Return a list of all the firewall rules in specified project. Also prints the
# list of firewall names and their descriptions.
#
# @param [String] project project ID or project number of the project you want to use.
# @return [Array<::Google::Cloud::Compute::V1::Firewall>]
#     A list of all firewall rules defined for the given project.
def list_firewall_rules project:
  client = ::Google::Cloud::Compute::V1::Firewalls::Rest::Client.new
  firewalls = client.list project: project

  firewall_list = []
  firewalls.each do |firewall|
    puts " - #{firewall.name}: #{firewall.description}"
    firewall_list << firewall
  end

  firewall_list
end

Membuat daftar aturan firewall VPC untuk antarmuka jaringan instance VM

Untuk setiap antarmuka jaringan, Konsol Google Cloud mencantumkan semua aturan firewall VPC yang berlaku untuk antarmuka tersebut dan aturan yang sebenarnya digunakan oleh antarmuka tersebut. Aturan firewall dapat menyamarkan aturan lain, sehingga semua aturan yang berlaku pada antarmuka mungkin belum benar-benar digunakan oleh antarmuka.

Aturan firewall dikaitkan dengan dan diterapkan ke instance VM melalui parameter target aturan. Dengan melihat semua aturan yang diterapkan, Anda dapat memeriksa apakah aturan tertentu sedang diterapkan ke antarmuka.

Jika Anda mengaktifkan Firewall Rules Logging, Analisis Firewall dapat memberikan insight tentang aturan firewall guna membantu Anda lebih memahami dan mengoptimalkan konfigurasinya dengan lebih aman. Misalnya, Anda dapat melihat aturan mana pada antarmuka yang mendapatkan hit dalam enam minggu terakhir. Untuk mengetahui informasi selengkapnya, lihat Menggunakan layar detail antarmuka jaringan VM dalam dokumentasi Analisis Firewall.

Konsol

Untuk melihat aturan VPC yang berlaku pada antarmuka jaringan tertentu dari instance VM:

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka instance VM

  2. Temukan instance yang akan dilihat.

  3. Di menu more actions pada instance (), pilih View network details.

  4. Jika sebuah instance memiliki beberapa antarmuka jaringan, pilih antarmuka jaringan yang akan dilihat di kolom Antarmuka jaringan yang dipilih.

  5. Di bagian Firewall and routes details, pilih tab Firewalls.

  6. Luaskan vpc-firewall-rules.

  7. Lihat tabel ini untuk menentukan apakah traffic ke atau dari alamat IP tertentu diizinkan.

Lihat detail aturan firewall VPC

Anda dapat memeriksa aturan firewall VPC untuk melihat nama, jaringan yang berlaku, dan komponen, termasuk apakah aturan tersebut diaktifkan atau dinonaktifkan.

Konsol

  1. Cantumkan aturan firewall Anda. Anda dapat melihat daftar semua aturan atau hanya aturan di jaringan tertentu.
  2. Klik aturan untuk melihat.

gcloud

Perintah berikut menjelaskan aturan firewall VPC individual. Karena nama aturan firewall bersifat unik untuk project, Anda tidak perlu menentukan jaringan saat menjelaskan aturan firewall yang ada.

gcloud compute firewall-rules describe RULE_NAME

Ganti RULE_NAME dengan nama aturan firewall.

API

Menjelaskan aturan firewall VPC yang diberikan.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME

Ganti placeholder dengan nilai yang valid:

  • PROJECT_ID: ID project tempat aturan firewall berada.
  • RULE_NAME: nama aturan firewall yang akan dijelaskan.

Untuk informasi selengkapnya, lihat metode firewalls.get.

Menghapus aturan firewall VPC

Konsol

  1. Buat daftar aturan firewall VPC Anda. Anda dapat melihat daftar semua aturan atau hanya aturan di jaringan tertentu.
  2. Klik aturan yang akan dihapus.
  3. Klik Delete.
  4. Klik Delete lagi untuk mengonfirmasi.

gcloud

Untuk menghapus aturan firewall VPC, gunakan perintah gcloud compute firewall-rules delete:

gcloud compute firewall-rules delete RULE_NAME

Ganti RULE_NAME dengan nama aturan yang akan dihapus.

API

Menghapus aturan firewall VPC.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME

Ganti kode berikut:

  • PROJECT_ID: ID project tempat aturan firewall berada.
  • RULE_NAME: nama aturan firewall yang akan dihapus.

Untuk mengetahui informasi selengkapnya, lihat metode firewalls.delete.

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class DeleteFirewallRuleAsyncSample
{
    public async Task DeleteFirewallRuleAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string firewallRuleName = "my-test-firewall-rule")
    {

        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        FirewallsClient client = await FirewallsClient.CreateAsync();

        // Make the request to delete the firewall rule.
        var firewallRuleDeletion = await client.DeleteAsync(projectId, firewallRuleName);

        // Wait for the operation to complete using client-side polling.
        await firewallRuleDeletion.PollUntilCompletedAsync();
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
)

// deleteFirewallRule deletes a firewall rule from the project.
func deleteFirewallRule(w io.Writer, projectID, firewallRuleName string) error {
	// projectID := "your_project_id"
	// firewallRuleName := "europe-central2-b"

	ctx := context.Background()
	firewallsClient, err := compute.NewFirewallsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer firewallsClient.Close()

	req := &computepb.DeleteFirewallRequest{
		Project:  projectID,
		Firewall: firewallRuleName,
	}

	op, err := firewallsClient.Delete(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to delete firewall rule: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Firewall rule deleted\n")

	return nil
}

Java


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.compute.v1.FirewallsClient;
import com.google.cloud.compute.v1.Operation;
import java.io.IOException;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class DeleteFirewallRule {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample
    // project: project ID or project number of the Cloud project you want to use.
    // firewallRuleName: name of the firewall rule you want to delete.
    String project = "your-project-id";
    String firewallRuleName = "firewall-rule-name-" + UUID.randomUUID();
    deleteFirewallRule(project, firewallRuleName);
  }

  // Deletes a firewall rule from the project.
  public static void deleteFirewallRule(String project, String firewallRuleName)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    /* Initialize client that will be used to send requests. This client only needs to be created
       once, and can be reused for multiple requests. After completing all of your requests, call
       the `firewallsClient.close()` method on the client to safely
       clean up any remaining background resources. */
    try (FirewallsClient firewallsClient = FirewallsClient.create()) {

      OperationFuture<Operation, Operation> operation = firewallsClient.deleteAsync(project,
          firewallRuleName);
      operation.get(3, TimeUnit.MINUTES);

      System.out.println("Deleted firewall rule -> " + firewallRuleName);
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const firewallRuleName = 'FIREWALL_RULE_NAME';

const compute = require('@google-cloud/compute');

async function deleteFirewallRule() {
  const firewallsClient = new compute.FirewallsClient();
  const operationsClient = new compute.GlobalOperationsClient();

  const [response] = await firewallsClient.delete({
    project: projectId,
    firewall: firewallRuleName,
  });
  let operation = response.latestResponse;

  // Wait for the create operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Firewall rule deleted');
}

deleteFirewallRule();

PHP

use Google\Cloud\Compute\V1\Client\FirewallsClient;
use Google\Cloud\Compute\V1\DeleteFirewallRequest;

/**
 * Delete a firewall rule from the specified project.
 *
 * @param string $projectId Project ID or project number of the Cloud project you want to delete a rule for.
 * @param string $firewallRuleName Name of the rule that is deleted.
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 * @throws \Google\ApiCore\ValidationException if local error occurs before remote call.
 */
function delete_firewall_rule(string $projectId, string $firewallRuleName)
{
    $firewallsClient = new FirewallsClient();

    // Delete the firewall rule using Firewalls Client.
    $request = (new DeleteFirewallRequest())
        ->setFirewall($firewallRuleName)
        ->setProject($projectId);
    $operation = $firewallsClient->delete($request);

    // Wait for the operation to complete.
    $operation->pollUntilComplete();
    if ($operation->operationSucceeded()) {
        printf('Rule %s deleted successfully!' . PHP_EOL, $firewallRuleName);
    } else {
        $error = $operation->getError();
        printf('Failed to delete firewall rule: %s' . PHP_EOL, $error?->getMessage());
    }
}

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None:
    """
    Deletes a firewall rule from the project.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        firewall_rule_name: name of the firewall rule you want to delete.
    """
    firewall_client = compute_v1.FirewallsClient()
    operation = firewall_client.delete(project=project_id, firewall=firewall_rule_name)

    wait_for_extended_operation(operation, "firewall rule deletion")

Ruby


require "google/cloud/compute/v1"

# Deletes a firewall rule from the project.
#
# @param [String] project project ID or project number of the Cloud project you want to use.
# @param [String] name name of the firewall rule you want to delete.
def delete_firewall_rule project:, name:
  client = ::Google::Cloud::Compute::V1::Firewalls::Rest::Client.new
  operation = client.delete project: project, firewall: name

  wait_until_done operation: operation
end

Memantau aturan firewall VPC

Anda dapat mengaktifkan logging untuk aturan firewall VPC guna melihat aturan mana yang mengizinkan atau memblokir traffic tertentu. Lihat Menggunakan Logging Aturan Firewall untuk mengetahui petunjuknya.

Mengonfigurasi aturan firewall VPC untuk kasus penggunaan umum

Bagian berikut memberikan contoh cara menggunakan gcloud CLI dan API untuk membuat ulang aturan firewall VPC yang telah ditetapkan yang dibuat untuk jaringan default. Anda dapat menggunakan contoh ini untuk membuat aturan serupa bagi jaringan mode kustom dan otomatis. Setiap aturan {i>firewall<i} dapat mencakup rentang alamat IPv4 atau IPv6, tetapi tidak keduanya.

Mengizinkan koneksi masuk internal antar-VM

Contoh berikut membuat aturan firewall untuk mengizinkan koneksi TCP, UDP, dan ICMP internal ke instance VM Anda, mirip dengan aturan allow-internal untuk jaringan default.

gcloud

Gunakan perintah gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    --action=ALLOW \
    --direction=INGRESS \
    --network=NETWORK \
    --priority=1000 \
    --rules=tcp:0-65535,udp:0-65535,ICMP_PROTOCOL \
    --source-ranges=SUBNET_RANGES

Ganti kode berikut:

  • RULE_NAME: nama untuk aturan firewall ini.
  • NETWORK: nama jaringan tempat aturan firewall ini diterapkan. Nilai defaultnya adalah default.
  • ICMP_PROTOCOL: jenis protokol ICMP. Tentukan ICMPv4 menggunakan nama protokol icmp atau nomor protokol 1. Tentukan ICMPv6 menggunakan nomor protokol 58.
  • SUBNET_RANGES: satu atau beberapa rentang alamat IP. Menyertakan rentang alamat IP berarti traffic dari rentang tersebut dapat mencapai tujuan VM mana pun di jaringan VPC. Anda dapat menentukan rentang IPv4 atau IPv6 di aturan firewall tertentu.

    Rentang subnet IPv4:

    • Jaringan VPC mode otomatis menggunakan rentang alamat IP yang berada dalam 10.128.0.0/9.
    • Jaringan mode kustom dapat menggunakan rentang IPv4 yang valid. Jika tidak menggunakan rentang yang berdekatan untuk subnet di jaringan VPC, Anda mungkin perlu menentukan beberapa rentang.
    • Anda dapat menggunakan 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 untuk mengizinkan traffic dari semua rentang alamat IPv4 pribadi (rentang RFC 1918).

    Rentang subnet IPv6:

    • Jika telah menetapkan rentang alamat IPv6 internal ke jaringan VPC, Anda dapat menggunakan rentang tersebut sebagai rentang sumber. Dengan menggunakan rentang IPv6 internal jaringan VPC, aturan firewall tersebut mencakup semua rentang subnet IPv6 internal saat ini dan di masa mendatang. Anda dapat menemukan rentang IPv6 internal jaringan VPC dengan menggunakan perintah berikut:

      gcloud compute networks describe NETWORK \
        --format="flattened(internalIpv6Range)"
      

      Anda juga dapat menentukan rentang subnet IPv6 internal tertentu.

    • Untuk mengizinkan traffic dari rentang subnet IPv6 eksternal subnet dual stack, Anda harus menentukan rentang alamat IPv6 dari setiap subnet yang ingin Anda sertakan.

API

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "kind": "compute#firewall",
  "name": "RULE_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "direction": "INGRESS",
  "priority": 1000,
  "targetTags": [],
  "allowed": [
    {
      "IPProtocol": "tcp",
      "ports": [
        "0-65535"
      ]
    },
    {
      "IPProtocol": "udp",
      "ports": [
        "0-65535"
      ]
    },
    {
      "IPProtocol": "ICMP_PROTOCOL"
    }
  ],
  "sourceRanges": [
    "SUBNET_RANGES"
  ]
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • RULE_NAME: nama aturan firewall.
  • NETWORK: nama jaringan VPC tempat aturan firewall dibuat. Nilai defaultnya adalah default.
  • ICMP_PROTOCOL: jenis protokol ICMP. Tentukan ICMPv4 menggunakan nama protokol icmp atau nomor protokol 1. Tentukan ICMPv6 menggunakan nomor protokol 58.
  • INTERNAL_SOURCE_RANGES: satu atau beberapa rentang IP. Untuk mengizinkan traffic internal dalam semua subnet di jaringan VPC Anda, tentukan rentang alamat IP yang digunakan di jaringan VPC Anda. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu.

    Rentang subnet IPv4:

    • Jaringan VPC mode otomatis menggunakan rentang alamat IP yang berada dalam 10.128.0.0/9.
    • Jaringan mode kustom dapat menggunakan rentang IPv4 yang valid. Jika tidak menggunakan rentang yang berdekatan untuk subnet di jaringan VPC, Anda mungkin perlu menentukan beberapa rentang.
    • Anda dapat menggunakan 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 untuk mengizinkan traffic dari semua rentang alamat IPv4 pribadi (rentang RFC 1918).

    Rentang subnet IPv6:

    • Jika telah menetapkan rentang alamat IPv6 internal ke jaringan VPC, Anda dapat menggunakan rentang tersebut sebagai rentang sumber. Dengan menggunakan rentang IPv6 internal jaringan VPC, aturan firewall tersebut mencakup semua rentang subnet IPv6 internal saat ini dan di masa mendatang. Anda dapat menemukan rentang IPv6 internal jaringan VPC dengan menggunakan perintah berikut:

      gcloud compute networks describe NETWORK \
        --format="flattened(internalIpv6Range)"
      

      Anda juga dapat menentukan rentang subnet IPv6 internal tertentu.

    • Untuk mengizinkan traffic dari rentang subnet IPv6 eksternal subnet dual stack, Anda harus menentukan rentang alamat IPv6 dari setiap subnet yang ingin Anda sertakan.

Mengizinkan koneksi ssh masuk ke VM

Contoh berikut membuat aturan firewall untuk mengizinkan koneksi SSH ke instance VM Anda, mirip dengan aturan allow-ssh untuk jaringan default.

gcloud

Gunakan perintah gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    --action=ALLOW \
    --direction=INGRESS \
    --network=NETWORK \
    --priority=1000 \
    --rules=tcp:22 \
    --source-ranges=RANGES_OUTSIDE_VPC_NETWORK

Ganti kode berikut:

  • RULE_NAME: nama untuk aturan firewall ini.
  • NETWORK: nama jaringan tempat aturan firewall ini diterapkan. Nilai defaultnya adalah default.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Menyertakan 35.235.240.0/20 dalam rentang sumber memungkinkan koneksi SSH menggunakan penerusan TCP Identity-Aware Proxy (IAP) jika semua prasyarat lainnya terpenuhi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan IAP untuk penerusan TCP.
    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

API

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "kind": "compute#firewall",
  "name": "RULE_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "direction": "INGRESS",
  "priority": 1000,
  "targetTags": [],
  "allowed": [
    {
      "IPProtocol": "tcp",
      "ports": [
        "22"
      ]
    }
  ],
  "sourceRanges": [
    "RANGES_OUTSIDE_VPC_NETWORK"
  ]
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • RULE_NAME: nama aturan firewall.
  • NETWORK: nama jaringan VPC tempat aturan firewall dibuat.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Menyertakan 35.235.240.0/20 dalam rentang sumber memungkinkan koneksi SSH menggunakan penerusan TCP Identity-Aware Proxy (IAP) jika semua prasyarat lainnya terpenuhi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan IAP untuk penerusan TCP.
    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

Mengizinkan koneksi RDP masuk ke VM

Contoh berikut membuat aturan firewall untuk mengizinkan koneksi Microsoft Remote Desktop Protocol (RDP) ke instance VM Anda, mirip dengan aturan allow-rdp untuk jaringan default.

gcloud

Gunakan perintah gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    --action=ALLOW \
    --direction=INGRESS \
    --network=NETWORK \
    --priority=1000 \
    --rules=tcp:3389 \
    --source-ranges=RANGES_OUTSIDE_VPC_NETWORK

Ganti kode berikut:

  • RULE_NAME: nama untuk aturan firewall ini.
  • NETWORK: nama jaringan tempat aturan firewall ini diterapkan. Nilai defaultnya adalah default.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Menyertakan 35.235.240.0/20 dalam rentang sumber memungkinkan koneksi RDP menggunakan penerusan TCP Identity-Aware Proxy (IAP) jika semua prasyarat lainnya terpenuhi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan IAP untuk penerusan TCP.
    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

API

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "kind": "compute#firewall",
  "name": "RULE_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "direction": "INGRESS",
  "priority": 1000,
  "allowed": [
    {
      "IPProtocol": "tcp",
      "ports": [
        "3389"
      ]
    }
  ],
  "sourceRanges": [
    "EXTERNAL_SOURCE_RANGES"
  ]
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • RULE_NAME: nama aturan firewall.
  • NETWORK: nama jaringan VPC tempat aturan firewall dibuat.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Menyertakan 35.235.240.0/20 dalam rentang sumber memungkinkan koneksi RDP menggunakan penerusan TCP Identity-Aware Proxy (IAP) jika semua prasyarat lainnya terpenuhi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan IAP untuk penerusan TCP.
    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

Mengizinkan koneksi ICMP masuk ke VM

Contoh berikut membuat aturan firewall untuk mengizinkan koneksi ICMP ke instance VM Anda, mirip dengan aturan allow-icmp untuk jaringan default.

gcloud

Gunakan perintah gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    --action=ALLOW \
    --direction=INGRESS \
    --network=NETWORK \
    --priority=1000 \
    --rules=ICMP_PROTOCOL \
    --source-ranges=RANGES_OUTSIDE_VPC_NETWORK

Ganti kode berikut:

  • RULE_NAME: nama aturan firewall.
  • NETWORK: nama jaringan tempat aturan firewall ini diterapkan. Nilai defaultnya adalah default.
  • ICMP_PROTOCOL: jenis protokol ICMP. Tentukan ICMPv4 menggunakan nama protokol icmp atau nomor protokol 1. Tentukan ICMPv6 menggunakan nomor protokol 58.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

API

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "kind": "compute#firewall",
  "name": "RULE_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "direction": "INGRESS",
  "priority": 1000,
  "targetTags": [],
  "allowed": [
    {
      "IPProtocol": "ICMP_PROTOCOL"
    }
  ],
  "sourceRanges": [
    "RANGES_OUTSIDE_VPC_NETWORK"
  ]
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat jaringan VPC berada.
  • RULE_NAME: nama aturan firewall.
  • NETWORK: nama jaringan VPC tempat aturan firewall dibuat.
  • ICMP_PROTOCOL: jenis protokol ICMP yang akan digunakan. Tentukan ICMPv4 menggunakan nama protokol icmp atau nomor protokol 1. Tentukan ICMPv6 menggunakan nomor protokol 58.
  • RANGES_OUTSIDE_VPC_NETWORK: satu atau beberapa rentang alamat IP. Anda dapat menentukan rentang IPv4 atau IPv6 dalam aturan firewall tertentu. Sebagai praktik terbaik, tentukan rentang alamat IP spesifik yang ingin Anda izinkan aksesnya, bukan semua sumber IPv4 atau IPv6.

    • Penggunaan 0.0.0.0/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv4, termasuk sumber di luar Google Cloud.
    • Penggunaan ::/0 sebagai rentang sumber memungkinkan traffic dari semua sumber IPv6, termasuk sumber di luar Google Cloud.

Contoh konfigurasi lainnya

Gambar 1 menjelaskan contoh konfigurasi untuk jaringan VPC bernama my-network. Jaringan berisi hal-hal berikut:

  • Subnet bernama subnet1, dengan rentang IP 10.240.10.0/24 dan satu instance
  • Subnet bernama subnet2, dengan rentang IP 192.168.1.0/24
  • Instance bernama vm1 di subnet2 dengan tag webserver dan alamat IP internal 192.168.1.2
  • Instance bernama vm2 di subnet2 dengan tag database dan alamat IP internal 192.168.1.3
Jaringan VPC ini berisi dua subnet yang masing-masing berisi VM; subnet2 berisi VM yang memiliki tag jaringan yang ditetapkan padanya.
Gambar 1. Jaringan VPC ini berisi dua subnet yang masing-masing berisi VM; subnet2 berisi VM yang diberi tag jaringan (klik untuk memperbesar).

Contoh 1: Menolak semua koneksi TCP masuk kecuali yang ke port 80 dari subnet1

Contoh ini membuat sekumpulan aturan VPC firewall yang menolak semua koneksi TCP masuk, kecuali koneksi yang ditujukan ke port 80 dari subnet1.

gcloud

  1. Buat aturan firewall untuk menolak semua traffic TCP masuk ke instance yang diberi tag webserver.

    gcloud compute firewall-rules create deny-subnet1-webserver-access \
        --network NETWORK_NAME \
        --action deny \
        --direction ingress \
        --rules tcp \
        --source-ranges 0.0.0.0/0 \
        --priority 1000 \
        --target-tags webserver
    

    Ganti NETWORK_NAME dengan nama jaringan.

  2. Buat aturan firewall untuk mengizinkan semua alamat IP di subnet1 (10.240.10.0/24) mengakses port TCP 80 pada instance yang diberi tag dengan webserver.

    gcloud compute firewall-rules create vm1-allow-ingress-tcp-port80-from-subnet1 \
        --network NETWORK_NAME \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.240.10.0/24 \
        --priority 50 \
        --target-tags webserver
    

    Ganti NETWORK_NAME dengan nama jaringan.

Contoh 2: Menolak semua koneksi TCP keluar kecuali yang ke port 80 dari vm1

gcloud

  1. Buat aturan firewall untuk menolak semua traffic TCP keluar.

    gcloud compute firewall-rules create deny-all-access \
        --network NETWORK_NAME \
        --action deny \
        --direction egress \
        --rules tcp \
        --destination-ranges 0.0.0.0/0 \
        --priority 1000
    

    Ganti NETWORK_NAME dengan nama jaringan.

  2. Buat aturan firewall untuk mengizinkan traffic TCP yang ditujukan ke vm1 port 80.

    gcloud compute firewall-rules create vm1-allow-egress-tcp-port80-to-vm1 \
        --network NETWORK_NAME \
        --action allow \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 192.168.1.2/32 \
        --priority 60
    

    Ganti NETWORK_NAME dengan nama jaringan.

Contoh 3: Mengizinkan koneksi TCP keluar ke port 443 dari host eksternal

Buat aturan firewall yang mengizinkan instance yang diberi tag dengan webserver untuk mengirim traffic TCP keluar ke port 443 dari contoh alamat IP eksternal, 192.0.2.5.

gcloud

gcloud compute firewall-rules create vm1-allow-egress-tcp-port443-to-192-0-2-5 \
    --network NETWORK_NAME \
    --action allow \
    --direction egress \
    --rules tcp:443 \
    --destination-ranges 192.0.2.5/32 \
    --priority 70 \
    --target-tags webserver

Ganti NETWORK_NAME dengan nama jaringan.

Contoh 4: Mengizinkan koneksi SSH dari vm2 ke vm1

Buat aturan firewall yang mengizinkan traffic SSH dari instance dengan tag database (vm2) untuk menjangkau instance dengan tag webserver (vm1).

gcloud

gcloud compute firewall-rules create vm1-allow-ingress-tcp-ssh-from-vm2 \
    --network NETWORK_NAME \
    --action allow \
    --direction ingress \
    --rules tcp:22 \
    --source-tags database \
    --priority 80 \
    --target-tags webserver

Ganti NETWORK_NAME dengan nama jaringan.

Contoh 5: Mengizinkan TCP:1443 dari server web ke database menggunakan akun layanan

Untuk mengetahui informasi tambahan tentang peran dan akun layanan, lihat Memberikan peran ke akun layanan.

Pertimbangkan skenario pada gambar 2, di mana ada dua aplikasi yang diskalakan otomatis melalui template: aplikasi server web yang terkait dengan akun layanan my-sa-webserver dan aplikasi database yang terkait dengan akun layanan my-sa-database. Admin Keamanan ingin mengizinkan traffic TCP dari VM dengan akun layanan my-sa-webserver ke port tujuan 1443 pada VM dengan akun layanan my-sa-database.

Aturan firewall mengizinkan traffic dari VM dengan akun layanan my-sa-webserver ke port 1443 VM dengan akun layanan
 my-sa-database.
Gambar 2. Aturan firewall mengizinkan traffic dari VM dengan akun layanan my-sa-webserver ke port 1443 VM dengan akun layanan my-sa-database (klik untuk memperbesar).

Langkah-langkah konfigurasi, termasuk pembuatan akun layanan, adalah sebagai berikut.

gcloud

  1. EDITOR project atau PEMILIK project membuat akun layanan my-sa-webserver dan my-sa-database.

    gcloud iam service-accounts create my-sa-webserver \
        --display-name "webserver service account"
    
    gcloud iam service-accounts create my-sa-database \
        --display-name "database service account"
    
  2. PEMILIK project menetapkan peran serviceAccountUser kepada developer server web web-dev@example.com untuk akun layanan my-sa-webserver dengan menyetel kebijakan Identity and Access Management (IAM).

    gcloud iam service-accounts add-iam-policy-binding \
    my-sa-webserver@my-project.iam.gserviceaccount.com \
        --member='user:web-dev@example.com' \
        --role='roles/iam.serviceAccountUser'
    
  3. PEMILIK project menetapkan peran serviceAccountUser kepada developer database db-dev@example.com untuk akun layanan my-sa-database dengan menetapkan kebijakan IAM.

    gcloud iam service-accounts add-iam-policy-binding \
    my-sa-database@my-project.iam.gserviceaccount.com \
        --member='user:db-dev@example.com' \
        --role='roles/iam.serviceAccountUser'
    
  4. Developer web-dev@example.com, yang memiliki peran admin Instance, membuat template instance server web dan mengizinkan instance untuk dijalankan sebagai akun layanan my-sa-webserver.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --service-account my-sa-webserver@my-project-123.iam.gserviceaccount.com
    
  5. Developer db-dev@example.com, yang memiliki peran Instance Admin, membuat template instance database dan mengizinkan instance untuk dijalankan sebagai akun layanan my-sa-database.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --service-account my-sa-database@my-project-123.iam.gserviceaccount.com
    
  6. Admin Keamanan membuat aturan firewall yang memungkinkan traffic TCP dari VM dengan akun layanan my-sa-webserver mencapai port 1443 VM dengan akun layanan my-sa-database.

    gcloud compute firewall-rules create RULE_NAME \
        --network network_a \
        --allow TCP:1443 \
        --source-service-accounts my-sa-webserver@my-project.iam.gserviceaccount.com \
        --target-service-accounts my-sa-database@my-project.iam.gserviceaccount.com
    

Pemecahan masalah

Pesan error saat membuat atau memperbarui aturan firewall VPC

Anda mungkin melihat salah satu pesan error berikut:

  • Should not specify destination range for ingress direction.

    Rentang tujuan bukan parameter yang valid untuk aturan firewall masuk. Aturan firewall diasumsikan sebagai aturan ingress, kecuali jika arah egress secara khusus ditentukan. Jika Anda membuat aturan yang tidak menentukan arah, aturan tersebut akan dibuat sebagai aturan masuk, yang tidak mengizinkan rentang tujuan. Selain itu, rentang sumber bukanlah parameter yang valid untuk aturan keluar.

  • Firewall direction cannot be changed once created.

    Anda tidak dapat mengubah arah aturan firewall yang sudah ada. Anda harus membuat aturan baru dengan parameter yang benar, lalu menghapus yang lama.

  • Firewall traffic control action cannot be changed once created.

    Anda tidak dapat mengubah tindakan aturan firewall yang sudah ada. Anda harus membuat aturan baru dengan parameter yang benar, lalu menghapus yang lama.

  • Service accounts must be valid RFC 822 email addresses. Akun layanan yang ditentukan dalam aturan firewall harus berupa alamat email yang diformat sesuai RFC 822.

    gcloud compute firewall-rules create bad --allow tcp --source-service-accounts invalid-email
    
    Creating firewall...failed.
    ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource:
    – Invalid value for field 'resource.sourceServiceAccounts[0]': 'invalid-email'. Service accounts must be valid RFC 822 email addresses.
    
  • ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule. Anda tidak dapat menentukan akun dan tag layanan dalam aturan yang sama.

    gcloud compute firewall-rules create bad --allow tcp --source-service-accounts test@google.com --target-tags target
    
    Creating firewall...failed.
     ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource:
    – ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule.
    

Error resource tidak ditemukan

Saat menghapus jaringan VPC atau aturan firewall, Anda mungkin melihat pesan yang mirip dengan berikut ini: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Error ini dapat mencegah Anda menghapus aturan firewall tersirat atau melihat detailnya. Aturan firewall yang ada dalam status ini mungkin juga memblokir Anda agar tidak menghapus jaringan VPC.

Untuk menghapus aturan firewall atau jaringan yang diblokir dengan cara ini, hapus terlebih dahulu konektor Akses VPC Serverless terkait, lalu coba lagi. Untuk informasi selengkapnya tentang cara menghapus konektor Akses VPC Serverless, lihat menghapus konektor.

Terlalu banyak kesalahan firewall besar

Anda mungkin melihat pesan error berikut: Google Compute Engine: The network contains too many large firewalls.

Untuk menjaga keamanan dan performa, ada batas kompleksitas dan jumlah aturan firewall yang dapat diterapkan dalam jaringan VPC. Jika melihat error ini, minta tim pengelolaan akun Anda untuk menyederhanakan atau menggabungkan aturan firewall.

Tidak dapat terhubung ke instance VM

Jika tidak dapat terhubung ke instance VM, periksa aturan firewall Anda.

gcloud

  1. Jika Anda memulai koneksi dari instance VM lain, cantumkan aturan firewall keluar untuk instance tersebut.

    gcloud compute firewall-rules list --filter network=NETWORK_NAME \
      --filter EGRESS \
      --sort-by priority \
      --format="table(
          name,
          network,
          direction,
          priority,
          sourceRanges.list():label=SRC_RANGES,
          destinationRanges.list():label=DEST_RANGES,
          allowed[].map().firewall_rule().list():label=ALLOW,
          denied[].map().firewall_rule().list():label=DENY,
          sourceTags.list():label=SRC_TAGS,
          sourceServiceAccounts.list():label=SRC_SVC_ACCT,
          targetTags.list():label=TARGET_TAGS,
          targetServiceAccounts.list():label=TARGET_SVC_ACCT
          )"
    

    Ganti NETWORK_NAME dengan nama jaringan.

  2. Periksa apakah IP tujuan ditolak oleh aturan traffic keluar. Aturan dengan prioritas tertinggi (angka prioritas terendah) akan menggantikan aturan prioritas yang lebih rendah. Untuk dua aturan dengan prioritas yang sama, aturan penolakan lebih diutamakan.

  3. Periksa aturan firewall masuk untuk jaringan yang berisi instance VM tujuan.

    gcloud compute firewall-rules list --filter network=NETWORK_NAME \
      --filter INGRESS \
      --sort-by priority \
      --format="table(
          name,
          network,
          direction,
          priority,
          sourceRanges.list():label=SRC_RANGES,
          destinationRanges.list():label=DEST_RANGES,
          allowed[].map().firewall_rule().list():label=ALLOW,
          denied[].map().firewall_rule().list():label=DENY,
          sourceTags.list():label=SRC_TAGS,
          sourceServiceAccounts.list():label=SRC_SVC_ACCT,
          targetTags.list():label=TARGET_TAGS,
          targetServiceAccounts.list():label=TARGET_SVC_ACCT
          )"
    

    Ganti NETWORK_NAME dengan nama jaringan.

    Contoh output. Output Anda akan bergantung pada daftar aturan firewall.

    NAME                    NETWORK  DIRECTION  PRIORITY  SRC_RANGES    DEST_RANGES  ALLOW                         DENY  SRC_TAGS  SRC_SVC_ACCT      TARGET_TAGS  TARGET_SVC_ACCT
    default-allow-icmp      default  INGRESS    65534     0.0.0.0/0                  icmp
    default-allow-internal  default  INGRESS    65534     10.128.0.0/9               tcp:0-65535,udp:0-65535,icmp
    default-allow-rdp       default  INGRESS    65534     0.0.0.0/0                  tcp:3389
    default-allow-ssh       default  INGRESS    65534     0.0.0.0/0                  tcp:22
    firewall-with-sa        default  INGRESS    1000                                 tcp:10000                                     test1@google.com               target@google.com
    
  4. Anda juga dapat menjalankan uji konektivitas ke/dari instance VM di jaringan VPC ke jaringan VPC lain atau jaringan cloud non-Google untuk memecahkan masalah jika traffic berkurang akibat aturan firewall masuk atau keluar. Untuk mengetahui informasi selengkapnya tentang cara menjalankan uji konektivitas guna memecahkan masalah berbagai skenario, lihat Menjalankan Uji Konektivitas.

Apakah aturan firewall VPC saya diaktifkan atau dinonaktifkan?

Untuk melihat apakah aturan firewall diaktifkan atau dinonaktifkan, lihat detail aturan firewall.

Di Konsol Google Cloud, cari Enabled atau Disabled di bagian Enforcement.

Pada output gcloud CLI, cari kolom disabled. Jika tertulis disabled:false, aturan diaktifkan dan diterapkan. Jika tertulis disabled: true, aturan akan dinonaktifkan.

Aturan mana yang diterapkan pada instance VM?

Setelah membuat aturan, Anda dapat memeriksa apakah aturan tersebut diterapkan dengan benar pada instance tertentu. Untuk mengetahui informasi selengkapnya, baca Mendaftarkan aturan firewall untuk antarmuka jaringan instance VM.

Aturan firewall VPC dengan tag sumber tidak langsung diterapkan

Aturan firewall masuk yang menggunakan tag sumber mungkin memerlukan waktu beberapa saat untuk diterapkan. Untuk mengetahui detailnya, lihat pertimbangan yang terkait dengan tag sumber untuk aturan firewall masuk.

Langkah selanjutnya