Información general
En esta guía se describe cómo definir 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 dónde se implementa y mantiene el servicio. En el caso de los recursos que contienen datos de algunos Google Cloud servicios, esta propiedad también refleja la ubicación en la que se almacenan los datos. Esta restricción le permite definir las ubicaciones Google Cloud permitidas en las que se pueden crear los recursos de los servicios admitidos en su jerarquía.
Una vez que hayas definido las ubicaciones de los recursos, esta limitación solo se aplicará a los recursos que crees a partir de ese momento. Los recursos que hayas creado antes de definir la restricción resource locations seguirán existiendo y realizando su función.
Una política que incluya esta restricción no se aplicará a la creación de subrecursos en determinados servicios, como Cloud Storage y Dataproc.
Limitaciones
La restricción del servicio de políticas de organización de ubicaciones de recursos controla la capacidad de crear recursos para los que se puede seleccionar una ubicación. Esta restricción no afecta a la ubicación en la que se crean los recursos globales, como las direcciones globales de Compute Engine, ni a los recursos que no admiten la selección de una ubicación.
Para evitar que se produzcan fallos en la infraestructura de servicio, debe probar cualquier política nueva en proyectos y carpetas que no sean de producción y, a continuación, aplicar la política gradualmente en su organización.
Para obtener información sobre los compromisos de almacenamiento de datos, consulta los Google Cloud Términos del Servicio y los Términos Específicos del Servicio. 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 consultar una lista de los servicios admitidos y los detalles sobre el comportamiento de cada servicio, consulta la página Servicios compatibles de ubicaciones de recursos.
Tipos de ubicación
Puedes desplegar recursos en tipos de Google Cloud ubicación que representan diferentes categorías de tamaño.
El tipo de ubicación más grande es multi-region
, que incluye más de un region
. Cada region
se subdivide en zones
. Para obtener más información sobre las regiones y las zonas, consulta la descripción general de regiones y zonas.
Las ubicaciones
Multi-region
region
se basan en recursos físicos de más de una y suelen usarse solo en recursos basados en almacenamiento. Algunos ejemplos sonus
,asia
,europe
yglobal
.Las
Region
están aisladas geográficamente entre sí. Por ejemplo,us-west1
(Oregón),asia-northeast1
(Tokio) yeurope-west1
(Bélgica).Las ubicaciones
Zone
son el tipo de ubicación más granular y aislado que se usa para implementar recursos. Unazone
es un dominio de fallo independiente dentro de unaregion
. Por ejemplo,us-east1-b
,us-west1-b
yasia-northeast1-a
.
Cuando configure ubicaciones, debe usar el prefijo in:
y un grupo de valores. Si usas un grupo de valores seleccionado por Google Cloud
puedes elegir una o varias ubicaciones geográficas sin tener que especificar las ubicaciones de Cloud actuales o futuras.
El prefijo in:
de un grupo de valores especifica que todos los valores que existen en el grupo de valores se consideran parte de la política. Si introduces un valor de grupo o una región Google Cloud sin el prefijo, el prefijo in:
se añadirá automáticamente según estas reglas:
- Si introduces una ubicación que usa el prefijo
in:
y contiene algún grupo no válido, el cambio de política no se realizará. - Si introduces una ubicación que sea una región, como
us-east1
, se le añadirá el prefijoin:
, comoin:us-east1-locations
en este ejemplo. - Si introduces un grupo de valores de región o multirregión, como
us-locations
, se le añadirá el prefijoin:
, que en este ejemplo seríain:us-locations
. - Si introduces una zona o una multirregión, como
us-east1-b
ous
, los valores no cambiarán.
Definir la política de la organización
La restricción de ubicaciones de recursos es un tipo de restricción gestionada antigua con reglas de lista.
Puedes añadir y quitar ubicaciones de las listas allowed_values
o denied_values
de una restricción de ubicaciones de recursos. Para evitar que las políticas de la organización restrinjan inesperadamente el comportamiento de los servicios a medida que se añadan nuevas ubicaciones a la lista disponible, utilice un grupo de valores o una lista de allowed_values
que represente todo el límite geográfico que quiera definir.
Para definir una política de organización, incluida una restricción de ubicaciones de recursos, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Políticas de la organización.
En el selector de proyectos, selecciona la organización, la carpeta o el proyecto para los que quieras definir la política de la organización.
Selecciona la restricción Google Cloud Platform - Resource Location Restriction (Restricción de ubicación de recursos de Google Cloud Platform) para abrir su página Detalles de la política.
Haz clic en Gestionar política.
En la página Editar política, selecciona Anular política del recurso superior.
En Cumplimiento de las políticas, selecciona Reemplazar.
Haz clic en Añadir regla.
En Valores de la política, selecciona Personalizado.
En Tipo de política, selecciona Permitir para crear una lista de ubicaciones permitidas o Denegar para crear una lista de ubicaciones denegadas.
En el cuadro Valor de la política, introduce el prefijo
in
y una cadena de ubicación de grupo de valores. A continuación, pulsa Intro.Por ejemplo,
in:us-locations
oin:us-west1-locations
. Puedes introducir varias cadenas de ubicación haciendo clic en Nuevo valor de política.También puedes introducir ubicaciones de zonas, regiones o multirregiones específicas como cadenas de ubicación. Para ver una lista de las ubicaciones disponibles, consulta la página Servicios compatibles de ubicaciones de recursos.
Para aplicar la política, haz clic en Definir política.
gcloud
Para crear una política de organización que aplique la restricción de ubicaciones de recursos, crea un archivo YAML de política que haga referencia a la restricción:
name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
rules:
- values:
deniedValues:
- in:us-east1-locations
- in:northamerica-northeast1-locations
Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:
gcloud org-policies set-policy POLICY_PATH
Haz los cambios siguientes:
ORGANIZATION_ID
: el ID de tu organización, como 01234567890.POLICY_PATH
: la ruta completa al archivo YAML que contiene la política de organización.
Se devolverá una respuesta con los resultados de la nueva política de la organización:
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
rules:
- values:
deniedValues:
- in:us-east1-locations
- in:northamerica-northeast1-locations
También puedes introducir ubicaciones de zonas, regiones o multirregiones específicas como cadenas de ubicación. Para ver una lista de las ubicaciones disponibles, consulta la página Servicios compatibles de ubicaciones de recursos.
API
Puedes usar la API Resource Manager para definir una política de organización en un recurso. Necesitarás un token de portador OAuth 2.0 para la autenticación y la autorización.
Para definir una política de la organización mediante la restricción de ubicaciones de recursos, sigue estos pasos:
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 devolverá una respuesta con los resultados de la nueva política de la organización:
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
rules:
- values:
deniedValues:
- in:europe-locations
- in:southamerica-locations
También puedes introducir ubicaciones de zonas, regiones o multirregiones específicas como cadenas de ubicación. Para ver una lista de las ubicaciones disponibles, consulta la página Servicios compatibles de ubicaciones de recursos.
Para obtener información sobre cómo usar restricciones en las políticas de organización, consulta Usar restricciones.
Usar la herencia en la política de organización
Puedes refinar tu política de la organización para heredar la política de la organización de los nodos principales del recurso. La herencia te permite controlar de forma granular las políticas de la organización que se usan en toda la jerarquía de recursos.
Para habilitar la herencia en un nodo de recurso, define inheritFromParent = true
en el archivo YAML de la política de la organización. Por ejemplo:
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
inheritFromParent: true
rules:
- values:
deniedValues:
- in:us-west1
Ejemplo de mensaje de error
Los servicios que admiten la restricción de ubicación de recursos no pueden crear recursos nuevos en ubicaciones que infrinjan la restricción. 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, no se puede crear un recurso de Compute Engine para una instancia debido a la implementación de una política:
Location ZONE:us-east1-b violates constraint constraints/gcp.resourceLocations
on the resource
projects/policy-violation-test/zones/us-east1-b/instances/instance-3.
Entrada de registro de Google Cloud Observability y Registros de auditoría de Cloud:
{
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"
}
Vulnerabilidades detectadas y corrección
La restricción de ubicación de recursos limita la creación de recursos en el tiempo de ejecución. Esta función ayuda a evitar que se produzcan infracciones de la ubicación, pero no identifica ni corrige las infracciones que ya se hayan producido. Puedes usar Security Health Analytics, un servicio integrado de Security Command Center, para detectar infracciones de ubicación en tu jerarquía de recursos. Para obtener más información, consulta Resultados de vulnerabilidades de la política de la organización.
Si hay resultados de Security Health Analytics sobre infracciones de ubicación, consulta el artículo Corregir resultados de Security Health Analytics para ver los pasos que debes seguir para corregir esos resultados.
Grupos de valores
Los grupos de valores son colecciones de grupos y ubicaciones que selecciona Google para definir las ubicaciones de los recursos de manera sencilla. Los grupos de valores incluyen muchas ubicaciones relacionadas y Google los amplía con el tiempo sin que tengas que cambiar la política de tu organización para incluir las nuevas ubicaciones.
Para aplicarlos en tu política de organización, incluye el prefijo in:
en las entradas. Para obtener más información sobre cómo usar prefijos de valor, consulta Usar restricciones.
Los nombres de los grupos se validan en la llamada para definir la política de la organización. Si se usa un nombre de grupo no válido, se producirá un error en la configuración de la política.
En la siguiente tabla se muestra la lista actual de grupos disponibles:
Grupo | Detalles | Miembros directos |
---|---|---|
Johannesburgo | Todas las ubicaciones de Johannesburgo:in:africa-south1-locations |
Valores:
|
Asia | Todas las ubicaciones de Asia:in:asia-locations |
Grupos:
Valores:
|
Hong Kong | Todas las ubicaciones de Hong Kong:in:asia-east2-locations |
Valores:
|
Indonesia | Todas las ubicaciones de Indonesia:in:id-locations |
Grupos:
Valores:
|
Yakarta | Todas las ubicaciones de Yakarta:in:asia-southeast2-locations |
Valores:
|
Israel | Todas las ubicaciones de Israel:in:il-locations |
Grupos:
Valores:
|
Israel | Todas las ubicaciones de Israel:in:me-west1-locations |
Valores:
|
India | Todas las ubicaciones de la India:in:in-locations |
Grupos:
Valores:
|
Bombay | Todas las ubicaciones de Bombay:in:asia-south1-locations |
Valores:
|
Deli | Todas las ubicaciones de Delhi:in:asia-south2-locations |
Valores:
|
Japón | Todas las ubicaciones de Japón:in:jp-locations |
Grupos:
Valores:
|
Tokio | Todas las ubicaciones de Tokio:in:asia-northeast1-locations |
Valores:
|
Osaka | Todas las ubicaciones de Osaka:in:asia-northeast2-locations |
Valores:
|
Corea del Sur | Todas las ubicaciones de Corea del Sur:in:kr-locations |
Grupos:
Valores:
|
Seúl | Todas las ubicaciones de Seúl:in:asia-northeast3-locations |
Valores:
|
Doha | Todas las ubicaciones de Doha:in:me-central1-locations |
Valores:
|
Arabia Saudí | Todas las ubicaciones de Arabia Saudí:in:sa-locations |
Grupos:
Valores:
|
Dammam | Todas las ubicaciones de Dammam:in:me-central2-locations |
Valores:
|
Singapur | Todas las ubicaciones de Singapur:in:sg-locations |
Grupos:
Valores:
|
Singapur | Todas las ubicaciones de Singapur:in:asia-southeast1-locations |
Valores:
|
Taiwán | Todas las ubicaciones de Taiwán:in:tw-locations |
Grupos:
Valores:
|
Taiwán | Todas las ubicaciones de Taiwán:in:asia-east1-locations |
Valores:
|
Australia | Todas las ubicaciones de Australia:in:australia-locations |
Grupos:
Valores:
|
Sídney | Todas las ubicaciones de Sídney:in:australia-southeast1-locations |
Valores:
|
Melbourne | Todas las ubicaciones de Melbourne:in:australia-southeast2-locations |
Valores:
|
AWS | Todas las ubicaciones de AWS:in:aws-locations |
Valores:
|
Azure | Todas las ubicaciones de Azure:in:azure-locations |
Valores:
|
Unión Europea | Todas las ubicaciones de la Unión Europea:in:eu-locations |
Grupos:
Valores:
|
Alemania | Todas las ubicaciones de Alemania:in:de-locations |
Grupos:
Valores:
|
Berlín | Todas las ubicaciones de Berlín:in:europe-west10-locations |
Valores:
|
Fráncfort | Todas las ubicaciones de Fráncfort:in:europe-west3-locations |
Valores:
|
Varsovia | Todas las ubicaciones de Varsovia:in:europe-central2-locations |
Valores:
|
Finlandia | Todas las ubicaciones de Finlandia:in:europe-north1-locations |
Valores:
|
Estocolmo | Todas las ubicaciones de Estocolmo:in:europe-north2-locations |
Valores:
|
Madrid | Todas las ubicaciones de Madrid:in:europe-southwest1-locations |
Valores:
|
Bélgica | Todas las ubicaciones de Bélgica:in:europe-west1-locations |
Valores:
|
Países Bajos | Todas las ubicaciones de los Países Bajos:in:europe-west4-locations |
Valores:
|
París | Todas las ubicaciones de París:in:europe-west9-locations |
Valores:
|
Italia | Todas las ubicaciones de Italia:in:it-locations |
Grupos:
Valores:
|
Turín | Todas las ubicaciones de Turín:in:europe-west12-locations |
Valores:
|
Milán | Todas las ubicaciones de Milán:in:europe-west8-locations |
Valores:
|
Europa | Todas las ubicaciones de Europa:in:europe-locations |
Grupos:
Valores:
|
Suiza | Todas las ubicaciones de Suiza:in:ch-locations |
Grupos:
Valores:
|
Zúrich | Todas las ubicaciones de Zúrich:in:europe-west6-locations |
Valores:
|
Reino Unido | Todas las ubicaciones del Reino Unido:in:gb-locations |
Grupos:
Valores:
|
Londres | Todas las ubicaciones de Londres:in:europe-west2-locations |
Valores:
|
Ubicaciones con bajas emisiones de carbono | Todas las ubicaciones con un impacto bajo en las emisiones de carbono:in:low-carbon-locations |
Grupos:
|
Canadá con bajas emisiones de carbono | Todas las ubicaciones de Canadá con un bajo impacto de carbono:in:canada-low-carbon-locations |
Grupos:
|
Montreal | Todas las ubicaciones de Montreal:in:northamerica-northeast1-locations |
Valores:
|
Toronto | Todas las ubicaciones de Toronto:in:northamerica-northeast2-locations |
Valores:
|
Unión Europea con bajas emisiones de carbono | Todas las ubicaciones de la Unión Europea con un bajo impacto de carbono:in:eu-low-carbon-locations |
Grupos:
|
Una Europa con bajas emisiones de carbono | Todas las ubicaciones de Europa con un bajo impacto de carbono:in:europe-low-carbon-locations |
Grupos:
|
Bajo en emisiones de carbono en Norteamérica | Todas las ubicaciones de Norteamérica con un bajo impacto de carbono:in:northamerica-low-carbon-locations |
Grupos:
|
Iowa | Todas las ubicaciones de Iowa:in:us-central1-locations |
Valores:
|
Oregón | Todas las ubicaciones de Oregón:in:us-west1-locations |
Valores:
|
Bajo en emisiones de carbono en Sudamérica | Todas las ubicaciones de Sudamérica con un bajo impacto de carbono:in:southamerica-low-carbon-locations |
Grupos:
|
São Paulo | Todas las ubicaciones de São Paulo:in:southamerica-east1-locations |
Valores:
|
Estados Unidos con bajas emisiones de carbono | Todas las ubicaciones de Estados Unidos con un bajo impacto de carbono:in:us-low-carbon-locations |
Grupos:
|
Norteamérica | Todas las ubicaciones de Norteamérica:in:northamerica-locations |
Grupos:
Valores:
|
Canadá | Todas las ubicaciones de Canadá.in:canada-locations |
Grupos:
Valores:
|
México | Todas las ubicaciones de México:in:northamerica-south1-locations |
Valores:
|
Estados Unidos | Todas las ubicaciones de Estados Unidos:in:us-locations |
Grupos:
Valores:
|
Oklahoma | Todas las ubicaciones de Oklahoma:in:us-central2-locations |
Valores:
|
Carolina del Sur | Todas las zonas de Carolina del Sur:in:us-east1-locations |
Valores:
|
Norte de Virginia | Todas las ubicaciones de Virginia del Norte:in:us-east4-locations |
Valores:
|
Columbus | Todas las ubicaciones de Columbus:in:us-east5-locations |
Valores:
|
Dallas | Todas las ubicaciones de Dallas:in:us-south1-locations |
Valores:
|
Los Ángeles | Todas las ubicaciones de Los Ángeles:in:us-west2-locations |
Valores:
|
Salt Lake City | Todas las ubicaciones de Salt Lake City:in:us-west3-locations |
Valores:
|
Las Vegas | Todas las ubicaciones de Las Vegas:in:us-west4-locations |
Valores:
|
Sudamérica | Todas las ubicaciones de Sudamérica:in:southamerica-locations |
Grupos:
|
Brasil | Todas las ubicaciones de Brasil:in:br-locations |
Grupos:
Valores:
|
Chile | Todas las ubicaciones de Chile:in:cl-locations |
Grupos:
Valores:
|
Santiago | Todas las ubicaciones de Santiago:in:southamerica-west1-locations |
Valores:
|
Autenticación
Organization Policy Service usa OAuth 2.0 para la autenticación y la autorización de APIs. Para obtener un token de portador de OAuth 2.0, sigue estos pasos:
Ve a la página de OAuth 2.0 Playground.
En la lista de permisos del Paso 1, selecciona API Cloud Resource Manager v2 > https://www.googleapis.com/auth/cloud-platform y, a continuación, haz clic en Autorizar APIs.
En la página Iniciar sesión con Google que aparece, selecciona tu cuenta e inicia sesión.
Para dar acceso a Google OAuth 2.0 Playground, haz clic en Permitir en la petición que aparece.
En el paso 2, haz clic en Exchange authorization code for tokens (Intercambiar código de autorización por tokens).
En la parte inferior del panel Solicitud/Respuesta de la derecha, se muestra la cadena de tu token de acceso:
{ "access_token": "ACCESS_TOKEN", "token_type": "Bearer", "expires_in": 3600 }
Donde ACCESS_TOKEN es la cadena del token de portador de OAuth 2.0 que puedes usar para la autorización de la API.