Aserciones de certificación


Para obtener más información sobre cómo usar las aserciones de certificación, consulta Crea una política de certificación.

En la siguiente tabla, se detallan las aserciones disponibles para construir una política de certificación. Pueden validar las aserciones realizadas por la imagen de Confidential Space, el contenedor de carga de trabajo y la VM.

Aserciones de imágenes

Aserción Tipo Descripción

assertion.dbgstat

Interactúa con:

Cadena definida

Verifica que la imagen de Confidential Space sea la versión de depuración o de producción.

Los valores válidos son los siguientes:

  • enable: Verifica que se esté usando la imagen de depuración.
  • disabled-since-boot: Verifica que se esté usando la imagen de producción.
Ejemplos

El siguiente código verifica que se esté usando la versión de depuración de la imagen de Confidential Space:

assertion.dbgstat == "enable"

El siguiente código verifica que se esté usando la versión de producción de la imagen de Confidential Space:

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes Matriz de string

Verifica que la versión de seguridad del TEE sea una imagen de Confidential Space de producción. Las imágenes de depuración de Confidential Space no tienen ningún atributo de asistencia establecido.

Existen tres atributos de asistencia:

  • LATEST: Esta es la versión más reciente de la imagen y es compatible. La imagen LATEST también es STABLE y USABLE.
  • STABLE: Esta versión de la imagen es compatible y se supervisa para detectar vulnerabilidades. Una imagen STABLE también es USABLE.
  • USABLE: Una imagen con solo este atributo está fuera de asistencia y ya no se supervisa para detectar vulnerabilidades. Úsala bajo tu propia responsabilidad.
Ejemplo

El siguiente código verifica que se esté usando una versión estable de la imagen de Confidential Space:

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname Cadena definida

Verifica el software que se ejecuta en la entidad certificadora. El valor siempre es CONFIDENTIAL_SPACE.

Ejemplo
assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion Matriz de string

Verifica la versión de software de la imagen de Confidential Space. Te recomendamos que uses assertion.submods.confidential_space.support_attributes en su lugar para segmentar la versión más reciente de una imagen.

Ejemplo
int(assertion.swversion[0]) == 230103

Aserciones de contenedores

Aserción Tipo Descripción

assertion.submods.container.cmd_override

Interactúa con:

  • Autor de la carga de trabajo: La política de lanzamiento de allow_cmd_override .
  • Operador de carga de trabajo: Es la variable de metadatos tee-cmd .
Matriz de string

Verifica los comandos y parámetros de CMD que se usan en la imagen de la carga de trabajo.

Ejemplos

El siguiente código verifica que no se haya reemplazado el CMD de la imagen de carga de trabajo:

size(assertion.submods.container.cmd_override) == 0

El siguiente código verifica que program sea el único contenido en las anulaciones de CMD:

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

Interactúa con:

Objeto JSON

Verifica que las variables de entorno y sus valores se hayan pasado de forma explícita al contenedor.

Ejemplo

El siguiente código verifica que la variable de entorno example-env-1 esté configurada como value-1 y example-env-2 esté configurada como value-2.

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

Interactúa con:

String

Verifica si el operador de carga de trabajo reemplazó las variables de entorno en el contenedor.

Ejemplos

El siguiente código verifica que el operador de cargas de trabajo no haya anulado la variable de entorno example:

!has(assertion.submods.container.env_override.example)

El siguiente código verifica que el operador de cargas de trabajo no haya sobrescrito ninguna variable de entorno:

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest String

Verifica el resumen de la imagen del contenedor de la carga de trabajo. Especificar esta condición permite que varias partes acuerden una carga de trabajo autorizada que pueda acceder a sus datos.

Ejemplo
assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id String

Verifica el ID de la imagen del contenedor de la carga de trabajo.

Ejemplo
assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

Interactúa con:

String

Verifica la ubicación del contenedor de carga de trabajo que se ejecuta sobre la imagen de Confidential Space.

Ejemplo
assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

Interactúa con:

Objeto JSON

Verifica que la imagen tenga una firma determinada o que esté firmada por una clave pública y un algoritmo de firma. Especificar esta condición permite que varias partes acuerden una carga de trabajo autorizada que pueda acceder a sus datos.

La aserción puede incluir los siguientes elementos:

  • key_id: Es la huella digital hexadecimal de la clave pública. Para obtener la huella digital, puedes ejecutar el siguiente comando:

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    Aquí, public_key.pem es tu clave pública en formato PEM.

  • signature: Es la firma de una carga útil asociada con el contenedor firmado y que sigue el formato de firma simple.
  • signature_algorithm: Es el algoritmo que se usa para firmar la clave. Uno de los siguientes:

    • RSASSA_PSS_SHA256 (RSASSA-PSS con un resumen SHA-256)
    • RSASSA_PKCS1V15_SHA256 (RSASSA-PKCS1 v1_5 con un resumen SHA-256)
    • ECDSA_P256_SHA256 (ECDSA en la curva P-256 con un resumen SHA-256)
Ejemplo
assertion.swname == 'CONFIDENTIAL_SPACE' && ['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)) && 'serviceaccount.iam.gserviceaccount.com' in assertion.google_service_accounts"

assertion.submods.container.restart_policy

Interactúa con:

Cadena definida

Verifica la política de reinicio del iniciador de contenedores cuando se detiene la carga de trabajo.

Los valores válidos son los siguientes:

  • Never (predeterminada)
  • Always
  • OnFailure
Ejemplo
assertion.submods.container.restart_policy == "Never"

Aserciones de VM

Aserción Tipo Descripción

assertion.google_service_accounts

Interactúa con:

Matriz de string

Verifica que una cuenta de servicio especificada esté conectada a la VM que ejecuta la carga de trabajo o que se haya incluido en la lista con tee-impersonate-service-accounts en los metadatos de la VM.

Ejemplo
workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel String

Verifica la tecnología subyacente de Confidential Computing. Las plataformas compatibles son las siguientes:

  • GCP_AMD_SEV
  • INTEL_TDX
Ejemplo
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

Interactúa con:

Booleano

Verifica el estado de supervisión en la entidad certificadora.

Ejemplo
assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id String

Verifica el ID de la instancia de VM.

Ejemplo
assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name String

Verifica el nombre de la instancia de VM.

Ejemplo
assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id String

Verifica que la VM ejecute un proyecto Google Cloud con el ID del proyecto especificado.

Ejemplo
assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number String

Verifica que la VM se ejecute en un proyecto Google Cloud con el número de proyecto especificado.

Ejemplo
assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

Interactúa con:

  • Operador de carga de trabajo: Es el valor de --zone .
String

Verifica que la VM se esté ejecutando en la zona especificada.

Ejemplo
assertion.submods.gce.zone == "us-central1-a"