Crea un bucket con regole di filtro IP

Questa pagina descrive come creare un bucket con regole di filtro IP. Se crei un bucket con il filtro IP, puoi controllare l'accesso ai tuoi bucket esaminando le richieste in entrata in base agli indirizzi IP specificati nelle regole di filtro IP del bucket. Per maggiori dettagli, vedi Filtro IP dei bucket.

Per informazioni su come creare o aggiornare le regole di filtro IP in un bucket esistente, vedi Aggiornare le regole di filtro IP del bucket.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare un bucket con regole di filtro IP, chiedi all'amministratore di concederti il ruolo Amministratore archiviazione (roles/storage.admin) per il bucket. Questo ruolo contiene le autorizzazioni necessarie per creare un bucket con regole di filtro IP.

Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

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

Puoi anche ottenere queste autorizzazioni con ruoli personalizzati. Potresti anche riuscire a ottenere queste autorizzazioni con altri ruoli predefiniti. Per vedere quali ruoli sono associati a quali autorizzazioni, consulta la pagina Ruoli IAM per Cloud Storage.

Per istruzioni sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket.

Crea un bucket con regole di filtro IP

gcloud

  1. Verifica di aver installato Google Cloud CLI versione 526.0.0 o successiva:

    gcloud version | head -n1
    
  2. Se hai installato una versione precedente di gcloud CLI, aggiornala:

    gcloud components update --version=526.0.0
    
  3. Crea un file JSON che definisca le regole per le richieste in entrata. Per esempi e informazioni su come strutturare le regole di filtro IP dei bucket, consulta Configurazioni del filtro IP dei 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
    }

    Dove:

    • MODE è la modalità di configurazione del filtro IP del bucket. I valori validi sono Enabled e Disabled. Se impostato su Enabled, le regole di filtro IP vengono applicate a un bucket. Qualsiasi richiesta in entrata al bucket viene valutata in base a queste regole. Se impostato su Disabled, tutte le richieste in entrata possono accedere al bucket.

    • RANGE_CIDR è un intervallo di indirizzi IPv4 o IPv6 di rete pubblica autorizzato ad accedere al bucket. Puoi inserire uno o più intervalli di indirizzi come elenco.

    • PROJECT_ID è l'ID progetto in cui esiste la rete Virtual Private Cloud (VPC). Per configurare più reti VPC, devi specificare il progetto in cui si trova ogni rete.

    • NETWORK_NAME è il nome della rete VPC autorizzata ad accedere al bucket. Per configurare più reti VPC, devi specificare un nome per ciascuna rete.

    • ALLOW_CROSS_ORG_VPCS è un valore booleano che indica se consentire alle reti VPC definite in vpcNetworkSources di provenire da un'organizzazione diversa. Questo campo è facoltativo. Se impostato su true, la richiesta consente reti VPC tra organizzazioni. Se impostato su false, la richiesta limita le reti VPC alla stessa organizzazione del bucket. Se non è specificato, il valore predefinito è false.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS è un valore booleano che indica se consentire agli agenti di servizio di accedere al bucket, indipendentemente dalla configurazione del filtro IP. Se il valore è true, altri servizi Google Cloud possono utilizzare agenti di servizio per accedere al bucket senza la convalida basata su IP.

  4. Per creare un bucket con regole di filtro IP, esegui il comando gcloud alpha storage buckets create nel tuo ambiente di sviluppo:

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

    Dove:

    • BUCKET_NAME è il nome che vuoi dare al bucket, soggetto ai requisiti di denominazione. Ad esempio, my-bucket.
    • IP_FILTER_CONFIG_FILE è il file JSON che definisce le regole per le richieste in entrata.

API REST

API JSON

  1. Avere la gcloud CLI installata e inizializzata, che ti consente di generare un token di accesso per l'intestazione Authorization.

  2. Crea un file JSON contenente le impostazioni per il bucket, che devono includere i campi di configurazione name e ipFilter per il bucket. Per esempi e informazioni su come strutturare le regole di filtro IP bucket, vedi Configurazioni del filtro 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
        },
    }

    Dove:

    • MODE è lo stato della configurazione del filtro IP. I valori validi sono Enabled e Disabled. Se impostato su Enabled, le regole di filtro IP vengono applicate a un bucket e tutte le richieste in entrata al bucket vengono valutate in base a queste regole. Se impostato su Disabled, tutte le richieste in entrata possono accedere al bucket e ai relativi dati senza alcuna valutazione se disponi delle autorizzazioni IAM richieste.

    • RANGE_CIDR è un intervallo di indirizzi IPv4 o IPv6 di rete pubblica autorizzato ad accedere al bucket. Puoi inserire uno o più intervalli di indirizzi come elenco.

    • PROJECT_ID è l'ID progetto in cui esiste la rete VPC. Per configurare più reti VPC, devi specificare il progetto in cui si trova ciascuna rete.

    • NETWORK_NAME è il nome della rete VPC autorizzata ad accedere al bucket. Per configurare più reti VPC, devi specificare un nome per ciascuna rete.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS è un valore booleano che indica se consentire agli agenti di servizio di accedere al bucket, indipendentemente dalla configurazione del filtro IP. Se il valore è true, altri servizi Google Cloud possono utilizzare agenti di servizio per accedere al bucket senza la convalida basata su IP.

    • ALLOW_CROSS_ORG_VPCS è un valore booleano che indica se consentire alle reti VPC definite in vpcNetworkSources di provenire da un'organizzazione diversa. Questo campo è facoltativo. Se impostato su true, la richiesta consente reti VPC tra organizzazioni diverse. Se impostato su false, la richiesta limita le reti VPC alla stessa organizzazione del bucket. Se non è specificato, il valore predefinito è false.

  3. Utilizza cURL per chiamare l'API JSON con una richiesta 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"

    Dove:

    • JSON_FILE_NAME è il nome del file JSON che contiene le impostazioni per il bucket.
    • PROJECT_IDENTIFIER è l'ID o il numero del progetto a cui è associato il bucket. Ad esempio, my-project.

Configurazioni del filtro IP del bucket

Questa sezione fornisce esempi di configurazioni di file JSON per il filtro IP dei bucket per controllare l'accesso ai bucket Cloud Storage. Puoi concedere l'accesso alle richieste in entrata utilizzando uno qualsiasi dei seguenti esempi:

  • Qualsiasi indirizzo IP pubblico (IPv4 o IPv6):

    La seguente configurazione concede l'accesso a qualsiasi indirizzo IPv4 o IPv6 pubblico, ma blocca il traffico proveniente da qualsiasi VPC:

    gcloud

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

    API REST

    API JSON

      {
      "ipFilter":
      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      }
      
  • Intervalli IP pubblici specifici:

    • La seguente configurazione di esempio concede l'accesso all'intervallo di indirizzi IPv4 pubblici 192.0.2.0/24, ma blocca il traffico proveniente da qualsiasi VPC:

      gcloud

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

      API REST

      API JSON

        {
        "ipFilter":
          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["192.0.2.0/24"]
            },
            "allowAllServiceAgentAccess": false
          }
        }
    • La seguente configurazione di esempio concede l'accesso all'intervallo di indirizzi IPv6 pubblici 2001:db8::/32, ma blocca il traffico proveniente da qualsiasi VPC:

      gcloud

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

      API REST

      API JSON

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "publicNetworkSource":
              {
                "allowedIpCidrRanges": ["2001:db8::/32"]
              },
              "allowAllServiceAgentAccess": false
            }
        }
  • Reti VPC: utilizzando le seguenti configurazioni, puoi concedere l'accesso alle risorse all'interno della tua rete VPC. Puoi concedere l'accesso a tutti gli indirizzi IP all'interno del VPC o a intervalli IP specifici all'interno del VPC. In ciascuno di questi esempi, PROJECT_ID è l'ID progetto in cui esiste la rete VPC e NETWORK_NAME è il nome della rete VPC autorizzata ad accedere al bucket.

    • La seguente configurazione di esempio concede l'accesso a una richiesta da qualsiasi indirizzo IPv4 o IPv6 proveniente da un VPC specifico e blocca il traffico proveniente da un indirizzo IP pubblico:

      gcloud

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

      API REST

      API JSON

        {
          "ipFilter":
            {
              "mode": "Enabled",
              "vpcNetworkSources":
                [
                  {
                    "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                    "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
                  },
                ],
              "allowAllServiceAgentAccess": false
            }
        }
    • La seguente configurazione di esempio concede l'accesso solo a una richiesta da una VPC associata a una VM con un indirizzo IPv4 esterno come 192.0.2.0/24 e blocca il traffico proveniente da un indirizzo IP pubblico:

      gcloud

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

      API REST

      API JSON

        {
          "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["192.0.2.0/24"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        }
    • La seguente configurazione di esempio concede l'accesso solo a una richiesta proveniente da un VPC con un intervallo di subnet IPv4 interno associato a una VM senza indirizzo IP esterno e blocca il traffico proveniente da un indirizzo IP pubblico:

      gcloud

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

      Dove:

      IP_ADDRESS è un intervallo di subnet IPv4 interno.

      API REST

      API JSON

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

      Dove:

      IP_ADDRESS è un intervallo di subnet IPv4 interno.

    • La seguente configurazione di esempio concede l'accesso solo a una richiesta proveniente da un VPC con intervallo di subnet IPv4 e IPv6 a doppio stack associato a una VM con un intervallo di indirizzi IPv6 esterni come 2001:db8::/32 e blocca il traffico proveniente da un indirizzo IP pubblico:

      gcloud

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

      API REST

      API JSON

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

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di Cloud Storage in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti senza addebiti per l'esecuzione, il test e il deployment dei workload.

Prova Cloud Storage gratuitamente