Utilización de la herramienta Key Usage Reporter (KUR)

El Key Usage Reporter (KUR) CLI escanea una cuenta IBM Cloud y produce un informe completo de qué recursos en la nube están cifrados por qué claves KMS. La herramienta es compatible tanto con Key Protect (kms) como con Hyper Protect Crypto Services (hs-crypto). La herramienta también es capaz de procesar archivos de registro de auditoría de seguimiento de actividad, produciendo resúmenes de CSV que ayudan a identificar la utilización de KMS.

El KUR se proporciona tal cual y sobre la base del mejor esfuerzo. La herramienta no detecta todos los usos posibles de las claves, y los resultados no deben considerarse fidedignos. Es posible que algunos servicios, configuraciones o casos extremos no estén cubiertos.

Descargar la herramienta

  1. Cree un ticket de soporte IBM para Key Protect para solicitar acceso a las herramientas de migración de HPCS a Key Protect.

  2. Descargue el binario de la herramienta proporcionado en el ticket de soporte.

  3. Compruebe que la suma de comprobación SHA-256 del binario descargado coincide con el valor proporcionado en el ticket de soporte. Compare los valores directamente; deben coincidir exactamente.

    Ejecute el comando apropiado para su sistema operativo para obtener la suma de comprobación SHA-256 y compárela con el valor que se proporciona en el ticket de soporte:

    macOS:

    shasum -a 256 <kur-binary>
    

    Ejemplo:

    shasum -a 256 kur-darwin-arm64-1.0.0
    

    Linux:

    sha256sum <kur-binary>
    

    Ejemplo:

    sha256sum kur-linux-amd64-1.0.0
    

    Windows (línea comando ):

    certutil -hashfile <kur-binary> SHA256
    

    Ejemplo:

    certutil -hashfile kur-windows-amd64-1.0.0.exe SHA256
    

    Windows ( PowerShell ):

    Get-FileHash <kur-binary> -Algorithm SHA256
    

    Ejemplo:

    Get-FileHash kur-windows-amd64-1.0.0.exe -Algorithm SHA256
    
  4. Hacer ejecutable el binario ( macOS/Linux ):

    chmod +x <kur-binary>
    

Requisitos previos

Antes de ejecutar la herramienta, asegúrese de que se cumplen los siguientes requisitos:

  • IBM Cloud CLI (ibmcloud) se instala siguiendo las instrucciones de Introducción a IBM Cloud CLI.

  • Los siguientes plugins IBM Cloud CLI están instalados y actualizados:

    • container-service
    • vpc-infrastructure
    • event-notifications

    Instale cualquier plugin que falte con:

    ibmcloud plugin install <plugin-name>
    
  • Ha iniciado sesión en la CLI de IBM Cloud y está seleccionando la cuenta que desea escanear:

    ibmcloud login
    
  • Su token IAM es válido y le quedan al menos 3 minutos de validez. En caso de duda, refrésquelo:

    ibmcloud login
    
  • La identidad que ejecuta la herramienta necesita acceso de solo lectura en toda la cuenta. Asigna el rol de acceso a la plataforma «Viewer» y el rol de acceso al servicio «Reader» en toda la cuenta a la identidad (usuario o clave API) con la que te autentificas.

    Este acceso de solo lectura, de tipo «auditor», es el mismo nivel que se utiliza para auditar una cuenta. Abarca todo lo que comprueba la herramienta, incluyendo:

    • Key Protect y las instancias y claves de Hyper Protect Crypto Services
    • Servicios en la nube que pueden cifrarse con esas claves (por ejemplo, Cloud Object Storage, infraestructura VPC, clústeres de Kubernetes, Event Notifications y App Configuration )

    KUR solo realiza operaciones de lectura y no crea, modifica ni elimina ningún recurso.

Los requisitos de acceso que se indican en esta sección se aplican al análisis de la cuenta. El subcomando « process-at » funciona exclusivamente con un archivo local de seguimiento de la actividad y no requiere acceso a IBM Cloud.

Ejecutar la herramienta

Los siguientes ejemplos muestran cómo ejecutar la herramienta Key Usage Reporter con diferentes opciones y configuraciones.

Uso básico: búsqueda de claves HPCS (por defecto)

Utilice el siguiente comando para escanear la cuenta IBM Cloud actualmente seleccionada en busca de todas las instancias hs-crypto, sus claves y cualquier recurso en la nube cifrado por esas claves.

./<kur-binary>

Busque las teclas Key Protect

Para buscar instancias de Key Protect en lugar de HPCS, utilice el indicador -service kms.

./<kur-binary> --service kms

Buscar sólo en Key Protect Instancias dedicadas

Puede filtrar la exploración para incluir sólo las instancias dedicadas de Key Protect.

./<kur-binary> --service kms --service-type dedicated

Buscar sólo instancias multi-tenant en Key Protect

Puede filtrar el escaneo para incluir sólo instancias Key Protect Standard (multi-tenant).

./<kur-binary> --service kms --service-type multi-tenant

Habilitar registro de depuración

Habilite la salida de depuración detallada para solucionar problemas o comprender el comportamiento de la herramienta.

./<kur-binary> --service kms --debug

Especifique una ruta personalizada para el archivo de salida

Por defecto, la herramienta genera un archivo de salida con un nombre autogenerado, pero puede especificar una ruta personalizada.

./<kur-binary> --service kms --output my-report.json

Banderas CLI

La siguiente tabla enumera todos los indicadores de comando disponibles para la herramienta Key Usage Reporter.

Tabla 1. Indicadores CLI para la herramienta Key Usage Reporter
Distintivo Valor predeterminado Descripción
--service hs-crypto Servicio KMS a escanear: hs-crypto o kms
--service-type (Ninguno) Filtre las instancias KMS por tipo: dedicated o multi-tenant. Sólo válido con -service kms.
--skip-private-calls false Omitir llamadas REST a puntos finales privados. Se omiten las instancias sin punto final público.
--debug false Activar el modo de depuración: mostrar mensajes de registro detallados en stderr
--output Nombre automático Ruta del archivo de salida. El valor predeterminado es encryption-key-usage-report-<service>-<account-name>.json

Las banderas pueden usar guión simple (-flag) o guión doble (--flag).

Archivos de salida

La herramienta produce dos archivos de salida:

Informe JSON
El archivo de salida principal (por ejemplo, encryption-key-usage-report-kms-kp-stage.json), que contiene el informe jerárquico completo de instancias, claves y usos de recursos de KMS.
Archivo de registro
Un archivo de registro complementario con el mismo nombre base y un sufijo -log.txt (por ejemplo, encryption-key-usage-report-kms-kp-stage-log.txt), que contiene todos los mensajes de registro de la ejecución.

Comprender el resultado

El informe JSON tiene la siguiente estructura de nivel superior:

{
  "metadata": { ... },
  "result": {
    "kms_instances": [ ... ],
    "crns": [ ... ],
    "unknowns": [ ... ]
  }
}

Metadatos

Los metadatos incluyen el contexto de ejecución, como la versión de la herramienta, el servicio KMS de destino, el punto final de la API IBM Cloud, el nombre de cuenta, el ID de cuenta y el usuario que ejecutó el análisis.

Instancias KMS

Una entrada por cada instancia KMS o HPCS que se encuentre en la cuenta. Las instancias con uso de claves detectado se enumeran en primer lugar, y a continuación las instancias sin uso detectado. Cada instancia contiene:

Metadatos de instancia
Nombre, CRN, estado, red permitida, puntos finales públicos y privados, tipo (para Key Protect: multi-tenant o dedicated)
found_by_kms_instance_listing
true si la instancia se ha encontrado listando las instancias KMS de la cuenta.
found_by_resource_scan
true si la instancia con claves detectada durante el escaneo de recursos.
instance_stats
Recuentos clave por estado:
  • active_crk_count, suspended_crk_count, deactivated_crk_count, destroyed_crk_count
  • active_standard_key_count, destroyed_standard_key_count.
keys[]
Inventario completo de claves de la API Key Protect. Cada llave incluye:
  • type: crk (Clave raíz del cliente) o standard_key.
  • state_name: pre-activation, active, suspended, deactivated, o destroyed.
  • name: nombre clave.
  • id: clave UUID.
  • has_migration_intent: si la clave tiene establecida una intención de migración.
  • migration_intent_target_crk: CRK CRN de destino (sólo presente cuando has_migration_intent es true).
  • found_by_kms_key_listing o found_by_resource_scan: cómo se descubrió la clave.
  • associations[] recursos en la nube registrados con la clave (desde la API de registros Key Protect ). Cada entrada muestra el resource_crn y si tiene prevent_key_deletion activado. Se omite cuando una clave no tiene registros.
  • service_usage mapa de nombre de servicio a recursos encriptados detectados por el escaneo de recursos de toda la cuenta. Sólo presente para las claves encontradas por el escaneo de recursos.

CRN

Los recursos que hacen referencia a identificadores de cifrado que coinciden con un patrón CRN pero no con un CRN de clave KMS o HPCS se capturan aquí para garantizar que no se descarta nada silenciosamente.

Desconocidos

Aquí se enumeran los recursos que hacen referencia a identificadores de cifrado que no han podido analizarse como CRN.

Ejemplo de entrada de instancia

El siguiente ejemplo muestra la estructura de una entrada de instancia KMS en el informe JSON.

{
  "name": "my-kp-instance",
  "type": "multi-tenant",
  "crn": "crn:v1:bluemix:public:kms:us-south:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab::",
  "state": "active",
  "allowed_network": "public-and-private",
  "public_endpoint": "https://us-south.kms.cloud.ibm.com",
  "private_endpoint": "https://private.us-south.kms.cloud.ibm.com",
  "found_by_kms_instance_listing": true,
  "found_by_resource_scan": true,
  "instance_stats": {
    "active_crk_count": 5,
    "suspended_crk_count": 0,
    "deactivated_crk_count": 1,
    "destroyed_crk_count": 2,
    "active_standard_key_count": 3,
    "destroyed_standard_key_count": 1
  },
  "keys": [
    {
      "type": "crk",
      "state_name": "active",
      "name": "my-root-key",
      "id": "abc12345-6789-0abc-def0-1234567890ab",
      "has_migration_intent": false,
      "found_by_kms_key_listing": true,
      "found_by_resource_scan": true,
      "associations": [
        {
          "resource_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket",
          "prevent_key_deletion": true
        }
      ],
      "service_usage": {
        "cloud-object-storage (Cloud Object Storage)": [
          {
            "encrypted_resource": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket"
          }
        ]
      }
    },
    {
      "type": "standard_key",
      "state_name": "active",
      "name": "my-standard-key",
      "id": "def45678-9012-3456-7890-abcdef012345",
      "has_migration_intent": false,
      "found_by_kms_key_listing": true,
      "found_by_resource_scan": false
    }
  ]
}

Procesamiento de registros de seguimiento de actividad

Además de generar el informe principal, la herramienta incluye un subcomando para procesar los registros de auditoría de seguimiento de actividades.

Uso

Utilice el subcomando process-at para procesar los archivos de registro de seguimiento de actividad.

./<kur-binary> process-at <input.tsv>

Lo que hace

Toma un archivo TSV que se exporta desde la consulta del archivo de enrutamiento de eventos de seguimiento de actividad IBM Cloud Logs, extrae los eventos JSON de la columna text y filtra los eventos relacionados con KMS y HPCS (acciones kms.* y hs-crypto.* ). A continuación, produce cuatro archivos de salida:

<base>_events.json
Todos los eventos extraídos como una matriz JSON formateada.
<base>_events.csv
CSV plano con una fila por evento, que contiene: serviceName, región, accountId, instanceId, keyId, acción, resultado, reasonType, reasonCode, initiatorId, initiatorName, authId, requestInstanceId, eventTime, correlationId, agente.
<base>_events_summary.csv
Resumen agrupado con recuentos de eventos, que se agrupan por servicio, región, cuenta, instancia, clave, acción, resultado, motivo e iniciador.
<base>_events_summary_by_action.csv
Resumen agrupado con recuentos de eventos, que se agrupan por servicio, región, cuenta, instancia, clave, acción e iniciador (sin desglose por resultado o motivo).

Donde <base> se deriva del nombre del archivo de entrada (eliminando _logs.tsv o .tsv).

Ejemplo

El siguiente ejemplo muestra cómo procesar un archivo de registro de seguimiento de actividad y los archivos de salida que se generan.

./<kur-binary> process-at hpcs-at-data-1-day_logs.tsv

El comando produce los siguientes archivos de salida:

  • hpcs-at-data-1-day_events.json
  • hpcs-at-data-1-day_events.csv
  • hpcs-at-data-1-day_events_summary.csv
  • hpcs-at-data-1-day_events_summary_by_action.csv

Esta función es útil para analizar los patrones de actividad clave de KMS, identificar qué servicios y usuarios están realizando operaciones clave e investigar eventos relacionados con la migración, como ack-migrate.

Resolución de problemas

La siguiente información le ayudará a resolver problemas comunes al ejecutar la herramienta Key Usage Reporter.

IBM Cloud CLI no instalado

IBM Cloud CLI is not installed. Please install it first.
Visit: https://cloud.ibm.com/docs/cli?topic=cli-getting-started

Instale la CLI IBM Cloud siguiendo la documentación Introducción a la CLI IBM Cloud.

Plugins CLI ausentes

Si los plugins de la CLI necesarios no están instalados, aparecerá un mensaje de error con una lista de los plugins que faltan.

missing required IBM Cloud CLI plugins: [container-service vpc-infrastructure]

Instale los plugins que faltan:

ibmcloud plugin install container-service
ibmcloud plugin install vpc-infrastructure
ibmcloud plugin install event-notifications

Plugins CLI obsoletos

Si los plugins de la CLI no están actualizados, aparecerá un mensaje de advertencia con una lista de los plugins que deben actualizarse.

the following IBM Cloud CLI plugins are outdated: [container-service]

Actualice el plugin:

ibmcloud plugin update container-service

No ha iniciado sesión

Si no ha iniciado sesión en IBM Cloud, la herramienta muestra un mensaje de error.

not logged in to IBM Cloud. Please login first

Inicie una sesión en IBM Cloud:

ibmcloud login

Token caducado o a punto de caducar

La herramienta requiere un token IAM válido con al menos 3 minutos de validez restante.

Si tu token IAM tiene menos de 3 minutos de validez restante, la herramienta lo rechaza. Actualiza tu sesión:

ibmcloud login

Instancias privadas

Algunas instancias de KMS pueden estar configuradas para permitir únicamente el acceso a la red privada. Si una instancia de KMS sólo permite el acceso a la red privada y usted no está conectado a la red IBM Cloud Private, la herramienta no puede obtener estadísticas o claves para esa instancia. Utilice --skip-private-calls para omitir estos casos en lugar de que la herramienta falle en ellos:

./<kur-binary> --service kms --skip-private-calls

más de 100 instancias KMS

La API de listado de recursos IBM Cloud tiene un límite en el número de instancias que puede devolver.

[WARNING] 100 or more KMS instances, only the first 100 instances will be processed.

La API de listado de recursos IBM Cloud devuelve un máximo de 100 instancias. Si la cuenta tiene más de 100 instancias KMS, sólo se incluyen en el informe las 100 primeras. Este comportamiento es una limitación conocida.

Tipo de servicio no válido con hs-crypto

El indicador --service-type sólo es válido cuando se exploran instancias de Key Protect.

error: --service-type can only be used with --service kms

El indicador --service-type (para filtrar por dedicated o multi-tenant) sólo se aplica a Key Protect (--service kms). No es aplicable a las instancias HPCS.