Cette page explique comment créer un bucket avec des règles de filtrage d'adresse IP. En créant un bucket avec filtrage d'adresse IP, vous pouvez contrôler l'accès à vos buckets en examinant les requêtes entrantes par rapport aux adresses IP spécifiées dans les règles de filtrage d'adresse IP du bucket. Pour en savoir plus, consultez Filtrage des adresses IP des buckets.
Pour savoir comment créer ou mettre à jour les règles de filtrage des adresses IP sur un bucket existant, consultez Mettre à jour les règles de filtrage des adresses IP d'un bucket.
Rôles requis
Pour obtenir les autorisations requises pour créer un bucket avec des règles de filtrage des adresses IP, demandez à votre administrateur de vous accorder le rôle Administrateur de l'espace de stockage (roles/storage.admin
) sur le bucket. Ce rôle contient les autorisations requises pour créer un bucket avec des règles de filtrage d'adresse IP.
Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
storage.buckets.create
storage.buckets.setIpFilter
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés. Vous pouvez également obtenir ces autorisations avec d'autres rôles prédéfinis. Pour connaître les rôles et les autorisations associées, consultez la page Rôles IAM pour Cloud Storage.
Pour savoir comment attribuer des rôles aux buckets, consultez Utiliser IAM avec des buckets.
Créer un bucket avec des règles de filtrage d'adresse IP
gcloud
Vérifiez que la version 526.0.0 ou ultérieure de Google Cloud CLI est installée :
gcloud version | head -n1
Si vous avez installé une version antérieure de gcloud CLI, mettez-la à jour :
gcloud components update --version=526.0.0
Créez un fichier JSON qui définit les règles pour les requêtes entrantes. Pour obtenir des exemples et des informations sur la façon de structurer les règles de filtrage des adresses IP des buckets, consultez Configurations de filtrage des adresses IP des 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 }
Où :
MODE
est le mode de configuration du filtrage des adresses IP du bucket. Les valeurs valides sontEnabled
etDisabled
. Lorsque la valeur est définie surEnabled
, les règles de filtrage des adresses IP sont appliquées à un bucket. Toute requête entrante vers le bucket est évaluée par rapport à ces règles. Lorsque ce paramètre est défini surDisabled
, toutes les requêtes entrantes sont autorisées à accéder au bucket.RANGE_CIDR
est une plage d'adresses IPv4 ou IPv6 de réseau public autorisée à accéder au bucket. Vous pouvez saisir une ou plusieurs plages d'adresses sous forme de liste.PROJECT_ID
est l'ID du projet dans lequel existe le réseau cloud privé virtuel (VPC). Pour configurer plusieurs réseaux VPC, vous devez spécifier le projet dans lequel se trouve chaque réseau.NETWORK_NAME
est le nom du réseau VPC autorisé à accéder au bucket. Pour configurer plusieurs réseaux VPC, vous devez spécifier un nom pour chacun d'eux.ALLOW_CROSS_ORG_VPCS
est une valeur booléenne qui indique s'il faut autoriser les réseaux VPC définis dansvpcNetworkSources
à provenir d'une autre organisation. Ce champ est facultatif. Si la valeur est définie surtrue
, la requête autorise les réseaux VPC inter-organisations. Si la valeur est définie surfalse
, la requête limite les réseaux VPC à la même organisation que le bucket. Si aucune valeur n'est spécifiée, la valeur par défaut estfalse
.ALLOW_ALL_SERVICE_AGENT_ACCESS
est une valeur booléenne qui indique s'il faut autoriser les agents de service à accéder au bucket, quelle que soit la configuration du filtre d'adresse IP. Si la valeur esttrue
, d'autres services Google Cloud peuvent utiliser des agents de service pour accéder au bucket sans validation basée sur l'adresse IP.
Pour créer un bucket avec des règles de filtrage d'adresse IP, exécutez la commande
gcloud alpha storage buckets create
dans votre environnement de développement :gcloud alpha storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
Où :
BUCKET_NAME
correspond au nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences de dénomination. Exemples :my-bucket
.IP_FILTER_CONFIG_FILE
est le fichier JSON qui définit les règles pour les requêtes entrantes.
API REST
API JSON
Vous devez installer et initialiser gcloud CLIafin de générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant les paramètres du bucket, qui doit inclure les champs de configuration
name
etipFilter
pour le bucket. Pour obtenir des exemples et des informations sur la façon de structurer les règles de filtrage des adresses IP des buckets, consultez Configurations de filtrage des adresses IP des buckets.{ "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 }, }
Où :
MODE
correspond à l'état de la configuration du filtre d'adresses IP. Les valeurs valides sontEnabled
etDisabled
. Lorsque ce paramètre est défini surEnabled
, les règles de filtrage des adresses IP sont appliquées à un bucket, et toutes les requêtes entrantes adressées à ce bucket sont évaluées par rapport à ces règles. Lorsque la valeur est définie surDisabled
, toutes les requêtes entrantes peuvent accéder au bucket et à ses données sans aucune évaluation si vous disposez des autorisations IAM requises.RANGE_CIDR
est une plage d'adresses IPv4 ou IPv6 de réseau public autorisée à accéder au bucket. Vous pouvez saisir une ou plusieurs plages d'adresses sous forme de liste.PROJECT_ID
est l'ID du projet dans lequel se trouve le réseau VPC. Pour configurer plusieurs réseaux VPC, vous devez spécifier le projet dans lequel se trouve chaque réseau.NETWORK_NAME
est le nom du réseau VPC autorisé à accéder au bucket. Pour configurer plusieurs réseaux VPC, vous devez spécifier un nom pour chacun d'eux.ALLOW_ALL_SERVICE_AGENT_ACCESS
est une valeur booléenne qui indique s'il faut autoriser les agents de service à accéder au bucket, quelle que soit la configuration du filtre d'adresse IP. Si la valeur esttrue
, d'autres servicestrue
peuvent utiliser des agents de service pour accéder au bucket sans validation basée sur l'adresse IP. Google CloudALLOW_CROSS_ORG_VPCS
est une valeur booléenne qui indique s'il faut autoriser les réseaux VPC définis dansvpcNetworkSources
à provenir d'une autre organisation. Ce champ est facultatif. Si la valeur est définie surtrue
, la requête autorise les réseaux VPC inter-organisations. Si la valeur est définie surfalse
, la requête limite les réseaux VPC à la même organisation que le bucket. Si aucune valeur n'est spécifiée, la valeur par défaut estfalse
.
Exécutez
cURL
pour appeler l'API JSON avec une requête 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"
Où :
JSON_FILE_NAME
est le nom du fichier JSON qui contient les paramètres du bucket.PROJECT_IDENTIFIER
est l'ID ou le numéro du projet auquel le bucket est associé. Exemple :my-project
.
Configurations de filtrage des adresses IP du bucket
Cette section fournit des exemples de configurations de fichiers JSON de filtrage des adresses IP de bucket pour contrôler l'accès à vos buckets Cloud Storage. Vous pouvez accorder l'accès aux requêtes entrantes en utilisant l'un des exemples suivants :
N'importe quelle adresse IP publique (IPv4 ou IPv6) :
La configuration suivante accorde l'accès à n'importe quelle adresse IPv4 ou IPv6 publique, mais bloque le trafic provenant de n'importe quel 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 } }
Plages d'adresses IP publiques spécifiques :
L'exemple de configuration suivant accorde l'accès à la plage d'adresses IPv4 publiques
192.0.2.0/24
, mais bloque le trafic provenant de n'importe quel 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 } }
L'exemple de configuration suivant accorde l'accès à la plage d'adresses IPv6 publiques
2001:db8::/32
, mais bloque le trafic provenant de n'importe quel 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 } }
Réseaux VPC : vous pouvez accorder l'accès aux ressources de votre réseau VPC à l'aide des configurations suivantes. Vous pouvez accorder l'accès à toutes les adresses IP du VPC ou à des plages d'adresses IP spécifiques du VPC. Dans chacun de ces exemples,
PROJECT_ID
correspond à l'ID du projet dans lequel se trouve le réseau VPC, etNETWORK_NAME
correspond au nom du réseau VPC autorisé à accéder au bucket.L'exemple de configuration suivant accorde l'accès à une requête provenant de n'importe quelle adresse IPv4 ou IPv6 d'un VPC spécifique et bloque le trafic provenant d'une adresse IP publique :
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 } }
L'exemple de configuration suivant n'accorde l'accès qu'à une requête provenant d'un VPC associé à une VM avec une adresse IPv4 externe
192.0.2.0/24
et bloque le trafic provenant d'une adresse IP publique :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 } }
L'exemple de configuration suivant n'accorde l'accès qu'à une requête provenant d'un VPC avec une plage de sous-réseaux IPv4 internes associée à une VM sans adresse IP externe, et bloque le trafic provenant d'une adresse IP publique :
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
Où :
IP_ADDRESS
est une plage de sous-réseau IPv4 interne.API REST
API JSON
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false } }
Où :
IP_ADDRESS
est une plage de sous-réseau IPv4 interne.L'exemple de configuration suivant n'accorde l'accès qu'à une requête provenant d'un VPC avec une plage de sous-réseaux IPv4 et IPv6 à double pile associée à une VM avec une plage d'adresses IPv6 externes en tant que
2001:db8::/32
et bloque le trafic provenant d'une adresse IP publique :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 } }
Étapes suivantes
- Créez ou mettez à jour des règles de filtrage d'adresses IP sur un bucket existant.
- Obtenez les règles de filtrage des adresses IP des buckets.
- Lister les règles de filtrage des adresses IP des buckets
- Désactivez le filtrage des adresses IP du bucket.
Faites l'essai
Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de Cloud Storage en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
Profiter d'un essai gratuit de Cloud Storage