Crear una asignación de política de sistema operativo

Utilice políticas de sistema operativo para mantener configuraciones de software coherentes en instancias de máquinas virtuales (VM) de Linux y Windows.

Antes de comenzar

Sistemas operativos compatibles

Para obtener una lista completa de los sistemas operativos y las versiones que admiten políticas de sistema operativo, consulte Detalles del sistema operativo .

Permisos

Dado que puede utilizar políticas de sistema operativo para instalar y administrar paquetes de software en una máquina virtual, la creación y administración de políticas de sistema operativo equivale a otorgar acceso de ejecución remota de código en una máquina virtual. Cuando configura políticas del sistema operativo, los permisos de IAM se utilizan para controlar el acceso a los recursos de la política y se auditan las actividades.

Los propietarios de un proyecto tienen acceso completo para crear y administrar asignaciones de políticas del sistema operativo. Para todos los demás usuarios, debe otorgar permisos. Puede otorgar uno de los siguientes roles granulares:

  • Administrador de OSPolicyAssignment ( roles/osconfig.osPolicyAssignmentAdmin ). Contiene permisos para crear, eliminar, actualizar, obtener y enumerar asignaciones de políticas del sistema operativo.
  • Editor de OSPolicyAssignment ( roles/osconfig.osPolicyAssignmentEditor ). Contiene permisos para actualizar, obtener y enumerar asignaciones de políticas del sistema operativo.
  • Visor de OSPolicyAssignment ( roles/osconfig.osPolicyAssignmentViewer ). Contiene permisos de acceso de solo lectura para obtener y enumerar asignaciones de políticas del sistema operativo.

Comando de ejemplo para establecer permisos

Para otorgar acceso de administrador a un usuario para asignaciones de políticas del sistema operativo, ejecute el siguiente comando:

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

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto
  • USER_ID : el nombre de usuario de Google Workspace del usuario

Crear una asignación de política de sistema operativo

Para crear e implementar una asignación de política de sistema operativo, complete los siguientes pasos:

  1. Configure el Administrador de VM .
  2. Asigne los permisos necesarios a los usuarios.
  3. Revise la política del sistema operativo y la asignación de políticas del sistema operativo .
  4. Cree los recursos de política del sistema operativo .
  5. Para crear e implementar la asignación de política del sistema operativo, utilice uno de los siguientes métodos:

    Consola

    Para crear e implementar una asignación de política de sistema operativo, complete los siguientes pasos:

    1. En su cliente local, cree o descargue una política de sistema operativo. Debe ser un archivo JSON o YAML. Para obtener más información sobre la creación de políticas de sistema operativo o para ver ejemplos de políticas de sistema operativo, consulte Políticas de sistema operativo .
    2. En la consola de Google Cloud, vaya a la página de políticas del sistema operativo .

      Ir a políticas del sistema operativo

    3. Haga clic en Crear asignación de política de sistema operativo .

    4. En la sección ID de asignación , proporcione un nombre para la asignación de política del sistema operativo. Consulte Convención de nomenclatura de recursos .

    5. En la sección de políticas del sistema operativo , cargue el archivo de políticas del sistema operativo.

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

      • Seleccione la zona que contiene las máquinas virtuales a las que desea aplicar la política.
      • Seleccione las familias de sistemas operativos.
      • Opcional: puede filtrar aún más las máquinas virtuales especificando etiquetas de inclusión y exclusión.

      Por ejemplo, puede seleccionar todas las máquinas virtuales de Ubuntu en su entorno de prueba y excluir aquellas que ejecutan Google Kubernetes Engine, especificando lo siguiente:

      • Familia de sistemas operativos: ubuntu
      • Incluye: env:test , env:staging
      • Excluir: goog-gke-node

      Seleccione las máquinas virtuales de destino.

    7. Especifique un plan de implementación.

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

        Configuración de implementación.

    8. Haga clic en Iniciar implementación .

    nube de gcloud

    Para crear e implementar una asignación de política de sistema operativo en una zona, complete los siguientes pasos:

    1. Cree un recurso de asignación de políticas del sistema operativo en formato JSON o YAML. Este archivo define las políticas del sistema operativo que desea aplicar a sus máquinas virtuales, las máquinas virtuales de destino a las que desea aplicar las políticas y la tasa de implementación a la que aplicar las políticas del sistema operativo. Para obtener más información sobre este archivo y asignaciones de muestra, consulte Asignación de política del sistema operativo .

    2. Utilice el comando os-config os-policy-assignments create para crear e implementar la asignación de política del sistema operativo en una ubicación específica.

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

      Reemplace lo siguiente:

      • OS_POLICY_ASSIGNMENT_ID : nombre de la asignación de política del sistema operativo. Consulte Convención de nomenclatura de recursos .
      • ZONE : zona en la que crear la asignación de política del sistema operativo.
      • OS_POLICY_ASSIGNMENT_FILE : la ruta absoluta al archivo de asignación de políticas del sistema operativo que creó 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. Tome nota del nombre completo del recurso para la operación. En el ejemplo anterior, el nombre de recurso completo es:

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

      Puede utilizar este nombre de recurso completo para obtener detalles para una implementación o para cancelar una implementación. Consulte Implementaciones .

    Terraformar

    Para crear una asignación de política de sistema operativo, utilice el recurso google_os_config_os_policy_assignment .

    El siguiente ejemplo verifica si el servidor web Apache se ejecuta en máquinas virtuales 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"
      }
    }

    Para aprender cómo aplicar o eliminar una configuración de Terraform, consulte Comandos básicos de Terraform .

    DESCANSAR

    Para crear una asignación de política de sistema operativo en su cliente local, complete los siguientes pasos:

    1. Cree una asignación de política de sistema operativo. Debe ser un archivo JSON. Para obtener más información sobre cómo crear asignaciones de políticas de sistema operativo o ver ejemplos de asignaciones de políticas de sistema operativo, consulte Asignación de políticas de sistema operativo .

      Si desea utilizar la asignación de política del sistema operativo YAML de muestra, debe convertirla a JSON.

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

      En el cuerpo de la solicitud, pegue las especificaciones de asignación de políticas del sistema operativo del paso anterior.

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

      Reemplace lo siguiente:

      • PROJECT_ID : ID de tu proyecto
      • OS_POLICY_ASSIGNMENT_ID : nombre para la asignación de política del sistema operativo
      • JSON_OS_POLICY : las especificaciones de asignación de políticas del sistema operativo creadas en el paso anterior. Este debe estar en formato JSON. Para obtener más información sobre los parámetros y el formato, consulte Resource: OSPolicyAssignment .
      • ZONE : zona para crear la asignación de política del sistema operativo en

      Ejemplo

      Por ejemplo, para crear una asignación de política de sistema operativo para Google Cloud Observability que instale agentes de monitoreo y registro en máquinas virtuales seleccionadas mediante la asignación de política de sistema operativo de muestra , complete los siguientes pasos:

      1. Convertir la muestra a JSON
      2. Haga 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 políticas del sistema operativo se implementan según una tasa de implementación. Esto significa que las asignaciones dirigidas a un conjunto de máquinas virtuales se pueden implementar gradualmente y no se aplican a todas las máquinas virtuales de inmediato. Los cambios se implementan gradualmente para darle la oportunidad de intervenir y cancelar una implementación si los nuevos cambios provocan regresiones.

Cuando las llamadas a métodos a una API pueden tardar mucho en completarse, la API devuelve operaciones de larga duración (LRO). Para obtener más información sobre las LRO, consulte Operaciones de larga duración .

La API de configuración del sistema operativo crea una LRO cada vez que crea, actualiza o elimina una asignación de política del sistema operativo. Cada LRO devuelve 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 nueva revisión de asignación de política del sistema operativo. Para ver las revisiones de una asignación de política de sistema operativo, consulte Listar revisiones de asignaciones de política de sistema operativo .

Puede utilizar la CLI de Google Cloud para obtener los detalles de una implementación o cancelarla.

Obtener detalles para una implementación

Para obtener detalles para una implementación, use el comando os-config os-policy-assignments operations describe .

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

Reemplace FULLY_QUALIFIED_OPERATION_NAME con el nombre de recurso completo para la operación que se devuelve desde 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

Salida 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

Cancelar una implementación

Consola

  1. En la consola de Google Cloud, vaya a la página de políticas del sistema operativo .

    Ir a políticas del sistema operativo

  2. Haga clic en la pestaña Asignaciones de políticas del sistema operativo .

  3. Para la asignación de política del sistema operativo cuya implementación desea cancelar, haga clic en Acción ( ) > Cancelar implementación .

  4. Haga clic en Cancelar implementación .

nube de gcloud

Para cancelar una implementación, 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

Reemplace FULLY_QUALIFIED_OPERATION_NAME con el nombre de recurso completo para la operación que se devuelve desde 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 tiene éxito, no se devuelve ningún resultado.

¿Qué sigue?