Restringe las ubicaciones de recursos

Descripción general

En esta guía, se describe cómo establecer una política de la organización que incluya la restricción de ubicaciones de recursos.

Puedes limitar la ubicación física de un nuevo recurso con la restricción de ubicaciones de recursos del Servicio de políticas de la organización. Puedes usar la propiedad de ubicación de un recurso para identificar el lugar en el que esta se implementa y mantiene mediante el servicio. Para los recursos que contienen datos de algunos servicios de Google Cloud, con esta propiedad también se refleja la ubicación en la que se almacenan los datos. A través de esta restricción, se pueden definir las ubicaciones permitidas de Google Cloud donde es posible crear los recursos para los servicios compatibles en tu jerarquía.

Después de definir las ubicaciones de recursos, esta limitación se aplica solo a los recursos recién creados. Los recursos que creaste antes de establecer la restricción de ubicaciones de recursos continuarán existiendo y cumpliendo su función.

No se aplicará una política que incluya esta restricción en la creación de subrecursos para ciertos servicios, como Cloud Storage y Dataproc.

Limitaciones

Mediante la restricción Servicio de la política de la organización en las ubicaciones de recursos, se controla la capacidad de crear recursos regionales. Esto no afecta el lugar en el que se crean los recursos globales. Para evitar romper la infraestructura de servicio existente, debes probar cualquier política nueva en proyectos y carpetas que no sean de producción y, luego, aplicar la política gradualmente dentro de tu organización.

Para conocer los compromisos de almacenamiento de datos, consulta las Condiciones del Servicio de Google Cloud y las Condiciones del Servicio específicas. Las políticas de la organización que contienen la restricción de ubicaciones de recursos no son compromisos de almacenamiento de datos.

Esta restricción se aplica a un subconjunto específico de productos y tipos de recursos. Para obtener una lista de los servicios admitidos actualmente y detalles sobre el comportamiento de cada servicio, consulta la página Servicios admitidos de las ubicaciones de recursos.

Tipos de ubicación

Puedes implementar recursos de Google Cloud en tipos de ubicación que representan diferentes categorías de tamaño. El tipo de ubicación multi-region es el más grande y comprende más de una region. Cada region se subdivide en zones. Para obtener más información sobre regiones y zonas, consulta la descripción general de Regiones y zonas.

  • Las ubicaciones Multi-region están respaldadas por recursos físicos en más de una region y, por lo general, solo son utilizadas por recursos basados en almacenamiento. Algunos ejemplos incluyen us, asia, europe y global.

  • Las ubicaciones Region están geográficamente aisladas unas de otras. Algunos ejemplos son us-west1 (Oregón), asia-northeast1 (Tokio) y europe-west1 (Bélgica).

  • Las ubicaciones Zone son el tipo de ubicación más detallado y aislado que se utiliza para implementar recursos. Una zone es un dominio con fallas independiente dentro de una region. Algunos ejemplos son us-east1-a, us-west1-b y asia-northeast1-a.

En Google, se recomienda que uses Grupos de valores en lugar de valores individuales mientras configuras las ubicaciones. En los diferentes tipos de recursos, se admiten diferentes tipos de ubicaciones, y es posible que se agreguen nuevas ubicaciones en la ubicación geográfica deseada. El uso de un grupo de valores seleccionado en Google Cloud te permite elegir ubicaciones geográficas sin tener que especificar ubicaciones actuales o futuras de Cloud.

Configura la política de la organización

La restricción de ubicaciones de recursos es un tipo de restricción de lista. Puedes agregar y quitar ubicaciones de las listas de allowed_values o denied_values de una restricción de ubicaciones de recursos. Para evitar que con las políticas de la organización se restrinja inesperadamente el comportamiento del servicio cuando se agreguen nuevas ubicaciones a la lista disponible, usa un grupo de valores o una lista de allowed_values con la que se que represente todo el límite geográfico que desees definir.

Para establecer una política de la organización que incluya una restricción de ubicaciones de recursos, haz lo siguiente:

Console

  1. Dirígete a la página Políticas de la organización en Google Cloud Console. Ir a la página Políticas de la organización

  2. Haz clic en Seleccionar.

  3. Selecciona la organización para la que deseas establecer la política.

  4. Haz clic en Google Cloud Platform - Definir restricción del recurso.

  5. Haz clic en Editar.

  6. En Se aplica a, selecciona Personalizar.

  7. En Valores de la política, selecciona Personalizar.

  8. En el cuadro Valor de la política, ingresa el prefijo in y una string de ubicación del grupo de valores y, luego, presiona Entrar. Por ejemplo, in:us-locations o in:us-west1-locations. Puedes ingresar varias strings de ubicación.

    1. También puedes ingresar ubicaciones específicas de zonas, regiones o multirregiones como strings de ubicación. Para obtener una lista de las ubicaciones disponibles, consulta la página Servicios admitidos de las ubicaciones de recursos.
  9. Haz clic en Guardar. Aparece una notificación para confirmar la actualización de la política.

gcloud

Puedes establecer políticas con la herramienta de línea de comandos de gcloud. Para crear una política que incluya la restricción de ubicaciones de recursos, primero crea un archivo de política de la siguiente manera:

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

Luego, ejecuta el siguiente comando set-policy:

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

Donde:

  • ORGANIZATION_ID es el ID del nodo de la organización para establecer esta política.
  • POLICY.YAML es el archivo .yaml que contiene la política de la organización que deseas.

Se muestra una respuesta con los resultados de la nueva política de la organización, como la siguiente:

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

También puedes ingresar ubicaciones específicas de zonas, regiones o multirregiones como strings de ubicación. Para obtener una lista de las ubicaciones disponibles, consulta la página Servicios admitidos de las ubicaciones de recursos.

API

Puedes usar la API de Resource Manager para establecer una política de la organización en un recurso. Necesitas un token del portador OAuth 2.0 para autenticación y autorización.

Para establecer una política de la organización mediante la restricción de ubicaciones de recursos, haz lo siguiente:

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

Se muestra una respuesta con los resultados de la nueva política de la organización, como la siguiente:

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

También puedes ingresar ubicaciones específicas de zonas, regiones o multirregiones como strings de ubicación. Para obtener una lista de las ubicaciones disponibles, consulta la página Servicios admitidos de las ubicaciones de recursos.

Para obtener información sobre el uso de restricciones en las políticas de la organización, consulta la sección sobre cómo usar restricciones.

Usa la herencia en la política de la organización

Puedes definir mejor tu política de la organización para heredar la política de la organización desde los nodos superiores del recurso. Con la herencia, se brinda un control detallado sobre las políticas de la organización utilizadas en toda tu jerarquía de recursos.

Para habilitar la herencia en un nodo de recursos, establece inheritFromParent = true en el archivo de la política de la organización .yaml. Por ejemplo:

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

Ejemplo de mensaje de error

No se permite crear recursos nuevos en ubicaciones en las que se infringe la restricción mediante los servicios que admiten la restricción de ubicación de recursos. Si un servicio intenta crear un recurso en una ubicación que infringe la restricción, el intento fallará y se generará un mensaje de error.

Este mensaje de error tendrá el siguiente formato: LOCATION_IN_REQUEST violates constraint constraints/gcp.resourceLocations on the resource RESOURCE_TESTED.

En el siguiente ejemplo, un recurso de Compute Engine no puede crear una nueva instancia debido a la aplicación de políticas:

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

La siguiente es una entrada de registro de Stackdriver y 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"
}

Grupos de valores

Los grupos de valores son colecciones de grupos y ubicaciones que se seleccionan en Google para proporcionar una forma sencilla de definir tus ubicaciones de recursos. Los grupos de valores incluyen muchas ubicaciones relacionadas y se expanden a lo largo del tiempo en Google sin necesidad de cambiar la política de la organización para adaptarse a las nuevas ubicaciones.

Para usar grupos de valores en tu política de la organización, escribe tus entradas con la string in:. Para obtener más información sobre el uso de prefijos de valor, consulta la sección sobre cómo usar restricciones. Los nombres de grupo no se validan en la llamada para establecer la política de la organización. Si el nombre de grupo proporcionado no existe, no se agregan nuevos valores a la política de la organización vigente, a menos que en Google se cree ese nombre de grupo más adelante.

En la siguiente tabla, se incluye la lista actual de grupos disponibles:

Grupo Detalles Miembros directos
Asia Todas las ubicaciones en Asia:
in:asia-locations
Grupos:
  • asia-east1-locations
  • asia-east2-locations
  • asia-northeast1-locations
  • asia-northeast2-locations
  • asia-south1-locations
  • asia-southeast1-locations

Valores:
  • asia
Taiwán Todas las ubicaciones en Taiwán:
in:asia-east1-locations
Valores:
  • asia-east1
  • asia-east1-a
  • asia-east1-b
  • asia-east1-c
Hong Kong Todas las ubicaciones en Hong Kong:
in:asia-east2-locations
Valores:
  • asia-east2
  • asia-east2-a
  • asia-east2-b
  • asia-east2-c
Tokio Todas las ubicaciones en Tokio:
in:asia-northeast1-locations
Valores:
  • asia-northeast1
  • asia-northeast1-a
  • asia-northeast1-b
  • asia-northeast1-c
Osaka Todas las ubicaciones en Osaka:
in:asia-northeast2-locations
Valores:
  • asia-northeast2
  • asia-northeast2-a
  • asia-northeast2-b
  • asia-northeast2-c
Bombay Todas las ubicaciones en Bombay:
in:asia-south1-locations
Valores:
  • asia-south1
  • asia-south1-a
  • asia-south1-b
  • asia-south1-c
Singapur Todas las ubicaciones en Singapur:
in:asia-southeast1-locations
Valores:
  • asia-southeast1
  • asia-southeast1-a
  • asia-southeast1-b
  • asia-southeast1-c
Australia Todas las ubicaciones en Australia:
in:australia-locations
Grupos:
  • australia-southeast1-locations
Sídney Todas las ubicaciones en Sídney:
in:australia-southeast1-locations
Valores:
  • australia-southeast1
  • australia-southeast1-a
  • australia-southeast1-b
  • australia-southeast1-c
Europa Todas las ubicaciones en Europa:
in:europe-locations
Grupos:
  • europe-north1-locations
  • europe-west1-locations
  • europe-west2-locations
  • europe-west3-locations
  • europe-west4-locations
  • europe-west6-locations

Valores:
  • EU
  • eu
  • europe-west
Finlandia Todas las ubicaciones en Finlandia:
in:europe-north1-locations
Valores:
  • europe-north1
  • europe-north1-a
  • europe-north1-b
  • europe-north1-c
Bélgica Todas las ubicaciones en Bélgica:
in:europe-west1-locations
Valores:
  • europe-west1
  • europe-west1-b
  • europe-west1-c
  • europe-west1-d
Londres Todas las ubicaciones en Londres:
in:europe-west2-locations
Valores:
  • europe-west2
  • europe-west2-a
  • europe-west2-b
  • europe-west2-c
Fráncfort Todas las ubicaciones en Fráncfort:
in:europe-west3-locations
Valores:
  • europe-west3
  • europe-west3-a
  • europe-west3-b
  • europe-west3-c
Países Bajos Todas las ubicaciones en los Países Bajos:
in:europe-west4-locations
Valores:
  • europe-west4
  • europe-west4-a
  • europe-west4-b
  • europe-west4-c
Zúrich Todas las ubicaciones en Zúrich:
in:europe-west6-locations
Valores:
  • europe-west6
  • europe-west6-a
  • europe-west6-b
  • europe-west6-c
Norteamérica Todas las ubicaciones en Norteamérica:
in:northamerica-locations
Grupos:
  • northamerica-northeast1-locations
  • us-locations

Valores:
  • nam3
Montreal Todas las ubicaciones en Montreal:
in:northamerica-northeast1-locations
Valores:
  • northamerica-northeast1
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • northamerica-northeast1-c
Estados Unidos Todas las ubicaciones en Estados Unidos:
in:us-locations
Grupos:
  • us-central1-locations
  • us-central2-locations
  • us-east1-locations
  • us-east4-locations
  • us-west1-locations
  • us-west2-locations

Valores:
  • US
  • nam3
  • us
  • us-central
Iowa Todas las ubicaciones en Iowa:
in:us-central1-locations
Valores:
  • us-central1
  • us-central1-a
  • us-central1-b
  • us-central1-c
  • us-central1-f
Oklahoma Todas las ubicaciones en Oklahoma:
in:us-central2-locations
Valores:
  • us-central2
  • us-central2-a
  • us-central2-b
  • us-central2-c
  • us-central2-d
Carolina del Sur Todas las zonas en Carolina del Sur:
in:us-east1-locations
Valores:
  • us-east1
  • us-east1-a
  • us-east1-b
  • us-east1-c
  • us-east1-d
Virginia del Norte Todas las ubicaciones en Virginia del Norte:
in:us-east4-locations
Valores:
  • us-east4
  • us-east4-a
  • us-east4-b
  • us-east4-c
Oregón Todas las ubicaciones en Oregón:
in:us-west1-locations
Valores:
  • us-west1
  • us-west1-a
  • us-west1-b
  • us-west1-c
Los Ángeles Todas las ubicaciones en Los Ángeles:
in:us-west2-locations
Valores:
  • us-west2
  • us-west2-a
  • us-west2-b
  • us-west2-c
Sudamérica Todas las ubicaciones en Sudamérica:
in:southamerica-locations
Grupos:
  • southamerica-east1-locations
São Paulo Todas las ubicaciones en São Paulo:
in:southamerica-east1-locations
Valores:
  • southamerica-east1
  • southamerica-east1-a
  • southamerica-east1-b
  • southamerica-east1-c

Autenticación

En el servicio de políticas de la organización, se utiliza OAuth 2.0 para la autenticación y autorización de la API. Para obtener un token del portador OAuth 2.0, haz lo siguiente:

  1. Dirígete a la página OAuth 2.0 Playground .

  2. En la lista de alcances del Paso 1, selecciona la API de Cloud Resource Manager v.2 > https://www.googleapis.com/auth/cloud-platform y, a continuación, haz clic en Autorizar API.

  3. En la página Acceder con Google que aparece, selecciona tu cuenta y accede a ella.

  4. Para proporcionar acceso a Google OAuth 2.0 Playground, haz clic en Permitir en el mensaje que aparece.

  5. En Paso 2, haz clic en Código de autorización de intercambio para tokens.

  6. En la parte inferior del panel Solicitud/Respuesta de la derecha, se muestra tu string de token de acceso:

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

    En esta, ACCESS_TOKEN es la string de token del portador de OAuth 2.0 que puedes usar para la autorización de API.