REST Resource: projects.cryptoKeys

Recurso: CryptoKey

Un CryptoKey representa una clave lógica que se puede usar para operaciones criptográficas.

Un CryptoKey se compone de cero o más versions, que representan el material de clave real que se usa en las operaciones criptográficas.

Representación JSON
{
  "name": string,
  "primary": {
    object (CryptoKeyVersion)
  },
  "purpose": enum (CryptoKeyPurpose),
  "createTime": string,
  "nextRotationTime": string,
  "versionTemplate": {
    object (CryptoKeyVersionTemplate)
  },
  "labels": {
    string: string,
    ...
  },
  "importOnly": boolean,
  "destroyScheduledDuration": string,
  "cryptoKeyBackend": string,

  // Union field rotation_schedule can be only one of the following:
  "rotationPeriod": string
  // End of list of possible types for union field rotation_schedule.
}
Campos
name

string

Solo salida. El nombre del recurso para este CryptoKey en el formato projects/*/locations/*/keyRings/*/cryptoKeys/*.

primary

object (CryptoKeyVersion)

Solo salida. Una copia del objeto CryptoKeyVersion "principal" que usará [Encrypt][KeyManagementService.Encrypt] cuando se proporcione esta CryptoKey en [EncryptRequest.name][].

La versión principal de CryptoKey se puede actualizar con [UpdateCryptoKeyPrimaryVersion][KeyManagementService.UpdateCryptoKeyPrimaryVersion].

Las claves con purpose ENCRYPT_DECRYPT pueden tener una principal. Este campo se omite para las otras claves.

purpose

enum (CryptoKeyPurpose)

Inmutable. El propósito inmutable de este CryptoKey

createTime

string (Timestamp format)

Solo salida. La hora en la que se creó este CryptoKey.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

nextRotationTime

string (Timestamp format)

En nextRotationTime, el servicio de administración de claves realizará automáticamente lo siguiente:

  1. Crea una nueva versión de este dispositivo CryptoKey.
  2. Marcar la versión nueva como primaria

Las rotaciones de claves realizadas manualmente a través de [CreateCryptoKeyVersion][KeyManagementService.CreateCryptoKeyVersion] y [UpdateCryptoKeyPrimaryVersion][KeyManagementService.UpdateCryptoKeyPrimaryVersion] no afectan a nextRotationTime.

Las claves con purpose ENCRYPT_DECRYPT admiten la rotación automática. Este campo se debe omitir en las otras claves.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

versionTemplate

object (CryptoKeyVersionTemplate)

Una plantilla que describe la configuración de las nuevas instancias de CryptoKeyVersion. Esta plantilla controla las propiedades de las nuevas instancias de CryptoKeyVersion creadas por [CreateCryptoKeyVersion][KeyManagementService.CreateCryptoKeyVersion] o la rotación automática.

labels

map (key: string, value: string)

Etiquetas con metadatos definidos por el usuario. Consulta Etiquetar claves para obtener más información.

importOnly

boolean

Inmutable. Indica si esta clave solo puede contener versiones importadas.

destroyScheduledDuration

string (Duration format)

Inmutable. El período que las versiones de esta clave pasan en el estado DESTROY_SCHEDULED antes de hacer la transición a DESTROYED. Si no se especifica en el momento de la creación, la duración predeterminada es de 24 horas.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

cryptoKeyBackend

string

Inmutable. El nombre del recurso del entorno de backend donde reside el material de claves de todos los CryptoKeyVersions asociados con esta CryptoKey y donde se realizan todas las operaciones criptográficas relacionadas. Solo se aplica si CryptoKeyVersions tiene una ProtectionLevel de [EXTERNAL_VPC][CryptoKeyVersion.ProtectionLevel.EXTERNAL_VPC], con el nombre del recurso en el formato projects/*/locations/*/ekmConnections/*. Ten en cuenta que esta lista no es exhaustiva y puede aplicarse a ProtectionLevels adicionales en el futuro.

Campo de unión rotation_schedule. Controla la velocidad de rotación automática. rotation_schedule puede ser solo uno de los siguientes:
rotationPeriod

string (Duration format)

nextRotationTime se adelantará antes de este período cuando el servicio rote una clave automáticamente. Debe ser un mínimo de 24 horas y un máximo de 876,000 horas.

Si se configura rotationPeriod, también se debe establecer nextRotationTime.

Las claves con purpose ENCRYPT_DECRYPT admiten la rotación automática. Este campo se debe omitir en las otras claves.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

CryptoKeyVersion

Un CryptoKeyVersion representa una clave criptográfica individual y el material de claves asociado.

Se puede usar una versión ENABLED para las operaciones criptográficas.

Por motivos de seguridad, el material de clave criptográfica sin procesar representado por un CryptoKeyVersion nunca se puede ver ni exportar. Solo se puede usar para encriptar, desencriptar o firmar datos cuando un usuario o una aplicación autorizados invoquen Cloud KMS.

Representación JSON
{
  "name": string,
  "state": enum (CryptoKeyVersionState),
  "protectionLevel": enum (ProtectionLevel),
  "algorithm": enum (CryptoKeyVersionAlgorithm),
  "attestation": {
    object (KeyOperationAttestation)
  },
  "createTime": string,
  "generateTime": string,
  "destroyTime": string,
  "destroyEventTime": string,
  "importJob": string,
  "importTime": string,
  "importFailureReason": string,
  "generationFailureReason": string,
  "externalDestructionFailureReason": string,
  "externalProtectionLevelOptions": {
    object (ExternalProtectionLevelOptions)
  },
  "reimportEligible": boolean
}
Campos
name

string

Solo salida. El nombre del recurso para este CryptoKeyVersion en el formato projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*.

state

enum (CryptoKeyVersionState)

El estado actual de CryptoKeyVersion.

protectionLevel

enum (ProtectionLevel)

Solo salida. El ProtectionLevel que describe cómo se realizan las operaciones criptográficas con este CryptoKeyVersion

algorithm

enum (CryptoKeyVersionAlgorithm)

Solo salida. El CryptoKeyVersionAlgorithm que admite CryptoKeyVersion.

attestation

object (KeyOperationAttestation)

Solo salida. La declaración que generó y firmó el HSM en el momento de la creación de la clave. Usa esta instrucción para verificar los atributos de la clave según lo almacenado en el HSM, independientemente de Google. Solo se proporciona para versiones de claves con protectionLevel HSM.

createTime

string (Timestamp format)

Solo salida. La hora en la que se creó este CryptoKeyVersion.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

generateTime

string (Timestamp format)

Solo salida. La hora en la que se generó el material de clave de este CryptoKeyVersion.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

destroyTime

string (Timestamp format)

Solo salida. La hora en la que está programada la destrucción del material de clave de este CryptoKeyVersion. Solo está presente si state es DESTROY_SCHEDULED.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

destroyEventTime

string (Timestamp format)

Solo salida. La hora en que se destruyó el material de clave de esta CryptoKeyVersion. Solo está presente si state es DESTROYED.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

importJob

string

Solo salida. El nombre de ImportJob que se usó en la importación más reciente de este CryptoKeyVersion. Solo está presente si se importó el material de clave subyacente.

importTime

string (Timestamp format)

Solo salida. La hora en la que se importó el material de clave de CryptoKeyVersion por última vez.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

importFailureReason

string

Solo salida. La causa raíz del error de importación más reciente. Solo está presente si state es IMPORT_FAILED.

generationFailureReason

string

Solo salida. La causa raíz de la falla de generación más reciente. Solo está presente si state es GENERATION_FAILED.

externalDestructionFailureReason

string

Solo salida. La causa raíz de la falla de destrucción externa más reciente. Solo está presente si state es EXTERNAL_DESTRUCTION_FAILED.

externalProtectionLevelOptions

object (ExternalProtectionLevelOptions)

ExternalProtectionLevelOptions almacena un grupo de campos adicionales para configurar un CryptoKeyVersion que son específicos para los niveles de protección EXTERNAL y EXTERNAL_VPC.

reimportEligible

boolean

Solo salida. Indica si esta versión de clave es apta o no para volver a importarse, ya que se especifica como destino en [ImportCryptoKeyVersionRequest.crypto_key_version][].

CryptoKeyVersionState

Es el estado de un CryptoKeyVersion, que indica si se puede usar.

Enums
CRYPTO_KEY_VERSION_STATE_UNSPECIFIED No especificado.
PENDING_GENERATION Aún se está generando esta versión. Todavía no se puede usar, habilitar, inhabilitar ni destruir. Cloud KMS marcará automáticamente esta versión como ENABLED en cuanto esté lista.
ENABLED Esta versión se puede usar para operaciones criptográficas.
DISABLED Es posible que esta versión no se use, pero el material de clave aún está disponible, y la versión puede volver a cambiarse al estado ENABLED.
DESTROYED Esta versión se destruye y el material de la clave ya no se almacena. Es posible que esta versión solo vuelva a ser ENABLED si es reimportEligible y el material de clave original se vuelve a importar con una llamada a [KeyManagementService.ImportCryptoKeyVersion][].
DESTROY_SCHEDULED Esta versión está programada para su destrucción y pronto se destruirá. Llama a [RestoreCryptoKeyVersion][KeyManagementService.RestoreCryptoKeyVersion] para volver a ponerla en el estado DISABLED.
PENDING_IMPORT Aún se está importando esta versión. Todavía no se puede usar, habilitar, inhabilitar ni destruir. Cloud KMS marcará automáticamente esta versión como ENABLED en cuanto esté lista.
IMPORT_FAILED Esta versión no se importó correctamente. No se puede usar, habilitar, inhabilitar ni destruir. Se descartó el material de clave enviado. Puedes encontrar más detalles en CryptoKeyVersion.import_failure_reason.
GENERATION_FAILED Esta versión no se generó correctamente. No se puede usar, habilitar, inhabilitar ni destruir. Puedes encontrar más detalles en CryptoKeyVersion.generation_failure_reason.
PENDING_EXTERNAL_DESTRUCTION Esta versión se destruyó y no se puede usar ni volver a habilitar. Cloud KMS está esperando que se destruya el material de clave correspondiente que reside en un administrador de claves externo.
EXTERNAL_DESTRUCTION_FAILED Esta versión se destruyó y no se puede usar ni volver a habilitar. Sin embargo, Cloud KMS no pudo confirmar que se destruyó el material de clave correspondiente que reside en un administrador de claves externo. Puedes encontrar más detalles en CryptoKeyVersion.external_destruction_failure_reason.

ProtectionLevel

ProtectionLevel especifica cómo se realizan las operaciones criptográficas. Para obtener más información, consulta Niveles de protección.

Enums
PROTECTION_LEVEL_UNSPECIFIED No especificado.
SOFTWARE Las operaciones criptográficas se ejecutan en software.
HSM Las operaciones criptográficas se ejecutan en un módulo de seguridad de hardware.
EXTERNAL Las operaciones criptográficas las realiza un administrador de claves externo.
EXTERNAL_VPC Las operaciones criptográficas se realizan en un backend de EKM sobre VPC.

CryptoKeyVersionAlgorithm

El algoritmo de CryptoKeyVersion, que indica qué parámetros se deben usar para cada operación criptográfica.

El algoritmo GOOGLE_SYMMETRIC_ENCRYPTION se puede usar con CryptoKey.purpose ENCRYPT_DECRYPT.

Los algoritmos que comienzan con "RSA_SIGN_" se pueden usar con CryptoKey.purpose ASYMMETRIC_SIGN.

Los campos del nombre que están después de “RSA_SIGN_” corresponden a los siguientes parámetros: algoritmo de relleno, longitud de bits del módulo y algoritmo de resumen.

En PSS, la longitud utilizada para la sal es igual a la longitud del algoritmo de resumen. Por ejemplo, RSA_SIGN_PSS_2048_SHA256 usará PSS con una longitud de sal de 256 bits o 32 bytes.

Los algoritmos que comienzan con “RSA_DECRYPT_” se pueden usar con CryptoKey.purpose ASYMMETRIC_DECRYPT.

Los campos en el nombre después de “RSA_DECRYPT_” corresponden a los siguientes parámetros: algoritmo de relleno, longitud de bits del módulo y algoritmo de resumen.

Los algoritmos que comienzan con "EC_SIGN_" se pueden usar con CryptoKey.purpose ASYMMETRIC_SIGN.

Los campos del nombre que están después de “EC_SIGN_” corresponden a los siguientes parámetros: curva elíptica, algoritmo de resumen.

Los algoritmos que comienzan con "HMAC_" se pueden usar con CryptoKey.purpose MAC.

El sufijo que sigue a "HMAC_" corresponde al algoritmo de hash utilizado (por ejemplo, SHA256).

Para obtener más información, consulta Algoritmos y propósitos de clave.

Enums
CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED No especificado
GOOGLE_SYMMETRIC_ENCRYPTION Permite crear claves de encriptación simétricas
RSA_SIGN_PSS_2048_SHA256 Clave RSASSA-PSS de 2048 bits con resumen SHA256
RSA_SIGN_PSS_3072_SHA256 Clave RSASSA-PSS de 3072 bits con resumen SHA256
RSA_SIGN_PSS_4096_SHA256 Clave RSASSA-PSS de 4096 bits con resumen SHA256
RSA_SIGN_PSS_4096_SHA512 Clave RSASSA-PSS de 4096 bits con resumen SHA512
RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1-v1_5 con clave de 2048 bits y resumen SHA256
RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1-v1_5 con clave de 3072 bits y resumen SHA256
RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1-v1_5 con clave de 4096 bits y resumen SHA256
RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1-v1_5 con clave de 4096 bits y resumen SHA512
RSA_SIGN_RAW_PKCS1_2048 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 2048 bits.
RSA_SIGN_RAW_PKCS1_3072 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 3072 bits.
RSA_SIGN_RAW_PKCS1_4096 Firma RSASSA-PKCS1-v1_5 sin codificación, con una clave de 4096 bits.
RSA_DECRYPT_OAEP_2048_SHA256 Clave RSAES-OAEP de 2048 bits con resumen SHA256
RSA_DECRYPT_OAEP_3072_SHA256 Clave RSAES-OAEP de 3072 bits con resumen SHA256
RSA_DECRYPT_OAEP_4096_SHA256 Clave RSAES-OAEP de 4096 bits con resumen SHA256
RSA_DECRYPT_OAEP_4096_SHA512 Clave RSAES-OAEP de 4096 bits con resumen SHA512
RSA_DECRYPT_OAEP_2048_SHA1 Clave RSAES-OAEP de 2048 bits con un resumen SHA1
RSA_DECRYPT_OAEP_3072_SHA1 Clave RSAES-OAEP de 3072 bits con resumen SHA1
RSA_DECRYPT_OAEP_4096_SHA1 Clave RSAES-OAEP de 4096 bits con resumen SHA1
EC_SIGN_P256_SHA256 ECDSA en la curva P-256 de NIST con resumen SHA256 También se pueden usar otras funciones de hash: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
EC_SIGN_P384_SHA384 ECDSA en la curva P-384 de NIST con resumen SHA384 También se pueden usar otras funciones de hash: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
EC_SIGN_SECP256K1_SHA256 ECDSA en la curva secp256k1 no NIST. Esta curva solo es compatible con el nivel de protección HSM. También se pueden usar otras funciones de hash: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
HMAC_SHA256 Firma HMAC-SHA256 con una clave de 256 bits.
HMAC_SHA1 Firma HMAC-SHA1 con una clave de 160 bits
HMAC_SHA384 Firma HMAC-SHA384 con una clave de 384 bits
HMAC_SHA512 Firma HMAC-SHA512 con una clave de 512 bits.
HMAC_SHA224 Firma HMAC-SHA224 con una clave de 224 bits.
EXTERNAL_SYMMETRIC_ENCRYPTION Algoritmo que representa la encriptación simétrica por parte de un administrador de claves externo.

KeyOperationAttestation

Contiene una certificación generada por HSM sobre una operación de clave. Para obtener más información, consulta Verifica certificaciones.

Representación JSON
{
  "format": enum (AttestationFormat),
  "content": string,
  "certChains": {
    object (CertificateChains)
  }
}
Campos
format

enum (AttestationFormat)

Solo salida. El formato de los datos de certificación.

content

string (bytes format)

Solo salida. Los datos de certificación proporcionados por el HSM cuando se realizó la operación de la clave.

String codificada en base64.

certChains

object (CertificateChains)

Solo salida. Las cadenas de certificados necesarias para validar la certificación

AttestationFormat

Formatos de certificación proporcionados por el HSM.

Enums
ATTESTATION_FORMAT_UNSPECIFIED No especificado.
CAVIUM_V1_COMPRESSED

Certificación de HSM de Cavium comprimida con gzip. Ten en cuenta que Cavium define este formato y está sujeto a cambios en cualquier momento.

Consulta https://www.marvell.com/products/security-solutions/nitrox-hs-adapters/software-key-attestation.html.

CAVIUM_V2_COMPRESSED Certificación Cavium HSM V2 comprimida con gzip. Este es un formato nuevo que se introdujo en la versión 3.2-08 de Cavium.

CertificateChains

Cadenas de certificados necesarias para verificar la certificación Los certificados en cadenas tienen codificación PEM y se ordenan en función de https://tools.ietf.org/html/rfc5246#section-7.4.2.

Representación JSON
{
  "caviumCerts": [
    string
  ],
  "googleCardCerts": [
    string
  ],
  "googlePartitionCerts": [
    string
  ]
}
Campos
caviumCerts[]

string

Cadena de certificados de Cavium que corresponde a la certificación.

googleCardCerts[]

string

Cadena de certificados de tarjetas de Google que corresponde a la certificación.

googlePartitionCerts[]

string

Cadena de certificados de particiones de Google que corresponde a la certificación.

ExternalProtectionLevelOptions

ExternalProtectionLevelOptions almacena un grupo de campos adicionales para configurar un CryptoKeyVersion que son específicos para los niveles de protección EXTERNAL y EXTERNAL_VPC.

Representación JSON
{
  "externalKeyUri": string,
  "ekmConnectionKeyPath": string
}
Campos
externalKeyUri

string

Es el URI de un recurso externo que representa este CryptoKeyVersion.

ekmConnectionKeyPath

string

La ruta de acceso al material de clave externa en el EKM cuando se usa [EkmConnection][], p.ej., “v0/mi/clave”. Configura este campo en lugar de externalKeyUri cuando uses una [EkmConnection][].

CryptoKeyPurpose

CryptoKeyPurpose describe las capacidades criptográficas de un CryptoKey. Una clave específica solo se puede usar para las operaciones que permite su propósito. Para obtener más información, consulta Propósitos de clave.

Enums
CRYPTO_KEY_PURPOSE_UNSPECIFIED No especificado.
ENCRYPT_DECRYPT CryptoKeys con este propósito se puede usar con [Encrypt][KeyManagementService.Encrypt] y [Decrypt][KeyManagementService.Decrypt].
ASYMMETRIC_SIGN CryptoKeys con este propósito se puede usar con [AsymmetricSign][KeyManagementService.AsymmetricSign] y [GetPublicKey][KeyManagementService.GetPublicKey].
ASYMMETRIC_DECRYPT CryptoKeys con este propósito se puede usar con [AsymmetricDecrypt][KeyManagementService.AsymmetricDecrypt] y [GetPublicKey][KeyManagementService.GetPublicKey].
MAC CryptoKeys con este propósito se puede usar con [MacSign][KeyManagementService.MacSign].

CryptoKeyVersionTemplate

Un CryptoKeyVersionTemplate especifica las propiedades que se usarán cuando se cree un CryptoKeyVersion nuevo, ya sea de forma manual con [CreateCryptoKeyVersion][KeyManagementService.CreateCryptoKeyVersion] o automáticamente como resultado de la rotación automática.

Representación JSON
{
  "protectionLevel": enum (ProtectionLevel),
  "algorithm": enum (CryptoKeyVersionAlgorithm)
}
Campos
protectionLevel

enum (ProtectionLevel)

ProtectionLevel para usar cuando se cree un CryptoKeyVersion basado en esta plantilla. Inmutable. La configuración predeterminada es SOFTWARE.

algorithm

enum (CryptoKeyVersionAlgorithm)

Obligatorio. Algorithm para usar cuando se cree un CryptoKeyVersion basado en esta plantilla.

Para la retrocompatibilidad, GOOGLE_SYMMETRIC_ENCRYPTION está implícito si se omite este campo y el valor de CryptoKey.purpose es ENCRYPT_DECRYPT.

Métodos

list

Muestra las claves criptográficas administradas por Cloud KMS en un proyecto de Cloud determinado.