Crea una asignación de política del SO


Usa las políticas del SO para mantener configuraciones de software coherentes en las instancias de máquina virtual (VM) de Linux y Windows.

Antes de comenzar

  • Revisa la Política del SO y la asignación de política del SO.
  • Revisa las cuotas de configuración del SO.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

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

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    Terraform

    Para usar las muestras de Terraform de esta página desde un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Instala Google Cloud CLI.
    2. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

      gcloud init
    3. Crea credenciales de autenticación locales para tu Cuenta de Google:

      gcloud auth application-default login

    Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

    REST

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

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Sistemas operativos compatibles

Para obtener una lista completa de los sistemas operativos y las versiones compatibles con las políticas del SO, consulta Detalles de los sistemas operativos.

Permisos

Debido a que puedes usar políticas del SO para instalar y administrar paquetes de software en una VM, la creación y administración de políticas del SO equivale a otorgar acceso de ejecución de código remoto en una VM.

Cuando configuras las políticas del SO, los permisos de IAM se usan para controlar el acceso a los recursos y las actividades de la política que se registran en la auditoría. Sin embargo, los usuarios aún pueden ejecutar código en la VM, lo que implica un riesgo de seguridad potencial. Para mitigar este riesgo, te recomendamos que proporciones solo el acceso requerido a cada usuario.

Los propietarios de un proyecto tienen acceso total para crear y administrar asignaciones de políticas del SO. Para el resto de los usuarios, debes otorgar permisos. Puedes otorgar una de las siguientes funciones detalladas:

  • Administrador de OSPolicyAssignment (roles/osconfig.osPolicyAssignmentAdmin). Contiene permisos para crear, borrar, actualizar, obtener y enumerar asignaciones de políticas de SO.
  • Editor de OSPolicyAssignment (roles/osconfig.osPolicyAssignmentEditor). Contiene permisos para actualizar, obtener y enumerar asignaciones de políticas de SO.
  • Visualizador de OSPolicyAssignment (roles/osconfig.osPolicyAssignmentViewer). Contiene permisos de acceso de solo lectura para obtener y enumerar asignaciones de políticas de SO.

Comando de ejemplo para establecer permisos

Para otorgar acceso de administrador a un usuario para las asignaciones de políticas del SO, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member user:USER_ID@gmail.com \
        --role roles/osconfig.osPolicyAssignmentAdmin

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto
  • USER_ID: El nombre de usuario en Google Workspace del usuario.

Crea una asignación de política del SO

Para crear y lanzar una asignación de política de SO, completa los siguientes pasos:

  1. Configura VM Manager.
  2. Asigna los permisos necesarios a los usuarios.
  3. Revisa la Política del SO y asignación de política del SO.
  4. Crea los recursos de la política del SO.
  5. Para crear y lanzar la asignación de políticas del SO, usa uno de los siguientes métodos:

    Consola

    Para crear y lanzar una asignación de política de SO, completa los siguientes pasos:

    1. En tu cliente local, crea o descarga una política del SO. Debe ser un archivo JSON o YAML. Para obtener más información sobre la creación de políticas del SO o ver ejemplos de políticas del SO, consulta Políticas del SO.
    2. En la consola de Google Cloud, ve a la página Políticas del SO.

      Ir a Políticas del SO

    3. Haz clic en Crear asignación de política de SO.

    4. En la sección ID de la asignación, se proporciona un nombre para la asignación de política del SO. Consulta la convención de asignación de nombres de recursos.

    5. En la sección Políticas del SO, sube el archivo de políticas del SO.

    6. En la sección Instancias de VM de destino, especifica las VM de destino.

      • Selecciona la zona que contiene las VM a las que deseas aplicar la política.
      • Selecciona las familias de SO.
      • Opcional: puedes filtrar aún más las VM si especificas incluir y excluir etiquetas.

      Por ejemplo, puedes seleccionar todas las VM de Ubuntu en el entorno de prueba y excluir aquellas que se ejecutan en Google Kubernetes Engine si especificas lo siguiente:

      • Familia del SO: ubuntu
      • Incluir: env:test, env:staging
      • Excluir: goog-gke-node

      Selecciona las VM de destino.

    7. Especifica un plan de lanzamiento.

      • Especifica el tamaño del conjunto (también conocido como presupuesto de interrupción). Por ejemplo, 10%.
      • Especifica el tiempo de espera. Por ejemplo, 15 minutos.

        Configuración de lanzamiento.

    8. Haz clic en Iniciar lanzamiento.

    gcloud

    Para crear e implementar una asignación de política de SO en una zona, completa los siguientes pasos:

    1. Crea un recurso de asignación de política de SO en formato JSON o YAML. Este archivo define las políticas del SO que deseas aplicar a tus VM, las VM de destino a las que deseas aplicar las políticas y la tasa de lanzamiento en la que se aplican las políticas del SO. Para obtener más información sobre este archivo y las asignaciones de muestra, consulta Asignación de políticas del SO.

    2. Usa el comando os-config os-policy-assignments create para crear y lanzar la asignación de política de SO en una ubicación especificada.

      gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \
         --location=ZONE \
         --file=OS_POLICY_ASSIGNMENT_FILE \
         --async
      

      Reemplaza lo siguiente:

      • OS_POLICY_ASSIGNMENT_ID: es el nombre para la asignación de políticas del SO. Consulta Convención de asignación de nombres de recursos.
      • ZONE: es la zona en la que se creará la asignación de política del SO.
      • OS_POLICY_ASSIGNMENT_FILE: es la ruta de acceso absoluta del archivo de asignación de política del SO que creaste en el paso anterior.

      Ejemplo

      gcloud compute os-config os-policy-assignments create my-os-policy-assignment \
          --location=asia-south1-a \
          --file=/downloads/assignment-config.yaml \
          --async
      

      El resultado es similar al siguiente:

      Create request issued for: [my-os-policy-assignment]
      Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
      
    3. Toma nota del nombre del recurso completamente calificado para la operación. En el ejemplo anterior, el nombre del recurso completamente calificado es:

      projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
      

      Puedes usar este nombre del recurso completamente calificado para obtener detalles de un lanzamiento o cancelarlo. Consulta Lanzamientos.

    Terraform

    Para crear una asignación de política del SO, usa el recurso google_os_config_os_policy_assignment.

    En el siguiente ejemplo, se verifica si el servidor web de Apache se ejecuta en las VMs de CentOS.

    resource "google_os_config_os_policy_assignment" "my_os_policy_assignment" {
    
      name        = "my-os-policy-assignment"
      location    = "us-west1-a"
      description = "An OS policy assignment that verifies if the Apache web server is running on CentOS VMs."
    
      instance_filter {
        # filter to select VMs
        all = false
    
        exclusion_labels {
          labels = {
            label-one = "goog-gke-node"
          }
        }
    
        inclusion_labels {
          labels = {
            env = "test",
          }
        }
    
        inventories {
          os_short_name = "centos"
          os_version    = "7*"
        }
      }
    
      os_policies {
        #list of OS policies to be applied to VMs
        id   = "apache-always-up-policy"
        mode = "ENFORCEMENT"
    
        resource_groups { #list of resource groups for the policy
          resources {
            id = "ensure-apache-is-up"
    
            exec {
              validate {
                interpreter = "SHELL"
                script      = "if systemctl is-active --quiet httpd; then exit 100; else exit 101; fi"
              }
    
              enforce {
                interpreter = "SHELL"
                script      = "systemctl start httpd && exit 100"
              }
            }
          }
    
          inventory_filters {
            os_short_name = "centos"
            os_version    = "7*"
          }
        }
    
        allow_no_resource_group_match = false #OS policy compliance status
        description                   = "An OS policy that verifies if the Apache web server is running on Linux VMs."
      }
    
      rollout {
        #define rollout parameters
        disruption_budget {
          fixed = 1
        }
        min_wait_duration = "3.5s"
      }
    }

    Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

    REST

    Para crear una asignación de política del SO en tu cliente local, completa los siguientes pasos:

    1. Crea una asignación de política del SO. Debe ser un archivo JSON. Para obtener más información sobre la creación de asignaciones de políticas del SO o ver las asignaciones de políticas del SO de muestra, consulta Asignación de política del SO.

      Si deseas usar la asignación de política del SO YAML de muestra, debes convertirla en JSON.

    2. En la API, crea una solicitud POST para el método projects.locations.osPolicyAssignments.create.

      En el cuerpo de la solicitud, pega las especificaciones de la asignación de política del SO del paso anterior.

      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
       JSON_OS_POLICY
      }
      

      Reemplaza lo siguiente:

      • PROJECT_ID: El ID de tu proyecto
      • OS_POLICY_ASSIGNMENT_ID: es el nombre de la asignación de política del SO.
      • JSON_OS_POLICY: son las especificaciones de la asignación de política del SO creadas en el paso anterior. Debe estar en formato JSON. Para obtener más información sobre los parámetros y el formato, consulta Resource: OSPolicyAssignment.
      • ZONE: es la zona en la que se creará la asignación de la política del SO.

      Ejemplo

      Por ejemplo, para crear una asignación de política del SO para Google Cloud Observability que instale agentes de supervisión y registro en las VMs seleccionadas mediante la asignación de política del SO de muestra, completa lo siguiente pasos:

      1. Convierte la muestra a JSON
      2. Realiza la siguiente solicitud:
      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
        "osPolicies": [
          {
            "id": "setup-repo-and-install-package-policy",
            "mode": "ENFORCEMENT",
            "resourceGroups": [
              {
                "resources": [
                  {
                    "id": "setup-repo",
                    "repository": {
                      "yum": {
                        "id": "google-cloud-monitoring",
                        "displayName": "Google Cloud Monitoring Agent Repository",
                        "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-x86_64-all",
                        "gpgKeys": [
                          "https://packages.cloud.google.com/yum/doc/yum-key.gpg",
                          "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg"
                        ]
                      }
                    }
                  },
                  {
                    "id": "install-pkg",
                    "pkg": {
                      "desiredState": "INSTALLED",
                      "yum": {
                        "name": "stackdriver-agent"
                      }
                    }
                  }
                ]
              }
            ]
          }
        ],
        "instanceFilter": {
          "inclusionLabels": [
            {
              "labels": {
                "used_for": "testing"
              }
            }
          ]
        },
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": {
            "seconds": 300
          }
        }
      }
      

Lanzamientos

Las asignaciones de las políticas del SO se implementan de acuerdo con la tasa de lanzamiento. Esto significa que las asignaciones que se orientan a un conjunto de VM se pueden implementar de forma gradual y no se aplican de inmediato a todas las VM. Los cambios se lanzan de forma gradual para brindarte la oportunidad de intervenir y cancelar un lanzamiento si los nuevos cambios causan regresiones.

Cuando las llamadas de método a una API pueden tardar mucho tiempo en completarse, la API muestra una operación de larga duración (LRO). Para obtener más información sobre las LRO, consulta Operaciones de larga duración.

La API de configuración del SO crea una LRO cada vez que creas, actualizas o borras una asignación de política del SO. Cada LRO muestra un recurso de operación. Este recurso de operación es similar al siguiente:

Create request issued for: [my-os-policy-assignment]
Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.

Cada operación de creación, actualización o eliminación también genera una revisión nueva de asignación de política de SO. Para ver las revisiones de una asignación de política del SO, consulta Enumera revisiones de asignación de políticas del SO.

Puedes usar Google Cloud CLI para obtener los detalles de un lanzamiento o cancelarlo.

Obtén detalles sobre un lanzamiento

Para obtener detalles de un lanzamiento, usa el comando os-config os-policy-assignments operations describe.

gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME

Reemplaza FULLY_QUALIFIED_OPERATION_NAME por el nombre del recurso completamente calificado para la operación que se muestra a partir de la operación de creación, actualización o eliminación.

Ejemplo

gcloud compute os-config os-policy-assignments operations describe \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Resultado de ejemplo

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata
  apiMethod: CREATE
  osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909
  rolloutStartTime: '2021-04-15T00:53:52.963569Z'
  rolloutState: SUCCEEDED
  rolloutUpdateTime: '2021-04-15T00:53:53.094041Z'
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909
response:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment
  baseline: true
  description: My test policy
  instanceFilter:
    inclusionLabels:
    - labels:
        label-key-not-targeting-instances: label-value-not-targeting-instances
  name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment
  osPolicies:
  - id: q-test-policy
    mode: ENFORCEMENT
    resourceGroups:
    - osFilter:
        osShortName: centos
        osVersion: '7'
      resources:
      - id: add-repo
        repository:
          yum:
            baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all

Cancela un lanzamiento

Consola

  1. En la consola de Google Cloud, ve a la página Políticas del SO.

    Ir a Políticas del SO

  2. Haz clic en la pestaña Asignaciones de políticas del SO.

  3. Para la asignación de la política del SO en la que deseas cancelar el lanzamiento, haz clic en Acción () > Cancelar lanzamiento.

  4. Haz clic en Cancelar lanzamiento.

gcloud

Para cancelar un lanzamiento, usa el comando gcloud compute os-config os-policy-assignments operations cancel.

gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME

Reemplaza FULLY_QUALIFIED_OPERATION_NAME por el nombre del recurso completamente calificado para la operación que se muestra a partir de la operación de creación, actualización o eliminación.

Ejemplo

gcloud compute os-config os-policy-assignments operations cancel \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Si el comando se ejecuta de forma correcta, no se muestra ningún resultado.

Próximos pasos