Limiter les emplacements de ressources

Présentation

Ce guide explique comment définir une règle d'administration incluant la contrainte d'emplacements de ressources.

Vous pouvez limiter l'emplacement physique d'une nouvelle ressource à l'aide de la contrainte d'emplacement des ressources du service de règles d'administration. Vous pouvez utiliser la propriété "location" d'une ressource pour identifier où celle-ci est déployée et gérée par le service. Pour les ressources contenant des données de certains services Google Cloud, cette propriété indique également l'emplacement où les données sont stockées. Cette contrainte vous permet de définir les emplacements Google Cloud autorisés dans lesquels les ressources des services compatibles de votre hiérarchie peuvent être créées.

Une fois que vous avez défini les emplacements des ressources, cette limitation ne s'applique qu'aux ressources nouvellement créées. Les ressources que vous avez créées avant de définir la contrainte d'emplacement des ressources continueront d'exister et d'exécuter leur fonction.

Les règles qui incluent cette contrainte ne seront pas appliquées à la création de sous-ressources pour certains services, tels que Cloud Storage et Dataproc.

Limites

La contrainte d'emplacement des ressources du service de règles d'administration contrôle la possibilité de créer des ressources régionales. Cela n'aura pas d'incidence sur la création des ressources globales. Pour éviter de modifier de façon destructive l'infrastructure de diffusion existante, vous devez tester les stratégies sur des projets et des dossiers hors production, puis appliquer ces stratégies progressivement au sein d'une organisation.

Pour en savoir plus sur les engagements relatifs au stockage de données, consultez les Conditions d'utilisation de Google Cloud Platform et les Conditions spécifiques au service. Les règles d'administration contenant la contrainte d'emplacement des ressources ne constituent pas des engagements de stockage de données.

Cette contrainte s'applique à un sous-ensemble spécifique de types de ressources et de produits. Pour obtenir la liste des services actuellement pris en charge et des détails sur le comportement de chaque service, consultez la page Services compatibles avec les emplacements de ressources.

Types d'emplacement

Vous pouvez déployer des ressources Google Cloud dans des types d'emplacement qui représentent différentes catégories de taille. Le plus grand type d'emplacement est le multi-region, qui inclut plusieurs éléments region. Chaque élément region se subdivise en zones. Pour en savoir plus sur les régions et les zones, consultez la page Présentation des régions et des zones.

  • Les emplacements Multi-region sont protégés par des ressources physiques dans plusieurs éléments region et ne sont généralement utilisés que par les ressources de stockage. Exemple : us, asia, europe et global.

  • Les emplacements Region sont géographiquement isolés les uns des autres. Quelques exemples incluent us-west1 (Oregon), asia-northeast1 (Tokyo) et europe-west1 (Belgique).

  • Les emplacements Zone constituent le type d'emplacement le plus précis et isolé qui est utilisé pour le déploiement de ressources. Une zone est un domaine de défaillance indépendant au sein d'une région (region). Exemples : us-east1-a, us-west1-b et asia-northeast1-a.

Nous vous recommandons d'utiliser des groupes de valeurs à la place des valeurs individuelles lorsque vous configurez des emplacements. Différents types de ressources sont compatibles avec différents types d'emplacement. Vous pouvez ajouter des emplacements dans les zones géographiques de votre choix. L'utilisation d'un groupe de valeurs sélectionné par Google Cloud vous permet de choisir une ou plusieurs zones géographiques, sans avoir à spécifier d'emplacements cloud actuels ou futurs.

Définir la règle d'administration

La contrainte d'emplacement de ressources est un type de contrainte de liste. Vous pouvez ajouter et supprimer des emplacements dans les listes allowed_values ou denied_values d'une contrainte d'emplacement de ressources. Pour éviter que les règles d'administration ne restreignent le comportement des services de façon inattendue, utilisez un groupe de valeurs ou une liste d'éléments allowed_values représentant la limite géographique que vous souhaitez définir.

Pour définir une règle d'administration incluant une contrainte d'emplacement de ressource, procédez comme suit :

Console

  1. Accédez à la page Règles d'administration dans Google Cloud Console. Accéder à la page "Règles d'administration"

  2. Cliquez sur Sélectionner.

  3. Sélectionnez l'organisation pour laquelle vous souhaitez définir la règle.

  4. Cliquez sur Google Cloud Platform - Définir une restriction de ressource.

  5. Cliquez sur Modifier.

  6. Sous Applicable à, sélectionnez Personnaliser.

  7. Sous Valeurs de règles, sélectionnez Personnalisé.

  8. Dans la zone Valeur de la règle, saisissez le préfixe in et une chaîne d'emplacement groupe de valeurs, puis appuyez sur Entrée. Par exemple, in:us-locations ou in:us-west1-locations. Vous pouvez entrer plusieurs chaînes d'emplacement.

    1. Vous pouvez également entrer des emplacements relatifs à plusieurs régions, à une région ou à une zone spécifiques en tant que chaînes d'emplacement. Pour obtenir la liste des emplacements disponibles, consultez la page Services compatibles avec les emplacements de ressources.
  9. Cliquez sur Enregistrer. Une notification s'affiche. Elle confirme la mise à jour de la règle.

gcloud

Vous pouvez définir des règles avec l'outil de ligne de commande gcloud. Pour créer une règle incluant la contrainte d'emplacement des ressources, commencez par créer un fichier de règles :

cat POLICY.YAML
etag: BwVUSr8Q7Ng=
constraint: constraints/gcp.resourceLocations
listPolicy:
  deniedValues:
    in:us-east1-locations
    in:northamerica-northeast1-locations

Exécutez ensuite la commande set-policy suivante :

gcloud beta resource-manager org-policies set-policy \
    --organization 'ORGANIZATION_ID' \
    POLICY.YAML

Où :

  • ORGANIZATION_ID correspond à l'ID du nœud d'organisation sur lequel cette règle doit être définie.
  • POLICY.YAML correspond au fichier .yaml contenant la règle d'administration souhaitée.

Une réponse renvoie les résultats de la nouvelle règle d'administration :

constraint: constraints/gcp.resourceLocations
etag: BwVUSr8Q7Ng=
listPolicy:
  deniedValues:
    in:us-east1-locations
    in:northamerica-northeast1-locations
updateTime: '2018-01-01T00:00:00.000Z'

Vous pouvez également entrer des emplacements relatifs à plusieurs régions, à une région ou à une zone spécifiques en tant que chaînes d'emplacement. Pour obtenir la liste des emplacements disponibles, consultez la page Services compatibles avec les emplacements de ressources.

API

Vous pouvez utiliser l'API Resource Manager pour définir une règle d'administration pour une ressource. Vous aurez besoin d'un jeton de support OAuth 2.0 pour l'authentification et l'autorisation.

Pour définir une règle d'administration à l'aide de la contrainte d'emplacement des ressources, procédez comme suit :

curl -X POST -H "Content-Type: application/json" -H "Authorization: \
Bearer ${bearer_token}" -d '{policy: {etag: "BwVtXec438Y=", constraint: \
"constraints/gcp.resourceLocations", list_policy: {denied_values: \
["in:europe-locations", "in:southamerica-locations"] }}}' \
https://cloudresourcemanager.googleapis.com/v1/organizations/123456789:setOrgPolicy

Une réponse renvoie les résultats de la nouvelle règle d'administration :

{
  "constraint": "constraints/gcp.resourceLocations",
  "etag": "BwVtXec438Y=",
  "updateTime": "2018-01-01T00:00:00.000Z",
  "listPolicy": {
    "deniedValues": [
      "europe-locations",
      "southamerica-locations",
    ]
  }
}

Vous pouvez également entrer des emplacements relatifs à plusieurs régions, à une région ou à une zone spécifiques en tant que chaînes d'emplacement. Pour obtenir la liste des emplacements disponibles, consultez la page Services compatibles avec les emplacements de ressources.

Pour en savoir plus sur l'utilisation de contraintes dans les règles d'administration, consultez la page Utiliser des contraintes.

Utiliser l'héritage dans la règle d'administration

Vous pouvez affiner votre règle d'administration de manière à hériter de la règle d'administration des nœuds parents de la ressource. L'héritage vous accorde un contrôle précis sur les règles d'administration utilisées dans votre hiérarchie de ressources.

Pour activer l'héritage sur un nœud de ressource, définissez inheritFromParent = true dans le fichier .yaml de la règle d'administration. Exemple :

etag: BwVtXec438Y=
constraint: constraints/gcp.resourceLocations
listPolicy:
  deniedValues:
    "us-west1"
  inheritFromParent: true

Exemple de message d'erreur

Les services qui acceptent la contrainte d'emplacement des ressources ne peuvent pas créer de ressources dans les emplacements qui ne respecteraient pas la contrainte. Si un service tente de créer une ressource dans un emplacement qui enfreint la contrainte, la tentative échoue et un message d'erreur est généré.

Ce message d'erreur aura le format suivant : LOCATION_IN_REQUEST violates constraint constraints/gcp.resourceLocations on the resource RESOURCE_TESTED.

Dans l'exemple suivant, une ressource Compute Engine ne parvient pas à créer une instance en raison de l'application des règles :

Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations
on the resource
projects/policy-violation-test/zones/us-east1-b/instances/instance-3.

Entrée de journal Stackdriver Logging et Cloud Audit Logging :

{
 insertId: "5u759gdngec"
 logName: "projects/policy-violation-test/logs/cloudaudit.googleapis.com%2Factivity"
 protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"
  authenticationInfo: {…}
  authorizationInfo: [6]
  methodName: "beta.compute.instances.insert"
  request: {…}
  requestMetadata: {…}
  resourceLocation: {…}
  resourceName: "projects/policy-violation-test/zones/us-east1-b/instances/instance-3"
  response: {
   @type: "type.googleapis.com/error"
   error: {
    code: 412
    errors: [
     0: {
      domain: "global"
      location: "If-Match"
      locationType: "header"
      message: "Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations on the resource projects/policy-violation-test/zones/us-east1-b/instances/instance-3."
      reason: "conditionNotMet"
     }
    ]
    message: "Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations on the resource projects/policy-violation-test/zones/us-east1-b/instances/instance-3."
   }
  }
  serviceName: "compute.googleapis.com"
  status: {
   code: 3
   message: "INVALID_ARGUMENT"
  }
 }
 receiveTimestamp: "2019-06-14T03:04:23.660988360Z"
 resource: {
  labels: {…}
  type: "gce_instance"
 }
 severity: "ERROR"
 timestamp: "2019-06-14T03:04:22.783Z"
}

Groupes de valeurs

Les groupes de valeurs sont des ensembles de groupes et d'emplacements organisés par Google pour fournir un moyen simple de définir l'emplacement de vos ressources. Les groupes de valeurs comprennent de nombreux emplacements associés et sont étendus par Google au fil du temps, sans qu'il soit nécessaire de modifier la règle d'administration pour s'adapter aux nouveaux emplacements.

Pour utiliser des groupes de valeurs dans vos règles d'administration, ajoutez la chaîne in: à vos entrées en tant que préfixe. Pour en savoir plus sur l'utilisation des préfixes de valeurs, consultez la page Utiliser des contraintes. Les noms de groupe ne sont pas validés lors de l'appel permettant de définir la règle d'administration. Si le nom de groupe fourni n'existe pas, aucune nouvelle valeur n'est ajoutée à la règle d'administration effective, à moins que ce nom de groupe ne soit créé par Google ultérieurement.

Le tableau suivant contient la liste actuelle des groupes disponibles :

Groupe Détails Membres directs
Asie Tous les emplacements en Asie :
in:asia-locations
Groupes :
  • asia-east1-locations
  • asia-east2-locations
  • asia-northeast1-locations
  • asia-northeast2-locations
  • asia-south1-locations
  • asia-southeast1-locations

Valeurs :
  • asia
Taïwan Tous les emplacements à Taïwan :
in:asia-east1-locations
Valeurs :
  • asia-east1
  • asia-east1-a
  • asia-east1-b
  • asia-east1-c
Hong Kong Tous les emplacements à Hong Kong :
in:asia-east2-locations
Valeurs :
  • asia-east2
  • asia-east2-a
  • asia-east2-b
  • asia-east2-c
Tokyo Tous les emplacements à Tokyo :
in:asia-northeast1-locations
Valeurs :
  • asia-northeast1
  • asia-northeast1-a
  • asia-northeast1-b
  • asia-northeast1-c
Osaka Tous les emplacements à Osaka :
in:asia-northeast2-locations
Valeurs :
  • asia-northeast2
  • asia-northeast2-a
  • asia-northeast2-b
  • asia-northeast2-c
Mumbai Tous les emplacements à Mumbai :
in:asia-south1-locations
Valeurs :
  • asia-south1
  • asia-south1-a
  • asia-south1-b
  • asia-south1-c
Singapour Tous les emplacements à Singapour :
in:asia-southeast1-locations
Valeurs :
  • asia-southeast1
  • asia-southeast1-a
  • asia-southeast1-b
  • asia-southeast1-c
Australie Tous les emplacements en Australie :
in:australia-locations
Groupes :
  • australia-southeast1-locations
Sydney Tous les emplacements à Sydney :
in:australia-southeast1-locations
Valeurs :
  • australia-southeast1
  • australia-southeast1-a
  • australia-southeast1-b
  • australia-southeast1-c
Europe Tous les emplacements en Europe :
in:europe-locations
Groupes :
  • europe-north1-locations
  • europe-west1-locations
  • europe-west2-locations
  • europe-west3-locations
  • europe-west4-locations
  • europe-west6-locations

Valeurs :
  • EU
  • eu
  • europe-west
Finlande Tous les emplacements en Finlande :
in:europe-north1-locations
Valeurs :
  • europe-north1
  • europe-north1-a
  • europe-north1-b
  • europe-north1-c
Belgique Tous les emplacements en Belgique :
in:europe-west1-locations
Valeurs :
  • europe-west1
  • europe-west1-b
  • europe-west1-c
  • europe-west1-d
Londres Tous les emplacements à Londres :
in:europe-west2-locations
Valeurs :
  • europe-west2
  • europe-west2-a
  • europe-west2-b
  • europe-west2-c
Francfort Tous les emplacements à Francfort :
in:europe-west3-locations
Valeurs :
  • europe-west3
  • europe-west3-a
  • europe-west3-b
  • europe-west3-c
Pays-Bas Tous les emplacements aux Pays-Bas :
in:europe-west4-locations
Valeurs :
  • europe-west4
  • europe-west4-a
  • europe-west4-b
  • europe-west4-c
Zurich Tous les emplacements à Zurich :
in:europe-west6-locations
Valeurs :
  • europe-west6
  • europe-west6-a
  • europe-west6-b
  • europe-west6-c
Amérique du Nord Tous les emplacements en Amérique du Nord :
in:northamerica-locations
Groupes :
  • northamerica-northeast1-locations
  • us-locations

Valeurs :
  • nam3
Montréal Tous les emplacements à Montréal :
in:northamerica-northeast1-locations
Valeurs :
  • northamerica-northeast1
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • northamerica-northeast1-c
États-Unis Tous les emplacements aux États-Unis :
in:us-locations
Groupes :
  • us-central1-locations
  • us-central2-locations
  • us-east1-locations
  • us-east4-locations
  • us-west1-locations
  • us-west2-locations

Valeurs :
  • US
  • nam3
  • us
  • us-central
Iowa Tous les emplacements en Iowa :
in:us-central1-locations
Valeurs :
  • us-central1
  • us-central1-a
  • us-central1-b
  • us-central1-c
  • us-central1-f
Oklahoma Tous les emplacements en Oklahoma :
in:us-central2-locations
Valeurs :
  • us-central2
  • us-central2-a
  • us-central2-b
  • us-central2-c
  • us-central2-d
Caroline du Sud Toutes les zones en Caroline du Sud :
in:us-east1-locations
Valeurs :
  • us-east1
  • us-east1-a
  • us-east1-b
  • us-east1-c
  • us-east1-d
Virginie du Nord Tous les emplacements en Virginie du Nord :
in:us-east4-locations
Valeurs :
  • us-east4
  • us-east4-a
  • us-east4-b
  • us-east4-c
Oregon Tous les emplacements en Oregon :
in:us-west1-locations
Valeurs :
  • us-west1
  • us-west1-a
  • us-west1-b
  • us-west1-c
Los Angeles Tous les emplacements à Los Angeles :
in:us-west2-locations
Valeurs :
  • us-west2
  • us-west2-a
  • us-west2-b
  • us-west2-c
Amérique du Sud Tous les emplacements en Amérique du Sud :
in:southamerica-locations
Groupes :
  • southamerica-east1-locations
São Paulo Tous les emplacements à São Paulo :
in:southamerica-east1-locations
Valeurs :
  • southamerica-east1
  • southamerica-east1-a
  • southamerica-east1-b
  • southamerica-east1-c

Authentification

Le Service de règles d'administration utilise OAuth 2.0 pour l'authentification et l'autorisation d'API. Pour obtenir un jeton de support OAuth 2.0, procédez comme suit :

  1. Accédez à la page OAuth 2.0 Playground.

  2. Dans la liste de champs d'application de l'étape 1, sélectionnez l'API Cloud Resource Manager v2 > https://www.googleapis.com/auth/cloud-platform, puis cliquez sur Authorize APIs (Autoriser les API).

  3. Sur la page Sign in with Google (Se connecter avec Google) qui s'affiche, sélectionnez votre compte et connectez-vous.

  4. Pour fournir l'accès à Google Oauth 2.0 Playground, cliquez sur Allow (Autoriser) dans l'invite qui s'affiche.

  5. À l'étape 2, cliquez sur Exchange authorization code for tokens (Échanger le code d'autorisation contre des jetons).

  6. Votre chaîne de jeton d'accès s'affiche au bas du volet Request / Response (Requête/Réponse) à droite :

     {
       "access_token": "ACCESS_TOKEN",
       "token_type": "Bearer",
       "expires_in": 3600
     }
    

    ACCESS_TOKEN correspond à la chaîne de jeton de support OAuth 2.0 que vous pouvez utiliser pour l'autorisation de l'API.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation de Resource Manager