Bucket mit IP-Filterregeln erstellen

Auf dieser Seite wird beschrieben, wie Sie einen Bucket mit IP-Filterregeln erstellen. Wenn Sie einen Bucket mit IP-Filterung erstellen, können Sie den Zugriff auf Ihre Buckets steuern, indem Sie eingehende Anfragen anhand der in den Bucket-IP-Filterregeln angegebenen IP-Adressen prüfen. Weitere Informationen finden Sie unter IP-Filterung für Buckets.

Informationen zum Erstellen oder Aktualisieren der IP-Filterregeln für einen vorhandenen Bucket finden Sie unter IP-Filterregeln für einen Bucket aktualisieren.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die Rolle „Storage-Administrator“ (roles/storage.admin) für den Bucket zuzuweisen, um die erforderlichen Berechtigungen zum Erstellen eines Buckets mit IP-Filterregeln zu erhalten. Diese Rolle enthält die Berechtigungen, die zum Erstellen eines Buckets mit IP-Filterregeln erforderlich sind.

Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen im Detail anzuzeigen:

Erforderliche Berechtigungen

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

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen erhalten. Sie können diese Berechtigungen möglicherweise auch mit anderen vordefinierten Rollen erhalten. Informationen dazu, welche Rollen mit welchen Berechtigungen verknüpft sind, finden Sie unter IAM-Rollen für Cloud Storage.

Eine Anleitung zum Zuweisen von Rollen für Buckets finden Sie unter IAM-Richtlinien für Buckets festlegen und verwalten.

Bucket mit IP-Filterregeln erstellen

gcloud

  1. Prüfen Sie, ob Sie die Google Cloud CLI-Version 526.0.0 oder höher installiert haben:

    gcloud version | head -n1
    
  2. Wenn Sie eine ältere gcloud CLI-Version installiert haben, aktualisieren Sie die Version:

    gcloud components update --version=526.0.0
    
  3. Erstellen Sie eine JSON-Datei, in der die Regeln für eingehende Anfragen definiert sind. Beispiele und Informationen zum Strukturieren der Bucket-IP-Filterungsregeln finden Sie unter Konfigurationen für die IP-Filterung von Buckets.

    {
      "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
    }

    Dabei gilt:

    • MODE ist der Modus der Bucket-IP-Filterungskonfiguration. Gültige Werte sind Enabled und Disabled. Wenn der Wert auf Enabled festgelegt ist, werden IP-Filterregeln auf einen Bucket angewendet. Jede eingehende Anfrage an den Bucket wird anhand dieser Regeln ausgewertet. Wenn Disabled festgelegt ist, dürfen alle eingehenden Anfragen auf den Bucket zugreifen.

    • RANGE_CIDR ist ein öffentlicher IPv4- oder IPv6-Adressbereich, der auf den Bucket zugreifen darf. Sie können einen oder mehrere Adressbereiche als Liste eingeben.

    • PROJECT_ID ist die Projekt-ID, in der das VPC-Netzwerk (Virtual Private Cloud) vorhanden ist. Wenn Sie mehrere VPC-Netzwerke konfigurieren möchten, müssen Sie das Projekt angeben, in dem sich jedes Netzwerk befindet.

    • NETWORK_NAME ist der Name des VPC-Netzwerks, das auf den Bucket zugreifen darf. Wenn Sie mehrere VPC-Netzwerke konfigurieren möchten, müssen Sie für jedes Netzwerk einen Namen angeben.

    • ALLOW_CROSS_ORG_VPCS ist ein boolescher Wert, der angibt, ob VPC-Netzwerke, die in vpcNetworkSources definiert sind, aus einer anderen Organisation stammen dürfen. Dieses Feld ist optional. Wenn der Wert auf true gesetzt ist, sind organisationsübergreifende VPC-Netzwerke in der Anfrage zulässig. Wenn der Wert auf false gesetzt ist, werden die VPC-Netzwerke in der Anfrage auf dieselbe Organisation wie der Bucket beschränkt. Wenn der Wert nicht festgelegt ist, beträgt der Standardwert false. Dieses Feld gilt nur, wenn vpcNetworkSources nicht leer ist.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS ist ein boolescher Wert, der angibt, ob Dienstagenten unabhängig von der IP-Filterkonfiguration auf den Bucket zugreifen dürfen. Wenn der Wert true ist, können andere Google Cloud Dienste Dienstagenten verwenden, um ohne IP-basierte Validierung auf den Bucket zuzugreifen.

  4. Führen Sie den Befehl gcloud alpha storage buckets create in Ihrer Entwicklungsumgebung aus, um einen Bucket mit IP-Filterregeln zu erstellen:

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

    Dabei gilt:

    • BUCKET_NAME ist der Name, den Sie dem Bucket gemäß den Benennungsanforderungen geben möchten. Beispiel: my-bucket
    • IP_FILTER_CONFIG_FILE ist die JSON-Datei, in der die Regeln für eingehende Anfragen definiert sind.

REST APIs

JSON-API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei mit den Einstellungen für den Bucket, die die Konfigurationsfelder name und ipFilter für den Bucket enthalten muss. Beispiele und Informationen zum Strukturieren der Bucket-IP-Filterregeln finden Sie unter Bucket-IP-Filterkonfigurationen.

    {
      "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
        },
    }

    Dabei gilt:

    • MODE ist der Status der IP-Filterkonfiguration. Gültige Werte sind Enabled und Disabled. Wenn Enabled festgelegt ist, werden IP-Filterregeln auf einen Bucket angewendet und alle eingehenden Anfragen an den Bucket werden anhand dieser Regeln ausgewertet. Wenn der Wert auf Disabled festgelegt ist, kann auf alle eingehenden Anfragen ohne Auswertung auf den Bucket und seine Daten zugegriffen werden, sofern Sie die erforderlichen IAM-Berechtigungen haben.

    • RANGE_CIDR ist ein öffentlicher IPv4- oder IPv6-Adressbereich, der auf den Bucket zugreifen darf. Sie können einen oder mehrere Adressbereiche als Liste eingeben.

    • PROJECT_ID ist die Projekt-ID, in der sich das VPC-Netzwerk befindet. Wenn Sie mehrere VPC-Netzwerke konfigurieren möchten, müssen Sie das Projekt angeben, in dem sich jedes Netzwerk befindet.

    • NETWORK_NAME ist der Name des VPC-Netzwerks, das auf den Bucket zugreifen darf. Wenn Sie mehrere VPC-Netzwerke konfigurieren möchten, müssen Sie für jedes Netzwerk einen Namen angeben.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS ist ein boolescher Wert, der angibt, ob Dienstagenten unabhängig von der IP-Filterkonfiguration auf den Bucket zugreifen dürfen. Wenn der Wert true ist, können andere Google Cloud Dienste Dienstagenten verwenden, um ohne IP-basierte Validierung auf den Bucket zuzugreifen.

    • ALLOW_CROSS_ORG_VPCS ist ein boolescher Wert, der angibt, ob VPC-Netzwerke, die in vpcNetworkSources definiert sind, aus einer anderen Organisation stammen dürfen. Dieses Feld ist optional. Wenn der Wert auf true gesetzt ist, sind organisationsübergreifende VPC-Netzwerke in der Anfrage zulässig. Wenn der Wert auf false gesetzt ist, werden die VPC-Netzwerke in der Anfrage auf dieselbe Organisation wie der Bucket beschränkt. Wenn der Wert nicht festgelegt ist, beträgt der Standardwert false. Dieses Feld gilt nur, wenn vpcNetworkSources nicht leer ist.

  3. Verwenden Sie cURL, um die JSON-API mit einer POST-Bucket-Anfrage aufzurufen:

    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"

    Dabei gilt:

    • JSON_FILE_NAME ist der Name der JSON-Datei, die die Einstellungen für den Bucket enthält.
    • PROJECT_IDENTIFIER ist die ID oder Nummer des Projekts, mit dem Ihr Bucket verknüpft ist. Beispiel: my-project

Bucket-IP-Filterungskonfigurationen

In diesem Abschnitt finden Sie Beispiele für JSON-Dateikonfigurationen für die Bucket-IP-Filterung, mit denen Sie den Zugriff auf Ihre Cloud Storage-Buckets steuern können. Sie können den Zugriff auf eingehende Anfragen mit einem der folgenden Beispiele gewähren:

  • Beliebige öffentliche IP-Adresse (IPv4 oder IPv6):

    Die folgende Konfiguration gewährt Zugriff auf jede öffentliche IPv4- oder IPv6-Adresse, blockiert aber Traffic, der von einer VPC stammt:

    gcloud

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

    REST APIs

    JSON-API

      {
      "ipFilter":
      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      }
      
  • Bestimmte öffentliche IP-Bereiche:

    • Die folgende Beispielkonfiguration gewährt Zugriff auf den öffentlichen IPv4-Adressbereich 192.0.2.0/24, blockiert aber Traffic, der von einer VPC stammt:

      gcloud

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

      REST APIs

      JSON-API

        {
        "ipFilter":
          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["192.0.2.0/24"]
            },
            "allowAllServiceAgentAccess": false
          }
        }
    • Die folgende Beispielkonfiguration gewährt Zugriff auf den öffentlichen IPv6-Adressbereich 2001:db8::/32, blockiert aber Traffic, der von einer VPC stammt:

      gcloud

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

      REST APIs

      JSON-API

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "publicNetworkSource":
              {
                "allowedIpCidrRanges": ["2001:db8::/32"]
              },
              "allowAllServiceAgentAccess": false
            }
        }
  • VPC-Netzwerke: Mit den folgenden Konfigurationen können Sie Zugriff auf Ressourcen in Ihrem VPC-Netzwerk gewähren. Sie können den Zugriff auf alle IP-Adressen innerhalb der VPC oder auf bestimmte IP-Bereiche innerhalb der VPC gewähren. In jedem dieser Beispiele ist PROJECT_ID die Projekt-ID, in der sich das VPC-Netzwerk befindet, und NETWORK_NAME der Name des VPC-Netzwerks, das auf den Bucket zugreifen darf.

    • Die folgende Beispielkonfiguration gewährt Zugriff auf eine Anfrage von einer beliebigen IPv4- oder IPv6-Adresse aus einer bestimmten VPC und blockiert Traffic, der von einer öffentlichen IP-Adresse stammt:

      gcloud

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

      REST APIs

      JSON-API

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "vpcNetworkSources":
                [
                  {
                    "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                    "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
                  },
                ],
              "allowAllServiceAgentAccess": false
            }
        }
    • Die folgende Beispielkonfiguration gewährt nur Zugriff auf eine Anfrage aus einer VPC, die einer VM mit einer externen IPv4-Adresse als 192.0.2.0/24 zugeordnet ist, und blockiert Traffic, der von einer öffentlichen IP-Adresse stammt:

      gcloud

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

      REST APIs

      JSON-API

        {
          "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["192.0.2.0/24"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        }
    • Die folgende Beispielkonfiguration gewährt nur Zugriff auf eine Anfrage, die von einer VPC mit einem internen IPv4-Subnetzbereich stammt, der einer VM ohne externe IP-Adresse zugeordnet ist, und blockiert Traffic, der von einer öffentlichen IP-Adresse stammt:

      gcloud

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

      Dabei gilt:

      IP_ADDRESS ist ein interner IPv4-Subnetzbereich.

      REST APIs

      JSON-API

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

      Dabei gilt:

      IP_ADDRESS ist ein interner IPv4-Subnetzbereich.

    • Die folgende Beispielkonfiguration gewährt nur Zugriff auf eine Anfrage, die von einer VPC mit einem Dual-Stack-IPv4- und -IPv6-Subnetzbereich stammt, der einer VM mit einem externen IPv6-Adressbereich als 2001:db8::/32 zugeordnet ist, und blockiert Traffic, der von einer öffentlichen IP-Adresse stammt:

      gcloud

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

      REST APIs

      JSON API

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

Nächste Schritte

Überzeugen Sie sich selbst

Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um sich von der Leistungsfähigkeit von Cloud Storage in der Praxis zu überzeugen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Cloud Storage kostenlos testen