Exigir políticas de plataforma basadas en verificaciones de validación continua para todos los clústeres de GKE

En esta página, se muestra cómo usar el Servicio de políticas de la organización para exigir que Los clústeres de GKE usan una o más plataformas basadas en verificaciones de validación continua (CV) políticas. Debes especificar las políticas de plataforma basadas en verificaciones obligatorias restricciones personalizadas. Luego, aplica las restricciones personalizadas en la política de la organización.

Costos

En esta guía, se usan los siguientes servicios de Google Cloud:

  • Autorización Binaria, pero la CV está disponible de forma gratuita durante la etapa de vista previa
  • Las políticas y las restricciones de la organización se ofrecen sin cargo.

Antes de comenzar

  1. Habilitar la autorización binaria
  2. Configurar un CV con políticas de plataformas basadas en verificaciones y al menos una política de la plataforma basada en la verificación de CV.

Roles obligatorios

Para obtener los permisos que necesitas a fin de crear restricciones y aplicar políticas de la organización, pídele a tu administrador que te otorgue el rol de IAM de administrador de políticas de la organización (roles/orgpolicy.policyAdmin) en tu organización de Google Cloud. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea una restricción personalizada de CV

Console

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

    Ir a Políticas de la organización

  2. En la página Políticas de la organización, haz clic en . Restricción personalizada.

  3. Si se te solicita que lo hagas, haz clic en Cambiar a la organización superior. Para Para obtener más información sobre las organizaciones, consulta Introducción al Servicio de políticas de la organización

  4. En Detalles de la restricción, ingresa la siguiente información en los campos:

    1. Nombre visible: Un nombre visible para la restricción, como Require a Binary Authorization continuous validation policy for all GKE clusters. Usa el nombre visible para buscar la restricción después de que se guarde. El campo de nombre visible tiene una longitud máxima de 200 caracteres

    2. Constraint ID: Es un ID de restricción para tu restricción, por ejemplo, RequireBinAuthzCVPolicy.

    3. Descripción (opcional): una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima del campo de descripción es 2000 caracteres.

  5. En Aplicación, haz lo siguiente:

    1. En Tipos de recursos, ingresa container.googleaips.com/Cluster.

    2. En Método de aplicación, selecciona Aplicar cuando se cree y se actualice.

    3. Ingresa una expresión en el campo Condición. La longitud máxima de este campo es 1000 caracteres. La restricción personalizada se aplica cuando la condición se evalúa como true. La condición es como expresión en la sintaxis de Common Expression Language (CEL). Puedes combinar expresiones con (&&) o (||) para crear una condición compleja. CEL es un lenguaje de expresión similar a C. Para aprender más sobre la sintaxis y semántica de CEL, consulta https://github.com/google/cel-spec. Para ingresar la condición, haz lo siguiente:

      1. Haz clic en Editar condición.

      2. Ingresa una expresión para comprobar la existencia de un Política de la plataforma de CV. La siguiente condición requiere que una plataforma de CV la vinculación de políticas y que la política de la plataforma tenga una dirección nombre:

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
        

        Reemplaza lo siguiente:

        • PROJECT_ID: Es el ID del proyecto de tu política de la plataforma. El proyecto debe estar en la misma organización.
        • POLICY_ID: El ID de la política de tu política de la plataforma.

        La siguiente condición requiere que dos plataformas de CV vinculaciones de políticas existen y que cada una tiene un nombre de política de plataforma específico.

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
        
        • PROJECT_ID1: Es el ID del proyecto de tu primera política de la plataforma. El proyecto debe estar en la misma organización.
        • POLICY_ID1: Es el ID de la primera política de tu plataforma.
        • PROJECT_ID2: Es el ID del proyecto de tu política de la segunda plataforma.
        • POLICY_ID2: el ID de la segunda política de la plataforma.

        • Haz clic en Guardar.

    4. En Acción, selecciona Permitir.

  6. Para crear tu restricción personalizada, haz clic en Crear restricción.

gcloud

  1. Crea un archivo YAML para la restricción personalizada:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID
    resource_types: container.googleapis.com/Cluster
    method_types:
      - CREATE
      - UPDATE
    condition: >-
      CONDITION
    action_type: ACTION
    display_name: DISPLAY_NAME
    description: DESCRIPTION
    

    Reemplaza lo siguiente:

    • ORGANIZATION_ID: El ID de tu organización, por ejemplo, 123456789.
    • CONSTRAINT_ID: Es un ID de restricción, por ejemplo, RequireBinAuthzCVPolicy
    • CONDITION: Ingresa una expresión para verificar la existencia de una política de plataforma de CV. La longitud máxima de este campo es 1000 caracteres. La restricción personalizada se aplica cuando la condición se evalúa como true. La condición es como expresión en la sintaxis de Common Expression Language (CEL). Puedes combinar expresiones con (&&) o (||) para crear una condición compleja. CEL es un lenguaje de expresión similar a C. Para aprender más sobre la sintaxis y semántica de CEL, consulta https://github.com/google/cel-spec. La siguiente condición requiere que una plataforma de CV vinculación de política existente y que la política de la plataforma tiene una dirección nombre:

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
      

      Reemplaza lo siguiente:

      • PROJECT_ID: Es el ID del proyecto de tu política de la plataforma. El proyecto debe estar en la misma organización.
      • POLICY_ID: El ID de la política de tu política de la plataforma.

      La siguiente condición requiere que dos plataformas de CV vinculaciones de políticas existen y que cada una tiene un nombre de política de plataforma específico.

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
      
      • PROJECT_ID1: Es el ID del proyecto de tu primera política de la plataforma. El proyecto debe estar en la misma organización.
      • POLICY_ID1: Es el ID de la primera política de tu plataforma.
      • PROJECT_ID2: Es el ID del proyecto de tu política de la segunda plataforma.
      • POLICY_ID2: el ID de la segunda política de la plataforma.

      • ACTION: la acción que se realiza si se cumple condition. Puede ser ALLOW o DENY.

      • DISPLAY_NAME: Es un nombre sencillo para la restriccióin, por ejemplo, Require a Binary Authorization continuous validation policy for all GKE clusters. El campo de nombre visible tiene una longitud máxima de 200 caracteres

      • DESCRIPTION: una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima del campo de descripción es 2000 caracteres.

    • Aplica la restricción personalizada:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

      Reemplaza CUSTOM_CONSTRAINT_PATH por la ruta de acceso de tu definición de restricción personalizada.

    • Verifica que exista la restricción personalizada:

      gcloud org-policies list-custom-constraints \
          --organization=ORGANIZATION_ID
      

      El resultado es similar al siguiente:

      CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy
      ACTION_TYPE: ALLOW
      METHOD_TYPES: CREATE,UPDATE
      RESOURCE_TYPES: container.googleapis.com/Cluster
      DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
      

Para habilitar la aplicación forzosa de la restricción personalizada que creaste, crea una política de la organización.

Usa una política de la organización para aplicar de manera forzosa la restricción personalizada

Para aplicar la nueva restricción personalizada, crea una política de la organización que haga referencia a la restricción y, luego, aplica la política de la organización.

Console

Para aplicar la restricción, haz lo siguiente:

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

    Ir a Políticas de la organización

  2. Elige el selector de proyectos, elige la organización.

  3. Busca y selecciona tu restricción en la lista.

  4. En la página Detalles de la política de esa restricción, haz clic en Administrar política.

  5. En la página Editar política, selecciona Anular la política del elemento superior.

  6. Haz clic en Agregar una regla.

  7. En Aplicación, selecciona Activada.

  8. Opcional: Haz clic en Probar cambios para simular el efecto de esta política de la organización. Para obtener más información, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.

  9. Para finalizar y aplicar la política de la organización, haz clic en Establecer política.

gcloud

  1. Crea un archivo de definición de política YAML:

    name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID
    spec:
      rules:
      - enforce: true
    

    Reemplaza lo siguiente:

    • ORGANIZATION_ID: el ID de la organización
    • CONSTRAINT_ID: el ID de la restricción
  2. Aplica la política:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Reemplaza ORG_POLICY_PATH por la ruta de acceso al archivo de definición de la política.

  3. Verifica que la política exista:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Reemplaza ORGANIZATION_ID por el ID de la organización.

    Para obtener una lista de argumentos, consulta gcloud org-policies list.

    El resultado es similar al siguiente:

    CONSTRAINT: custom.RequireBinAuthzCVPolicy
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CN622LIGEIDXnpMB-
    

La política puede tardar hasta 15 minutos en aplicarse.

Para aplicar varias restricciones en la plataforma basada en la verificación de CV de seguridad, haz lo siguiente:

  • Crea una restricción personalizada por CV. basada en verificaciones.
  • Actualiza la política de la organización con cada restricción personalizada como se describe en de esta sección.

Borra la restricción personalizada

Puedes borrar una restricción personalizada con la consola de Google Cloud o Google Cloud CLI.

Console

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

    Ir a Políticas de la organización

  2. Selecciona el selector de proyectos en la parte superior de la página.

  3. En el selector de organización, selecciona tu organización.

  4. Busca y selecciona tu restricción en la lista.

  5. En Detalles de la restricción, haz clic en . Borrar.

  6. Para confirmar que deseas borrar la restricción, haz clic en Borrar.

gcloud

Para borrar una restricción personalizada, usa el org-policies delete-custom-constraint. Comando de la CLI de gcloud:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
  --organization=ORGANIZATION_ID

Reemplaza lo siguiente:

  • ORGANIZATION_ID: el ID de la organización, como 123456789

  • CONSTRAINT_NAME: el nombre de tu restricción personalizada

El resultado es similar al siguiente:

Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]

Después de borrar una restricción personalizada, cualquier política que se haya creado con que sigue existiendo, pero se ignoran. No puedes crear otra a una restricción personalizada con el mismo nombre que una que se borró.

¿Qué sigue?