Restricciones administradas

Las restricciones administradas son políticas de la organización predefinidas, creadas en una plataforma moderna, que proporcionan un control centralizado y programático sobre tus recursos de Compute Engine. Incluyen compatibilidad integrada con herramientas de lanzamiento seguro, como Policy Simulator y la ejecución de prueba.

Las restricciones administradas se identifican con el prefijo compute.managed.* y sirven como reemplazo directo para las restricciones heredadas compute.*.

Beneficios

  • Lanzamiento y supervisión seguros: Implementa políticas con herramientas completas, un control de cambios más rápido y una implementación gradual con capacidades de simulación y pruebas de validación.
  • Registro coherente: Aplica uniformidad en los registros y los mensajes de error, lo que simplifica la supervisión centralizada y optimiza las auditorías.

Herencia de políticas

Las políticas de la organización que configures en un recurso se heredan en los recursos subordinados de ese recurso en la jerarquía de recursos. Por ejemplo, si aplicas una política en una carpeta, Cloud de Confiance by S3NS aplica la política en todos los proyectos de esa carpeta.

Precios

El Servicio de políticas de la organización, que incluye las políticas de la organización predefinidas (heredadas), administradas y personalizadas, se ofrece sin cargo.

Antes de comenzar

  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs de Cloud de Confiance by S3NS . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:

    Console

    Cuando usas la consola de Cloud de Confiance para acceder a los servicios y las APIs de Cloud de Confiance by S3NS , no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:

      gcloud init
  • Configura una región y una zona predeterminadas.
  • REST

    Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .

Roles obligatorios

Para obtener los permisos que necesitas para administrar las políticas de la organización con restricciones administradas, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para administrar las políticas de la organización con restricciones administradas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para administrar las políticas de la organización con restricciones administradas:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set
  • Para probar las restricciones, haz lo siguiente:
    • compute.instances.create en el proyecto
    • Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
    • Si deseas usar una instantánea para crear la VM, sigue estos pasos: compute.snapshots.useReadOnly en la instantánea
    • Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente: compute.instanceTemplates.useReadOnly en la plantilla de instancias
    • Para asignar una red heredada a la VM: compute.networks.use en el proyecto
    • Si deseas especificar una dirección IP estática para la VM; compute.addresses.use en el proyecto
    • Para asignar una dirección IP externa a la VM cuando se usa una red y punto heredado; compute.networks.useExternalIp en el proyecto
    • A fin de especificar una subred para la VM: compute.subnetworks.use en el proyecto o en la subred elegida
    • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
    • A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos: compute.instances.setMetadata en el proyecto
    • A fin de configurar etiquetas para la VM y los puntos; compute.instances.setTags en la VM
    • Si deseas configurar etiquetas para la VM, haz lo siguiente: compute.instances.setLabels en la VM
    • A fin de configurar una cuenta de servicio para que la VM la usecompute.instances.setServiceAccount en la VM
    • Si deseas crear un disco nuevo para la VM: compute.disks.create en el proyecto
    • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente: compute.disks.use en el disco
    • Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Restricciones administradas disponibles

Las siguientes restricciones de políticas de la organización administradas están disponibles para Compute Engine:

Evaluación jerárquica de metadatos

Las restricciones administradas que se basan en claves de metadatos predefinidas, como el Acceso al SO o el Acceso al puerto serie, admiten la evaluación jerárquica. Cuando Compute Engine evalúa estas restricciones, verifica los valores de metadatos establecidos a nivel de la instancia de VM, el proyecto o la zona.

Establecer valores de metadatos a nivel del proyecto o de la zona te permite administrar instancias de VM a gran escala. Sin embargo, la aplicación de restricciones solo se produce durante las llamadas a la API de creación o actualización de instancias de VM. Por lo tanto, los cambios en los metadatos del proyecto o de la zona solo afectan el cumplimiento de las restricciones de una instancia de VM cuando se crea o actualiza esa instancia.

Restricciones y niveles basados en metadatos

Restricción Clave de metadatos Niveles de jerarquía de metadatos
compute.managed.disableSerialPortAccess serial-port-enable Proyecto, zona, instancia
compute.managed.requireOsLogin enable-oslogin Proyecto, zona, instancia
compute.managed.disableGuestAttributesAccess enable-guest-attributes Proyecto, zona, instancia
compute.managed.requireOsConfig enable-osconfig Proyecto, zona, instancia
compute.managed.disallowGlobalDns VmDnsSetting Proyecto, instancia

Lanzamiento seguro: El ciclo de vida de la política

Para evitar interrupciones en el servicio cuando implementes gradualmente restricciones nuevas, Google recomienda que implementes restricciones administradas siguiendo estos pasos:

Analiza con Policy Simulator

Antes de aplicar una política, usa Policy Simulator para ver qué recursos existentes la incumplen. Lleva a cabo los pasos siguientes:

  1. En la consola de Cloud de Confiance , ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En la barra de filtros, busca tu restricción y, luego, haz clic en el nombre de la restricción para ir a su página Detalles de la política.

  3. Haz clic en Probar cambios para generar un informe de simulación.

  4. Los cambios en los metadatos jerárquicos pueden tardar algunas horas en reflejarse en el informe de simulación para las restricciones en la configuración de metadatos de VM.

  5. Revisa el informe para reconfigurar los recursos que no cumplen con las políticas o solicitar exenciones.

Validar con una ejecución de prueba

El modo de ejecución de prueba registra los incumplimientos en Cloud Logging, pero no aplica restricciones.

Para probar una restricción, usa el comando gcloud org-policies set-policy de la siguiente manera:

  1. Crea un archivo YAML de política (por ejemplo, dry-run-policy.yaml) con un dryRunSpec:

    name: projects/PROJECT_ID/policies/compute.managed.requireOsLogin
    dryRunSpec:
      rules:
      - enforce: true
    

    Reemplaza PROJECT_ID con el ID del proyecto.

  2. Aplica la política:

    gcloud org-policies set-policy dry-run-policy.yaml
    

Aplicación completa

Después de simular y probar tu política, puedes aplicarla a un recurso. Los cambios en las políticas pueden tardar hasta 15 minutos en propagarse por todos los sistemas deCloud de Confiance by S3NS .

Prueba la aplicación de restricciones

Después de establecer una política, puedes verificar su aplicación con gcloud CLI. Por ejemplo, para probar la restricción compute.managed.requireOsLogin, sigue estos pasos:

  1. Enumera las políticas existentes para confirmar tu configuración:

    gcloud org-policies list --project=PROJECT_ID
    
  2. Aplica la política de aplicación con un archivo YAML:

    gcloud org-policies set-policy enforce_managed_constraint.yaml
    
  3. Verifica la aplicación llamando a una API de mutación. El intento de crear una instancia de VM con metadatos que no cumplen con los requisitos debería fallar:

    gcloud compute instances create VM_NAME \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --metadata=enable-oslogin=false
    

    Reemplaza lo siguiente:

    • VM_NAME: Es el nombre de la instancia de VM nueva.
    • MACHINE_TYPE: Es un tipo de máquina válido, por ejemplo, e2-micro.
    • IMAGE_FAMILY: Es una familia de imágenes válida, por ejemplo, debian-11.
    • IMAGE_PROJECT: Es el proyecto de la familia de imágenes, por ejemplo, debian-cloud.
  4. Revisa el mensaje de error. Deberías ver un rechazo que indica la restricción específica que se incumplió: ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Operation denied by org policy: [constraints/compute.managed.requireOsLogin]

Exenciones condicionales con etiquetas

Puedes usar etiquetas para otorgar excepciones a recursos específicos según las necesidades comerciales. En este ejemplo, usamos una etiqueta llamada osLoginOptional para identificar los recursos que están exentos del requisito de Acceso al SO. Cuando vinculas esta etiqueta con un valor de true a un recurso, la política de la organización permite que ese recurso específico exista sin que se habilite el Acceso al SO, incluso mientras la política sigue aplicándose estrictamente al resto de tu entorno.

Para otorgar una excepción con etiquetas, sigue estos pasos:

  1. Crea una etiqueta: Usa gcloud CLI para crear una clave y un valor de etiqueta.

    1. Crea la clave de etiqueta:

      gcloud resource-manager tags keys create osLoginOptional \
          --parent=organizations/ORGANIZATION_ID
      
    2. Crea el valor de la etiqueta:

      gcloud resource-manager tags values create true \
          --parent=organizations/ORGANIZATION_ID/tagKeys/osLoginOptional
      

    Reemplaza ORGANIZATION_ID por el ID de tu organización.

  2. Vincula la etiqueta a un recurso. Para eximir un proyecto de la restricción compute.managed.requireOsLogin, vincula la etiqueta osLoginOptional=true al proyecto con el comando gcloud resource-manager tags bindings create:

    gcloud resource-manager tags bindings create \
        --tag-value=ORGANIZATION_ID/osLoginOptional/true \
        --parent=//cloudresourcemanager.googleapis.com/projects/PROJECT_ID \
        --location=global
    

    Reemplaza ORGANIZATION_ID por el ID de tu organización y PROJECT_ID por el ID del proyecto que deseas eximir.

    Para obtener información sobre cómo vincular etiquetas a otros recursos, consulta Cómo vincular una etiqueta a un recurso.

  3. Actualiza la política: Crea o actualiza el archivo YAML de la política (por ejemplo, policy.yaml) para incluir la regla condicional.

    name: projects/PROJECT_ID/policies/compute.managed.requireOsLogin
    spec:
      rules:
      - condition:
          expression: "resource.matchTag('ORGANIZATION_ID/osLoginOptional', 'true')"
        enforce: false
      - enforce: true
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • ORGANIZATION_ID: Es el ID de tu organización.
  4. Aplica la política: Usa el siguiente comando de gcloud CLI para activar la configuración:

    gcloud org-policies set-policy policy.yaml
    

Migración desde restricciones heredadas

Cuando realices la migración, ten en cuenta que las restricciones administradas mejoran el comportamiento de las políticas heredadas, pero no lo replican exactamente. Las restricciones administradas ofrecen una mayor previsibilidad, ya que solo verifican los incumplimientos durante las solicitudes a la API que crean o modifican recursos. Si una solicitud incumple una restricción, la llamada a la API falla con un error claro. Esto difiere de las políticas heredadas, que se podían aplicar en varias etapas de una operación o usarse como atributos de recursos, lo que hacía que el comportamiento de aplicación fuera menos predecible.

Cuando cambies de una restricción compute.* heredada a una compute.managed.* moderna equivalente, sigue estos pasos para evitar un ajuste no deseado de las restricciones:

  1. Descubrimiento: Identifica la nueva alternativa de restricción administrada.
  2. Analiza y valida: Usa el Simulador de políticas y la ejecución de prueba como se describió anteriormente.
  3. Aplica la restricción administrada: Aplica la nueva restricción administrada junto con la heredada.
  4. Borra las políticas heredadas:
    • Navega al Inventario de activos en la consola de Cloud de Confiance y filtra pororgpolicy.Policyy el nombre de la restricción heredada para identificar todas las políticas que usan la restricción heredada.
    • Borra todas las políticas que usan la restricción heredada. Borrar una política restablece esa política al comportamiento predeterminado administrado por Google para esa restricción.

¿Qué sigue?