Membuat bucket dengan aturan pemfilteran IP

Halaman ini menjelaskan cara membuat bucket dengan aturan pemfilteran IP. Dengan membuat bucket dengan pemfilteran IP, Anda dapat mengontrol akses ke bucket dengan memeriksa permintaan masuk terhadap alamat IP yang ditentukan dalam aturan pemfilteran IP bucket. Untuk mengetahui detailnya, lihat Pemfilteran IP bucket.

Untuk mengetahui informasi tentang cara membuat atau memperbarui aturan pemfilteran IP di bucket yang ada, lihat Memperbarui aturan pemfilteran IP bucket.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna membuat bucket dengan aturan pemfilteran IP, minta administrator Anda untuk memberi Anda peran Storage Admin (roles/storage.admin) di bucket tersebut. Peran ini berisi izin yang diperlukan untuk membuat bucket dengan aturan pemfilteran IP.

Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • storage.buckets.create
  • storage.buckets.setIpFilter

Anda juga bisa mendapatkan izin ini dengan peran khusus. Anda mungkin bisa mendapatkan izin ini dengan peran bawaan lainnya juga. Untuk melihat peran yang terkait dengan izin apa, lihat Peran IAM untuk Cloud Storage.

Untuk mengetahui petunjuk tentang cara memberikan peran pada bucket, lihat Menggunakan IAM dengan bucket.

Membuat bucket dengan aturan pemfilteran IP

gcloud

  1. Verifikasi bahwa Anda telah menginstal Google Cloud CLI versi 526.0.0 atau yang lebih baru:

    gcloud version | head -n1
    
  2. Jika Anda telah menginstal gcloud CLI versi yang lebih lama, update versinya:

    gcloud components update --version=526.0.0
    
  3. Buat file JSON yang menentukan aturan untuk permintaan masuk. Untuk contoh dan informasi tentang cara menyusun aturan pemfilteran IP bucket, lihat Konfigurasi pemfilteran IP bucket.

    {
      "mode":"MODE",
      "publicNetworkSource":{
          "allowedIpCidrRanges":[
            "RANGE_CIDR",
            "..."
          ]
      },
      "vpcNetworkSources":[
          {
            "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":[
                "RANGE_CIDR",
                "..."
            ]
          },
          "..."
      ],
      "allowCrossOrgVpcs":ALLOW_CROSS_ORG_VPCS,
      "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
    }

    Dengan:

    • MODE adalah mode konfigurasi pemfilteran IP bucket. Nilai yang valid adalah Enabled dan Disabled. Jika disetel ke Enabled, aturan pemfilteran IP akan diterapkan ke bucket. Setiap permintaan masuk ke bucket akan dievaluasi berdasarkan aturan ini. Jika disetel ke Disabled, semua permintaan masuk diizinkan untuk mengakses bucket.

    • RANGE_CIDR adalah rentang alamat IPv4 atau IPv6 jaringan publik yang diizinkan untuk mengakses bucket. Anda dapat memasukkan satu atau beberapa rentang alamat sebagai daftar.

    • PROJECT_ID adalah project ID tempat jaringan Virtual Private Cloud (VPC) berada. Untuk mengonfigurasi beberapa jaringan VPC, Anda harus menentukan project tempat setiap jaringan berada.

    • NETWORK_NAME adalah nama jaringan VPC yang diizinkan untuk mengakses bucket. Untuk mengonfigurasi beberapa jaringan VPC, Anda harus menentukan nama untuk setiap jaringan.

    • ALLOW_CROSS_ORG_VPCS adalah nilai boolean yang menunjukkan apakah akan mengizinkan jaringan VPC yang ditentukan dalam vpcNetworkSources untuk berasal dari organisasi yang berbeda. Kolom ini bersifat opsional. Jika disetel ke true, permintaan mengizinkan jaringan VPC lintas organisasi. Jika disetel ke false, permintaan membatasi jaringan VPC ke organisasi yang sama dengan bucket. Jika tidak ditentukan, nilai defaultnya adalah false.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS adalah nilai boolean yang menunjukkan apakah akan mengizinkan agen layanan mengakses bucket, terlepas dari konfigurasi filter IP. Jika nilainya adalah true, layanan Google Cloud lain dapat menggunakan agen layanan untuk mengakses bucket tanpa validasi berbasis IP.

  4. Untuk membuat bucket dengan aturan pemfilteran IP, jalankan perintah gcloud alpha storage buckets create di lingkungan pengembangan Anda:

    gcloud alpha storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE

    Dengan:

    • BUCKET_NAME adalah nama yang ingin Anda berikan ke bucket, sesuai dengan persyaratan penamaan. Contoh, my-bucket.
    • IP_FILTER_CONFIG_FILE adalah file JSON yang menentukan aturan untuk permintaan masuk.

REST API

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk bucket, yang harus menyertakan kolom konfigurasi name dan ipFilter untuk bucket. Untuk contoh dan informasi tentang cara menyusun aturan pemfilteran IP bucket, lihat Konfigurasi pemfilteran IP bucket.

    {
      "name": "BUCKET_NAME",
      "ipFilter": {
        "mode": "MODE",
        "publicNetworkSource":
          {
            "allowedIpCidrRanges":
              [RANGE_CIDR,
                ...
              ]
          },
        "vpcNetworkSources":
          [
            {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":
              [RANGE_CIDR,
              ...
              ]
            },
          ...
          ],
        "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS,
        "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
        },
    }

    Dengan:

    • MODE adalah status konfigurasi filter IP. Nilai yang valid adalah Enabled dan Disabled. Jika disetel ke Enabled, aturan pemfilteran IP diterapkan ke bucket dan semua permintaan masuk ke bucket akan dievaluasi berdasarkan aturan ini. Jika disetel ke Disabled, semua permintaan masuk dapat mengakses bucket dan datanya tanpa evaluasi apa pun jika Anda memiliki izin IAM yang diperlukan.

    • RANGE_CIDR adalah rentang alamat IPv4 atau IPv6 jaringan publik yang diizinkan untuk mengakses bucket. Anda dapat memasukkan satu atau beberapa rentang alamat sebagai daftar.

    • PROJECT_ID adalah ID project tempat jaringan VPC berada. Untuk mengonfigurasi beberapa jaringan VPC, Anda perlu menentukan project tempat setiap jaringan berada.

    • NETWORK_NAME adalah nama jaringan VPC yang diizinkan untuk mengakses bucket. Untuk mengonfigurasi beberapa jaringan VPC, Anda harus menentukan nama untuk setiap jaringan.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS adalah nilai boolean yang menunjukkan apakah akan mengizinkan agen layanan untuk mengakses bucket, terlepas dari konfigurasi filter IP. Jika nilainya adalah true, layanan Google Cloud lain dapat menggunakan agen layanan untuk mengakses bucket tanpa validasi berbasis IP.

    • ALLOW_CROSS_ORG_VPCS adalah nilai boolean yang menunjukkan apakah akan mengizinkan jaringan VPC yang ditentukan dalam vpcNetworkSources berasal dari organisasi yang berbeda. Kolom ini bersifat opsional. Jika disetel ke true, permintaan akan mengizinkan jaringan VPC lintas organisasi. Jika disetel ke false, permintaan membatasi jaringan VPC ke organisasi yang sama dengan bucket. Jika tidak ditentukan, nilai defaultnya adalah false.

  3. Gunakan cURL untuk memanggil JSON API dengan permintaan POST bucket:

    curl -X POST --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER"

    Dengan:

    • JSON_FILE_NAME adalah nama file JSON yang berisi setelan untuk bucket.
    • PROJECT_IDENTIFIER adalah ID atau nomor project yang dikaitkan dengan bucket Anda. Contoh, my-project.

Konfigurasi pemfilteran IP bucket

Bagian ini memberikan contoh konfigurasi file JSON pemfilteran IP bucket untuk mengontrol akses ke bucket Cloud Storage Anda. Anda dapat memberikan akses ke permintaan masuk menggunakan salah satu contoh berikut:

  • Alamat IP publik (IPv4 atau IPv6):

    Konfigurasi berikut memberikan akses ke alamat IPv4 atau IPv6 publik apa pun, tetapi memblokir traffic yang berasal dari VPC mana pun:

    gcloud

      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      

    REST API

    JSON API

      {
      "ipFilter":
      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      }
      
  • Rentang IP publik tertentu:

    • Contoh konfigurasi berikut memberikan akses ke rentang alamat IPv4 publik 192.0.2.0/24, tetapi memblokir traffic yang berasal dari VPC mana pun:

      gcloud

          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["192.0.2.0/24"]
            },
            "allowAllServiceAgentAccess": false
          }
        

      REST API

      JSON API

        {
        "ipFilter":
          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["192.0.2.0/24"]
            },
            "allowAllServiceAgentAccess": false
          }
        }
    • Contoh konfigurasi berikut memberikan akses ke rentang alamat IPv6 publik 2001:db8::/32, tetapi memblokir traffic yang berasal dari VPC mana pun:

      gcloud

          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["2001:db8::/32"]
            },
            "allowAllServiceAgentAccess": false
          }
        

      REST API

      JSON API

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "publicNetworkSource":
              {
                "allowedIpCidrRanges": ["2001:db8::/32"]
              },
              "allowAllServiceAgentAccess": false
            }
        }
  • Jaringan VPC: Dengan menggunakan konfigurasi berikut, Anda dapat memberikan akses ke resource dalam jaringan VPC Anda. Anda dapat memberikan akses ke semua alamat IP dalam VPC atau rentang IP tertentu dalam VPC. Dalam setiap contoh ini, PROJECT_ID adalah project ID tempat jaringan VPC berada dan NETWORK_NAME adalah nama jaringan VPC yang diizinkan untuk mengakses bucket.

    • Contoh konfigurasi berikut memberikan akses ke permintaan dari alamat IPv4 atau IPv6 apa pun yang berasal dari VPC tertentu dan memblokir traffic yang berasal dari alamat IP publik:

      gcloud

        {
          "mode": "Enabled",
          "vpcNetworkSources":
            [
              {
                "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
              },
            ],
          "allowAllServiceAgentAccess": false
        }

      REST API

      JSON API

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "vpcNetworkSources":
                [
                  {
                    "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                    "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
                  },
                ],
              "allowAllServiceAgentAccess": false
            }
        }
    • Contoh konfigurasi berikut hanya memberikan akses ke permintaan dari VPC yang terkait dengan VM dengan alamat IPv4 eksternal sebagai 192.0.2.0/24 dan memblokir traffic yang berasal dari alamat IP publik:

      gcloud

          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["192.0.2.0/24"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        

      REST API

      JSON API

        {
          "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["192.0.2.0/24"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        }
    • Contoh konfigurasi berikut hanya memberikan akses ke permintaan yang berasal dari VPC dengan rentang subnet IPv4 internal yang terkait dengan VM tanpa alamat IP eksternal dan memblokir traffic yang berasal dari alamat IP publik:

      gcloud

          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["IP_ADDRESS"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
          

      Dengan:

      IP_ADDRESS adalah rentang subnet IPv4 internal.

      REST API

      JSON API

        {
        "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges": ["IP_ADDRESS"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        }
        

      Dengan:

      IP_ADDRESS adalah rentang subnet IPv4 internal.

    • Contoh konfigurasi berikut hanya memberikan akses ke permintaan yang berasal dari VPC dengan rentang subnet IPv4 dan IPv6 stack ganda yang terkait dengan VM dengan rentang alamat IPv6 eksternal sebagai 2001:db8::/32 dan memblokir traffic yang berasal dari alamat IP publik:

      gcloud

        {
          "mode": "Enabled",
          "vpcNetworkSources":
          [
            {
              "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
              "allowedIpCidrRanges": ["2001:db8::/32"]
            },
          ],
          "allowAllServiceAgentAccess": false
          }
        

      REST API

      JSON API

        {
        "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["2001:db8::/32"]
                },
              ],
            "allowAllServiceAgentAccess": false
            }
        }

Langkah berikutnya

Coba sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa Cloud Storage dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba Cloud Storage gratis