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 para los que se puede seleccionar una ubicación. Esta restricción no afecta el lugar en el que se crean los recursos globales, como las direcciones globales de Compute Engine o los recursos que no admiten la selección de una ubicación.
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 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 unaregion
y, por lo general, solo son utilizadas por recursos basados en almacenamiento. Algunos ejemplos incluyenus
,asia
,europe
yglobal
.Las ubicaciones
Region
están geográficamente aisladas unas de otras. Algunos ejemplos sonus-west1
(Oregón),asia-northeast1
(Tokio) yeurope-west1
(Bélgica).Las ubicaciones
Zone
son el tipo de ubicación más detallado y aislado que se utiliza para implementar recursos. Unazone
es un dominio con fallas independiente dentro de unaregion
. Algunos ejemplos sonus-east1-b
,us-west1-b
yasia-northeast1-a
.
Cuando configuras ubicaciones, debes usar el prefijo in:
y un Grupo de valores. El uso de un grupo de valores seleccionado por Google Cloud te permite elegir ubicaciones geográficas sin tener que especificar ubicaciones actuales o futuras de Cloud.
El prefijo in:
para un Grupo de valores especifica que todos los valores que existen dentro del grupo de valores se consideran parte de la política. Si ingresas un valor de grupo o una región de Google Cloud sin el prefijo, el prefijo in:
se agregará automáticamente, según estas reglas:
- Si ingresas una ubicación que usa el prefijo
in:
y contiene un grupo no válido, el cambio de política fallará. - Si ingresas una ubicación que es una región, como
us-east1
, tendrá el prefijoin:
antepuesto, ain:us-east1-locations
en este ejemplo. - Si ingresas una región o un grupo de valores de varias regiones, como
us-locations
, tendrá el prefijoin:
antepuesto, ain:us-locations
en este ejemplo. - Si ingresas una zona o región múltiple como
us-east1-b
ous
, los valores no se cambiarán.
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
En la consola de Google Cloud, 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 el que deseas configurar la política de la organización.
Selecciona la restricción Google Cloud Platform - Restricción de ubicación de recursos para abrir la página Detalles de la política.
Haz clic en Administrar política.
En la página Editar política, selecciona Anular la política del elemento superior.
En Aplicación de la política, selecciona Reemplazar.
Haz clic en Agregar regla.
En Valores de la política, selecciona Personalizar.
En Tipo de política, selecciona Permitir para crear una lista de ubicaciones permitidas o Rechazar para crear una lista de ubicaciones rechazadas.
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
oin:us-west1-locations
. Para ingresar varias cadenas de ubicación, haz clic en Nuevo valor de la política.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 aplicar la política, haz clic en Establecer política.
gcloud
Para crear una política de la 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
Reemplaza lo siguiente:
ORGANIZATION_ID
: Es el ID de tu organización, como 01234567890.POLICY_PATH
: Es la ruta de acceso completa al archivo YAML que contiene la política de la organización.
Se muestra una respuesta con los resultados de la nueva política de la organización, como la siguiente:
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
rules:
- values:
allowedValues:
- in:us-east1-locations
- in:northamerica-northeast1-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.
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:
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
rules:
- values:
deniedValues:
- in:europe-locations
- in: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 página 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 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
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.
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"
}
Hallazgos y solución de vulnerabilidades
La restricción de ubicación de recursos restringe la creación de recursos en el entorno de ejecución. Esta función ayuda a evitar que se produzcan incumplimientos de ubicación, pero no identifica ni remedia los incumplimientos existentes. Puedes usar las estadísticas del estado de la seguridad, un servicio integrado de Security Command Center, para descubrir incumplimientos 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 incumplimientos de ubicación de Security Health Analytics, consulta Soluciona los problemas de Security Health Analytics a fin de conocer los pasos para solucionarlos.
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 se validan en la llamada para establecer la política de la organización. Si usas un nombre de grupo no válido, el parámetro de configuración de la política fallará.
En la siguiente tabla, se incluye la lista actual de grupos disponibles:
Grupo | Detalles | Miembros directos |
---|---|---|
Johannesburgo | Todas las ubicaciones en Johannesburgo:in:africa-south1-locations |
Valores:
|
Asia | Todas las ubicaciones en Asia:in:asia-locations |
Grupos:
Valores:
|
Hong Kong | Todas las ubicaciones en Hong Kong:in:asia-east2-locations |
Valores:
|
Indonesia | Todas las ubicaciones en Indonesia:in:id-locations |
Grupos:
Valores:
|
Yakarta | Todas las ubicaciones en Yakarta:in:asia-southeast2-locations |
Valores:
|
Israel | Todas las ubicaciones en Israel:in:il-locations |
Grupos:
Valores:
|
Israel | Todas las ubicaciones en Israel:in:me-west1-locations |
Valores:
|
India | Todas las ubicaciones en la India:in:in-locations |
Grupos:
Valores:
|
Bombay | Todas las ubicaciones en Bombay:in:asia-south1-locations |
Valores:
|
Delhi | Todas las ubicaciones en Delhi:in:asia-south2-locations |
Valores:
|
Japón | Todas las ubicaciones en Japón:in:jp-locations |
Grupos:
Valores:
|
Tokio | Todas las ubicaciones en Tokio:in:asia-northeast1-locations |
Valores:
|
Osaka | Todas las ubicaciones en Osaka:in:asia-northeast2-locations |
Valores:
|
Corea del Sur | Todas las ubicaciones en Corea del Sur:in:kr-locations |
Grupos:
Valores:
|
Seúl | Todas las ubicaciones en Seúl:in:asia-northeast3-locations |
Valores:
|
Doha | Todas las ubicaciones en Doha:in:me-central1-locations |
Valores:
|
Arabia Saudita | Todas las ubicaciones en Arabia Saudita:in:sa-locations |
Grupos:
Valores:
|
Dammam | Todas las ubicaciones en Dammam:in:me-central2-locations |
Valores:
|
Singapur | Todas las ubicaciones en Singapur:in:sg-locations |
Grupos:
Valores:
|
Singapur | Todas las ubicaciones en Singapur:in:asia-southeast1-locations |
Valores:
|
Taiwán | Todas las ubicaciones en Taiwán:in:tw-locations |
Grupos:
Valores:
|
Taiwán | Todas las ubicaciones en Taiwán:in:asia-east1-locations |
Valores:
|
Australia | Todas las ubicaciones en Australia:in:australia-locations |
Grupos:
Valores:
|
Sídney | Todas las ubicaciones en Sídney:in:australia-southeast1-locations |
Valores:
|
Melbourne | Todas las ubicaciones en 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 en la Unión Europea:in:eu-locations |
Grupos:
Valores:
|
Alemania | Todas las ubicaciones en Alemania:in:de-locations |
Grupos:
Valores:
|
Berlín | Todas las ubicaciones en Berlín:in:europe-west10-locations |
Valores:
|
Fráncfort | Todas las ubicaciones en Fráncfort:in:europe-west3-locations |
Valores:
|
Varsovia | Todas las ubicaciones en Varsovia:in:europe-central2-locations |
Valores:
|
Finlandia | Todas las ubicaciones en Finlandia:in:europe-north1-locations |
Valores:
|
Madrid | Todas las ubicaciones en Madrid:in:europe-southwest1-locations |
Valores:
|
Bélgica | Todas las ubicaciones en Bélgica:in:europe-west1-locations |
Valores:
|
Países Bajos | Todas las ubicaciones en los Países Bajos:in:europe-west4-locations |
Valores:
|
París | Todas las ubicaciones en París:in:europe-west9-locations |
Valores:
|
Italia | Todas las ubicaciones de Italia:in:it-locations |
Grupos:
Valores:
|
Turín | Todas las ubicaciones en Turín:in:europe-west12-locations |
Valores:
|
Milán | Todas las ubicaciones en Milán:in:europe-west8-locations |
Valores:
|
Europa | Todas las ubicaciones en Europa:in:europe-locations |
Grupos:
Valores:
|
Suiza | Todas las ubicaciones en Suiza:in:ch-locations |
Grupos:
Valores:
|
Zúrich | Todas las ubicaciones en Zúrich:in:europe-west6-locations |
Valores:
|
Reino Unido | Todas las ubicaciones en el Reino Unido:in:gb-locations |
Grupos:
Valores:
|
Londres | Todas las ubicaciones en Londres:in:europe-west2-locations |
Valores:
|
Ubicaciones con bajas emisiones de carbono | Todas las ubicaciones con bajo impacto de carbono:in:low-carbon-locations |
Grupos:
|
Canadá con bajas emisiones de carbono | Todas las ubicaciones de Canadá con bajo impacto de carbono:in:canada-low-carbon-locations |
Grupos:
|
Montreal | Todas las ubicaciones en Montreal:in:northamerica-northeast1-locations |
Valores:
|
Toronto | Todas las ubicaciones en Toronto:in:northamerica-northeast2-locations |
Valores:
|
Unión Europea con bajas emisiones de carbono | Todas las ubicaciones de la Unión Europea con bajo impacto de carbono:in:eu-low-carbon-locations |
Grupos:
|
Europa con bajas emisiones de carbono | Todas las ubicaciones de Europa con bajo impacto de carbono:in:europe-low-carbon-locations |
Grupos:
|
Norteamérica con bajas emisiones de carbono | Todas las ubicaciones de Norteamérica con bajo impacto de carbono:in:northamerica-low-carbon-locations |
Grupos:
|
Iowa | Todas las ubicaciones en Iowa:in:us-central1-locations |
Valores:
|
Oregón | Todas las ubicaciones en Oregón:in:us-west1-locations |
Valores:
|
Sudamérica con bajas emisiones de carbono | Todas las ubicaciones de Sudamérica con bajo impacto de carbono:in:southamerica-low-carbon-locations |
Grupos:
|
São Paulo | Todas las ubicaciones en São Paulo:in:southamerica-east1-locations |
Valores:
|
Estados Unidos con bajas emisiones de carbono | Todas las ubicaciones de Estados Unidos con bajo impacto de carbono:in:us-low-carbon-locations |
Grupos:
|
Norteamérica | Todas las ubicaciones en Norteamérica:in:northamerica-locations |
Grupos:
Valores:
|
Canadá | Todas las ubicaciones de Canadáin:canada-locations |
Grupos:
Valores:
|
México | Todas las ubicaciones en México:in:northamerica-south1-locations |
Valores:
|
Estados Unidos | Todas las ubicaciones en Estados Unidos:in:us-locations |
Grupos:
Valores:
|
Oklahoma | Todas las ubicaciones en Oklahoma:in:us-central2-locations |
Valores:
|
Carolina del Sur | Todas las zonas en Carolina del Sur:in:us-east1-locations |
Valores:
|
Virginia del Norte | Todas las ubicaciones en Virginia del Norte:in:us-east4-locations |
Valores:
|
Columbus | Todas las ubicaciones en Columbus:in:us-east5-locations |
Valores:
|
Dallas | Todas las ubicaciones en Dallas:in:us-south1-locations |
Valores:
|
Los Ángeles | Todas las ubicaciones en Los Ángeles:in:us-west2-locations |
Valores:
|
Salt Lake City | Todas las ubicaciones en Salt Lake City:in:us-west3-locations |
Valores:
|
Las Vegas | Todas las ubicaciones en Las Vegas:in:us-west4-locations |
Valores:
|
Sudamérica | Todas las ubicaciones en Sudamérica:in:southamerica-locations |
Grupos:
|
Brasil | Todas las ubicaciones en Brasil:in:br-locations |
Grupos:
Valores:
|
Chile | Todas las ubicaciones en Chile:in:cl-locations |
Grupos:
Valores:
|
Santiago | Todas las ubicaciones en Santiago:in:southamerica-west1-locations |
Valores:
|
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:
Dirígete a la página OAuth 2.0 Playground .
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.
En la página Acceder con Google que aparece, selecciona tu cuenta y accede a ella.
Para proporcionar acceso a Google OAuth 2.0 Playground, haz clic en Permitir en el mensaje que aparece.
En Paso 2, haz clic en Código de autorización de intercambio para tokens.
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 el que ACCESS_TOKEN es la string del token del portador de OAuth 2.0 que puedes usar para la autorización de la API.