Reglas de entrada y salida

En esta página, se explican las reglas de entrada y salida para los Controles del servicio de VPC. Los Controles del servicio de VPC usan reglas de entrada y salida para permitir el acceso desde y hacia los recursos y clientes protegidos por los perímetros de servicio.

Los bloques de reglas de entrada y salida especifican la dirección del acceso permitido desde y hacia las diferentes identidades y recursos. Las reglas de entrada y salida pueden reemplazar y simplificar los casos de uso que antes requerían uno o más puentes perimetrales.

Para obtener información sobre cómo aplicar políticas de entrada y salida a tu perímetro de servicio, consulta Configura políticas de entrada y salida.

Para obtener una lista de casos de uso y muestras de intercambio seguro de datos, consulta Intercambio seguro de datos con reglas de entrada y salida.

Para obtener una lista de casos de uso y muestras de acceso adaptado al contexto, consulta Acceso adaptado al contexto con reglas de entrada.

Beneficios de las reglas de entrada y salida

  1. Las reglas de entrada y salida te permiten intercambiar datos de forma privada y eficiente entre organizaciones y dentro de ellas a través de las API del servicio de Google Cloud.
  2. Las reglas de entrada y salida te permiten otorgar acceso a los recursos de Google Cloud en un perímetro según el contexto de la solicitud a la API:
    1. Restringe los tipos de identidad o las identidades que se pueden usar según la red de origen, la dirección IP o el dispositivo.
    2. Restringe las API y los métodos de Google Cloud a los que se puede acceder según la red de origen, la dirección IP, el dispositivo y el tipo de identidad.
  3. Minimiza el riesgo de robo mediante la limitación del servicio, los métodos, las identidades y los proyectos de Google Cloud exactos que se usan para ejecutar el intercambio de datos.
  4. Otorga acceso de solo lectura a las imágenes y conjuntos de datos externos que no administras.
  5. Asegúrate de que los clientes de segmentos menos privilegiados no tengan acceso a los recursos de Google Cloud en segmentos más privilegiados, al mismo tiempo que permite el acceso en la otra dirección.
  6. Simplifica las configuraciones que anteriormente requerían uno o más puentes perimetrales.

Definición de entrada y salida

  • Entrada: Se refiere a cualquier acceso de un cliente de la API desde fuera del perímetro de servicio a los recursos dentro del perímetro de servicio. Ejemplo:

    • Un cliente de Cloud Storage fuera de un perímetro de servicio que llama a operaciones de lectura, escritura o copia de Cloud Storage en un recurso de Cloud Storage dentro del perímetro.
  • Salida: Se refiere a cualquier acceso que incluya un cliente de API o recursos dentro del perímetro de servicio y recursos fuera del perímetro de servicio. Ejemplos:

    • Un cliente de Compute Engine dentro de un perímetro de servicio que llama a una operación create de Compute Engine en la que el recurso de imagen está fuera del perímetro.
    • Un cliente de Cloud Storage, dentro o fuera del perímetro, llama a un comando copy en el que un bucket está dentro del perímetro y el otro está fuera de él.

Modelo de políticas

Una regla de entrada o salida consta de bloques from y to en los que ocurre lo siguiente:

  • from hace referencia a los atributos del cliente de API.
  • to hace referencia a los atributos de los servicios y recursos de Google Cloud.

Se pueden asociar varias reglas de entrada y salida a un perímetro de servicio. Se permite o rechaza una llamada del servicio de Google Cloud según las siguientes semánticas:

  • Se permite una solicitud de un cliente fuera del perímetro a un recurso de Google Cloud dentro del perímetro si se cumplen las condiciones de la regla de entrada necesaria.
  • Se permite una solicitud de un cliente dentro del perímetro a un recurso de Google Cloud fuera del perímetro si se cumplen las condiciones de la regla de salida necesaria.
  • Se permiten una llamada a la API que involucra un recurso de Google Cloud dentro del perímetro y un recurso de Google Cloud fuera del perímetro si hay una regla de entrada que cumple el cliente (si el cliente no está dentro del perímetro) y una regla de salida que cumpla el recurso externo.

Ejemplos de solicitudes a la API que permiten las reglas de entrada

  • Un cliente de Cloud Storage fuera del perímetro descarga objetos de un bucket de Cloud Storage dentro del perímetro a la máquina local (por ejemplo, mediante el comando gsutil cp).
  • Un cliente de BigQuery fuera del perímetro usa un trabajo de BigQuery en un proyecto dentro del perímetro para consultar un conjunto de datos de BigQuery dentro del perímetro (por ejemplo, mediante el comando bq query)

Ejemplos de solicitudes a la API que permiten las reglas de salida

  • Un cliente de Cloud Storage dentro del perímetro copia los objetos entre un bucket de Cloud Storage fuera del perímetro y un bucket dentro del perímetro (por ejemplo, con el comando gsutil cp).
  • Un cliente de BigQuery dentro del perímetro usa un trabajo de BigQuery en un proyecto fuera del perímetro para consultar un conjunto de datos de BigQuery dentro del perímetro (por ejemplo, mediante el comando bq query).

Ejemplos de solicitudes a la API que se permiten mediante la combinación de reglas de entrada y salida

  • Un cliente de Cloud Storage fuera del perímetro copia objetos entre un bucket de Cloud Storage fuera del perímetro y un bucket dentro del perímetro (por ejemplo, con el comando gsutil cp).
  • Un cliente de BigQuery fuera del perímetro usa un trabajo de BigQuery en un proyecto fuera del perímetro para consultar un conjunto de datos de BigQuery dentro del perímetro (por ejemplo, con el comando bq query)

Solicitudes a la API que involucran varios perímetros de servicio

Cuando los recursos a los que se accede o el cliente de API pertenecen a diferentes perímetros de servicio, las políticas de todos los perímetros involucrados deben permitir la solicitud a la API. Ejemplo:

  • Para permitir que un cliente de Cloud Storage dentro del perímetro A copie objetos entre un bucket de Cloud Storage a dentro del perímetro A y un bucket de Cloud Storage b dentro del perímetro B, se requieren las siguientes reglas de entrada/salida:

    • una regla de salida en el perímetro A para permitir el acceso al bucket de Cloud Storage b ,
    • una regla de salida en el perímetro B para permitir el acceso al bucket de Cloud Storage a
    • una regla de entrada en el perímetro B para permitir el acceso al cliente de Cloud Storage que está fuera del perímetro B.

Referencia de reglas de entrada

Las reglas de entrada se pueden configurar con Google Cloud Console, un archivo JSON o un archivo YAML. En el siguiente ejemplo, se usa el formato .yaml:

- ingressFrom:
    identityType: ANY_IDENTITY
    *OR*
    identities:
    - serviceAccount:service-account
    sources:
    - resource: projects/project
      *OR*
    - accessLevel: access-level
  ingressTo:
    operations:
    - serviceName: service
      methodSelectors:
      - method: method
      *OR*
      - permission: permission
    resources:
    - projects/project
Referencia de atributos
  • - ingressFrom:: Inicia el bloque from, que enumera las identidades y las fuentes permitidas fuera del perímetro (obligatorio).

  • identityType:: - (Se debe usar este atributo o el atributo identities) Este atributo define los tipos de identidades que se pueden usar desde las sourcesespecificadas (origen de la red). Valores aceptables: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY permite todas las identidades. ANY_USER_ACCOUNT permite a todos los usuarios humanos. ANY_SERVICE_ACCOUNT permite todas las cuentas de servicio.

  • identities:: (Debe usarse este atributo o el atributo identityType) Este atributo inicia una lista de cuentas de servicio que pueden acceder a los recursos del perímetro.

  • serviceAccount: Una cuenta de servicio a la que se le otorga acceso a los recursos en el perímetro.

  • sources: (obligatorio): Este atributo hace referencia a una lista de orígenes de red. Cada valor de la lista es un nivel de acceso o un proyecto de red de VPC.

  • - resource:: (Debe usarse este atributo o el atributo accessLevel) Especifica el proyecto desde fuera del perímetro al que se da acceso. Se otorga acceso a la red de VPC del proyecto.

  • - accessLevel:: (Debe usarse este atributo o el atributo resource) Especifica el nivel de acceso desde fuera del perímetro al que se da acceso.

  • ingressTo:: Inicia el bloque to, que enumera las operaciones de servicio permitidas en los recursos de Google Cloud especificados en el perímetro (obligatorio).

  • operations:: Marca el comienzo de la lista de servicios y las acciones o los métodos accesibles a los que el cliente satisface las condiciones del bloque from a los que puede acceder (obligatorio).

  • - serviceName:: Este campo puede ser un nombre de servicio válido o estar configurado como \"*\" para permitir el acceso a todos los servicios (obligatorio). Por ejemplo, bigquery.googleapis.com es un serviceName válido. Para obtener una lista de los servicios disponibles, consulta Productos compatibles.

  • methodSelectors:: Es el comienzo de una lista de métodos a los que un cliente que cumple con las condiciones de bloqueo from puede acceder (obligatorio). A fin de obtener una lista de los métodos y permisos restringidos para los servicios, consulta las restricciones de los métodos de servicio compatibles.

  • - method:: (Se debe usar este atributo o el atributo permission) Este campo puede ser un método de servicio válido, o puede establecerse como \"*\" para permitir el acceso a todos los métodos del servicio especificado.

  • - permission:: (Se debe usar este atributo o el atributo method) Este campo debe ser un permiso de servicio válido. Se permite el acceso a los recursos dentro del perímetro para las operaciones que requieren el permiso.

  • resources: (obligatorio): Este atributo especifica la lista de recursos de Google Cloud en el perímetro de servicio al que puede acceder el cliente fuera del perímetro. Este campo se puede configurar en \"*\" para permitir el acceso de entrada a cualquier recurso de Google Cloud dentro del perímetro.

Una vez que hayas terminado de configurar tu archivo de políticas de entrada, consulta Actualiza las políticas de entrada y salida para obtener instrucciones sobre cómo aplicarlo a tu perímetro de servicio.

Referencia de las reglas de salida

Las reglas de salida se pueden configurar con Google Cloud Console, un archivo JSON o un archivo YAML. En el siguiente ejemplo, se usa el formato .yaml:

- egressTo:
    operations:
    - serviceName:service-name
      methodSelectors:
      - method: method
      *OR*
      - permission: permission
    resources:
    - projects/project
  egressFrom:
    identityType: ANY_IDENTITY
    *OR*
    identities:
    - serviceAccount:service-account
  • - egressTo:: Inicia el bloque to, que enumera las operaciones de servicio permitidas en los recursos de Google Cloud en proyectos especificados fuera del perímetro (obligatorio).

  • operations:: Marca el comienzo de la lista de servicios y las acciones o los métodos accesibles a los que el cliente satisface las condiciones del bloque from a los que puede acceder (obligatorio).

  • - serviceName:: Este campo puede ser un nombre de servicio válido o estar configurado como \"*\" para permitir el acceso a todos los servicios (obligatorio). Para obtener una lista de los servicios disponibles, consulta Productos compatibles.

  • methodSelectors:: Es el comienzo de una lista de métodos a los que un cliente que cumple con las condiciones de bloqueo from puede acceder (obligatorio). A fin de obtener una lista de los métodos y permisos restringidos para los servicios, consulta las restricciones de los métodos de servicio compatibles.

  • - method:: Se debe usar este atributo o permission. Este campo puede ser un método de servicio válido o se puede configurar en \"*\" para permitir el acceso a todos los métodos del servicio especificado.

  • - permission:: (Se debe usar este atributo o el atributo method) Este campo debe ser un permiso de servicio válido. Se permitirá el acceso a los recursos especificados fuera del perímetro para las operaciones que requieren este permiso.

  • resources: (obligatorio): Este atributo es una lista de recursos de Google Cloud especificados por sus proyectos a los que los clientes dentro de un perímetro pueden acceder. Este campo se puede configurar en \"*\" para permitir el acceso de salida a cualquier recurso de Google Cloud.

  • egressFrom:: Comienza el bloque from que enumera las operaciones de servicio permitidas en los recursos de Google Cloud en proyectos especificados dentro del perímetro (obligatorio).

  • identityType:: Este atributo define los tipos de identidades que se pueden usar para acceder a los recursos especificados fuera del perímetro (se debe usar este atributo o identities). Valores aceptables: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY permite todas las identidades. ANY_USER_ACCOUNT permite a todos los usuarios humanos. ANY_SERVICE_ACCOUNT permite todas las cuentas de servicio.

  • identities:: Se debe usar este atributo o el atributo identityType) Este atributo inicia una lista de cuentas de servicio que pueden acceder a los recursos especificados fuera del perímetro.

  • serviceAccount: Una cuenta de servicio que puede acceder a los recursos especificados fuera del perímetro.

Una vez que hayas terminado de configurar tu archivo de políticas de salida, consulta Actualiza las políticas de entrada y salida para obtener instrucciones sobre cómo aplicarlo a tu perímetro de servicio.

Usa el modo de ejecución de prueba para probar políticas de entrada y salida

Cuando no quieres otorgar acceso a todos los métodos de un servicio, a veces puede ser difícil determinar la lista precisa de métodos que se permitirán. Esto puede ocurrir porque un método determinado para un servicio puede hacer que se invoque un método diferente en un servicio de Google Cloud independiente. Por ejemplo, BigQuery carga una tabla desde un bucket de Cloud Storage para ejecutar una consulta.

Para determinar el conjunto correcto de métodos que se permitirán, puedes usar el modo de ejecución de prueba de los Controles del servicio de VPC. Para ello, primero habilita un perímetro en el modo de ejecución de prueba sin políticas de entrada o salida y recopila la lista de métodos invocados desde el registro de auditoría. Luego, agrega estos métodos de forma progresiva a las políticas de entrada y salida en el modo de ejecución de prueba hasta que se detengan todas las infracciones. En ese punto, la configuración se puede cambiar del modo de ejecución de prueba al modo de aplicación forzosa.

Limitaciones

Estos son los límites cuando se usan reglas de entrada y salida:

Límite por perímetro de servicio Límite por política de acceso
Políticas de entrada 100 10,000
Políticas de salida 100 10,000
Origen de entrada1 30 500
Cantidad total de atributos en las reglas de entrada o salida, como proyectos, niveles de acceso, selectores de métodos o identidades 2000 -
Identidades - 2000
Mensajes proto de operaciones de la API - Se pueden especificar 1,000 mensajes de protocolo de ApiOperation dentro de un mensaje de protocolo de AccessPolicy.

1 Las referencias de nivel de acceso en sources cuentan para la cantidad total de referencias a niveles de acceso definidas en perímetros de servicio. Los recursos en sources cuentan para la cantidad total de perímetros de servicio permitidos en la política de acceso.

Características no compatibles

Actualmente, las siguientes funciones no se aplican a las reglas de entrada y salida:

  1. Identificar los recursos de Google Cloud por etiquetas y no por proyectos.
  2. Especificar grupos en el campo identities de una regla from de entrada o salida.
  3. No todos los servicios admiten reglas de entrada o salida por método. Consulta Restricciones de los métodos de servicio compatibles.
  4. Los tipos de identidad ANY_SERVICE_ACCOUNT y ANY_USER_ACCOUNT no se pueden usar para permitir las siguientes operaciones: