REST Resource: projects.cryptoKeys

Ressource : CryptoKey

Un CryptoKey représente une clé logique pouvant être utilisée pour les opérations de chiffrement.

Une CryptoKey est composée de zéro, un ou plusieurs versions, qui représentent le matériel de clé réel utilisé dans les opérations de chiffrement.

Représentation 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.
}
Champs
name

string

Uniquement en sortie. Nom de ressource de cet élément CryptoKey au format projects/*/locations/*/keyRings/*/cryptoKeys/*.

primary

object (CryptoKeyVersion)

Uniquement en sortie. Copie du CryptoKeyVersion "principal" qui sera utilisé par [Encrypt][KeyManagementService.Encrypt] lorsque cet élément CryptoKey est fourni dans [EncryptRequest.name][].

La version principale de CryptoKey peut être mise à jour via [UpdateCryptoKeyPrimaryVersion][KeyManagementService.UpdateCryptoKeyPrimaryVersion].

Les clés avec purpose ENCRYPT_DECRYPT peuvent avoir une instance principale. Pour les autres clés, ce champ est omis.

purpose

enum (CryptoKeyPurpose)

Immuable. Objectif immuable de ce CryptoKey.

createTime

string (Timestamp format)

Uniquement en sortie. Date et heure de création de ce CryptoKey.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

nextRotationTime

string (Timestamp format)

À nextRotationTime, Key Management Service effectue automatiquement les opérations suivantes:

  1. Créez une nouvelle version de ce CryptoKey.
  2. Il désigne cette nouvelle version comme version principale.

Les rotations de clé effectuées manuellement via [CreateCryptoKey][KeyManagementService.CreateCryptoKey] et [UpdateCryptoKeyPrimaryVersion][KeyManagementService.UpdateCryptoKeyPrimaryVersion] n'affectent pas nextRotationTime.

Les clés avec purpose ENCRYPT_DECRYPT acceptent la rotation automatique. Pour les autres clés, ce champ doit être omis.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

versionTemplate

object (CryptoKeyVersionTemplate)

Modèle décrivant les paramètres des nouvelles instances CryptoKeyVersion. Les propriétés des nouvelles instances CryptoKeyVersion créées par [CreateCryptoKey][KeyManagementService.CreateCryptoKey] ou par rotation automatique sont contrôlées par ce modèle.

labels

map (key: string, value: string)

Libellés avec des métadonnées définies par l'utilisateur. Pour en savoir plus, consultez la page Ajouter des libellés à des clés.

importOnly

boolean

Immuable. Indique si cette clé ne peut contenir que des versions importées.

destroyScheduledDuration

string (Duration format)

Immuable. Durée pendant laquelle les versions de cette clé passent à l'état DESTROY_SCHEDULED avant de passer à DESTROYED. Si aucune valeur n'est spécifiée au moment de la création, la durée par défaut est de 24 heures.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

cryptoKeyBackend

string

Immuable. Nom de ressource de l'environnement de backend où se trouve le matériel de clé pour tous les CryptoKeyVersions associés à ce CryptoKey et où toutes les opérations cryptographiques associées sont effectuées. Ne s'applique que si CryptoKeyVersions possède un ProtectionLevel de type [EXTERNAL_VPC][CryptoKey.ProtectionLevel.EXTERNAL_VPC], avec le nom de ressource au format projects/*/locations/*/ekmConnections/*. Notez que cette liste n'est pas exhaustive et qu'elle pourrait s'appliquer à d'autres ProtectionLevels à l'avenir.

Champ d'union rotation_schedule. Contrôle la vitesse de rotation automatique. rotation_schedule ne peut être qu'un des éléments suivants :
rotationPeriod

string (Duration format)

nextRotationTime sera avancée de cette période lorsqu'une clé sera automatiquement alternée par le service. La durée doit être comprise entre 24 heures et 876 000 heures.

Si rotationPeriod est défini, nextRotationTime doit également être défini.

Les clés avec purpose ENCRYPT_DECRYPT acceptent la rotation automatique. Pour les autres clés, ce champ doit être omis.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

CryptoKeyVersion

Un CryptoKeyVersion représente une clé cryptographique individuelle et le matériel de clé associé.

Une version ENABLED peut être employée pour les opérations de chiffrement.

Pour des raisons de sécurité, le matériel brut de la clé cryptographique représenté par une CryptoKeyVersion ne peut jamais être consulté ni exporté. Il ne peut servir que pour chiffrer, déchiffrer ou signer des données lorsqu'une application ou un utilisateur autorisé appelle Cloud KMS.

Représentation 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
}
Champs
name

string

Uniquement en sortie. Nom de ressource de cet élément CryptoKeyVersion au format projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*.

state

enum (CryptoKeyVersionState)

État actuel de CryptoKeyVersion.

protectionLevel

enum (ProtectionLevel)

Uniquement en sortie. Le ProtectionLevel décrivant comment les opérations de chiffrement sont effectuées avec ce CryptoKeyVersion.

algorithm

enum (CryptoKeyVersionAlgorithm)

Uniquement en sortie. Le CryptoKeyVersionAlgorithm compatible avec ce CryptoKeyVersion.

attestation

object (KeyOperationAttestation)

Uniquement en sortie. Instruction générée et signée par le module matériel de sécurité (HSM, Hardware Security Module) au moment de la création de la clé. Elle permet de vérifier les attributs de la clé tels qu'ils sont stockés sur le HSM, indépendamment de Google. Fourni uniquement pour les versions de clé avec protectionLevel HSM.

createTime

string (Timestamp format)

Uniquement en sortie. Date et heure de création de ce CryptoKeyVersion.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

generateTime

string (Timestamp format)

Uniquement en sortie. Heure à laquelle le matériel de clé de ce CryptoKeyVersion a été généré.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

destroyTime

string (Timestamp format)

Uniquement en sortie. Heure à laquelle la destruction du matériel de clé de ce CryptoKeyVersion est programmée. Uniquement présente si state est défini sur DESTROY_SCHEDULED.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

destroyEventTime

string (Timestamp format)

Uniquement en sortie. Il s'agit de l'heure à laquelle le matériel de la clé de la version "CryptoKeyVersion" a été détruit. Uniquement présente si state est défini sur DESTROYED.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

importJob

string

Uniquement en sortie. Nom du ImportJob utilisé lors de la dernière importation de ce CryptoKeyVersion. Uniquement présente si le matériel de clé sous-jacent a été importé.

importTime

string (Timestamp format)

Uniquement en sortie. Heure à laquelle le matériel de clé de ce CryptoKeyVersion a été importé pour la dernière fois.

Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : "2014-10-02T15:01:23Z" et "2014-10-02T15:01:23.045123456Z".

importFailureReason

string

Uniquement en sortie. Origine du problème d'importation le plus récent. Uniquement présente si state est défini sur IMPORT_FAILED.

generationFailureReason

string

Uniquement en sortie. Cause de l'échec de la génération la plus récente. Uniquement présente si state est défini sur GENERATION_FAILED.

externalDestructionFailureReason

string

Uniquement en sortie. Origine du dernier échec de destruction externe. Uniquement présente si state est défini sur EXTERNAL_DESTRUCTION_FAILED.

externalProtectionLevelOptions

object (ExternalProtectionLevelOptions)

ExternalProtectionLevelOptions stocke un groupe de champs supplémentaires pour configurer un CryptoKeyVersion spécifique au niveau de protection EXTERNAL et aux niveaux de protection EXTERNAL_VPC.

reimportEligible

boolean

Uniquement en sortie. Indique si cette version de clé peut être réimportée ou non, en étant spécifiée en tant que cible dans [Import rejointRequest.crypto_key_version][].

CryptoKeyVersionState

État d'un CryptoKeyVersion, indiquant s'il peut être utilisé.

Enums
CRYPTO_KEY_VERSION_STATE_UNSPECIFIED Non spécifié.
PENDING_GENERATION Cette version est toujours en cours de génération. Elle ne peut pas encore être utilisée ni activée, ni désactivée, ni détruite. Cloud KMS marque automatiquement cette version comme étant ENABLED dès qu'elle est prête.
ENABLED Cette version peut être employée pour les opérations de chiffrement.
DISABLED Cette version ne peut pas être utilisée, mais le matériel de clé est toujours disponible et la version peut être replacée dans l'état ENABLED.
DESTROYED Cette version est détruite et le matériel de la clé n'est plus stocké. Cette version ne peut redevenir ENABLED que si cette version est reimportEligible et que le matériel de clé d'origine est réimporté avec un appel à [KeyManagementService.ImportVersion][].
DESTROY_SCHEDULED La destruction de cette version a été programmée, et elle sera bientôt détruite. Appelez [restremplissage de la version de clé de chiffrement][KeyManagementService.RestaurationCryptoKey] pour rétablir l'état DISABLED.
PENDING_IMPORT Cette version est toujours en cours d'importation. Elle ne peut pas encore être utilisée ni activée, ni désactivée, ni détruite. Cloud KMS marque automatiquement cette version comme étant ENABLED dès qu'elle est prête.
IMPORT_FAILED Cette version n'a pas été importée correctement. Elle ne peut pas être utilisée, activée, désactivée ni détruite. Le matériel de clé envoyé a été supprimé. Pour en savoir plus, consultez CryptoKeyVersion.import_failure_reason.
GENERATION_FAILED Échec de la génération de cette version. Elle ne peut pas être utilisée, activée, désactivée ni détruite. Pour en savoir plus, consultez CryptoKeyVersion.generation_failure_reason.
PENDING_EXTERNAL_DESTRUCTION Cette version a été détruite. Vous ne pouvez plus l'utiliser ni la réactiver. Cloud KMS attend que le matériel de clé correspondant qui se trouve dans un gestionnaire de clés externe soit détruit.
EXTERNAL_DESTRUCTION_FAILED Cette version a été détruite. Vous ne pouvez plus l'utiliser ni la réactiver. Cependant, Cloud KMS n'a pas pu confirmer que le matériel de clé correspondant qui se trouve dans un gestionnaire de clés externe a été détruit. Pour en savoir plus, consultez CryptoKeyVersion.external_destruction_failure_reason.

ProtectionLevel

ProtectionLevel spécifie comment sont effectuées les opérations de chiffrement. Pour en savoir plus, consultez la section Niveaux de protection.

Enums
PROTECTION_LEVEL_UNSPECIFIED Non spécifié.
SOFTWARE Les opérations de chiffrement sont effectuées dans le logiciel.
HSM Les opérations de chiffrement sont effectuées dans un module matériel de sécurité.
EXTERNAL Les opérations de chiffrement sont effectuées par un gestionnaire de clés externe.
EXTERNAL_VPC Les opérations de chiffrement sont effectuées dans un backend EKM sur VPC.

CryptoKeyVersionAlgorithm

Algorithme de CryptoKeyVersion, qui indique les paramètres à utiliser pour chaque opération cryptographique.

L'algorithme GOOGLE_SYMMETRIC_ENCRYPTION peut être utilisé avec CryptoKey.purpose ENCRYPT_DECRYPT.

Les algorithmes commençant par "RSA_SIGN_" peuvent être utilisés avec CryptoKey.purpose ASYMMETRIC_SIGN.

Les champs figurant après "RSA_SIGN_" dans le nom correspondent aux paramètres suivants : algorithme de remplissage, longueur en bits du module et algorithme de condensé.

Pour PSS, la longueur de salage utilisée est égale à la longueur de l'algorithme de condensé. Par exemple, RSA_SIGN_PSS_2048_SHA256 utilise PSS avec une longueur de salage de 256 bits (ou 32 octets).

Les algorithmes commençant par "RSA_DECRYPT_" peuvent être utilisés avec CryptoKey.purpose ASYMMETRIC_DECRYPT.

Les champs figurant après "RSA_DECRYPT_" dans le nom correspondent aux paramètres suivants : algorithme de remplissage, longueur en bits du module et algorithme de condensé.

Les algorithmes commençant par "EC_SIGN_" peuvent être utilisés avec CryptoKey.purpose ASYMMETRIC_SIGN.

Les champs figurant après "EC_SIGN_" dans le nom correspondent aux paramètres suivants : courbe elliptique, algorithme de condensé.

Les algorithmes commençant par "HMAC_" peuvent être utilisés avec CryptoKey.purpose MAC.

Le suffixe qui suit "HMAC_" correspond à l'algorithme de hachage utilisé (par exemple, SHA-256).

Pour en savoir plus, consultez Objectifs et algorithmes des clés.

Enums
CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED Non spécifié.
GOOGLE_SYMMETRIC_ENCRYPTION Crée des clés de chiffrement symétriques.
RSA_SIGN_PSS_2048_SHA256 RSASSA-PSS avec une clé de 2 048 bits et un condensé SHA256.
RSA_SIGN_PSS_3072_SHA256 RSASSA-PSS avec une clé de 3 072 bits et un condensé SHA256.
RSA_SIGN_PSS_4096_SHA256 RSASSA-PSS avec une clé de 4 096 bits et un condensé SHA256.
RSA_SIGN_PSS_4096_SHA512 RSASSA-PSS avec une clé de 4 096 bits et un condensé SHA512.
RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1-v1_5 avec une clé de 2 048 bits et un condensé SHA256.
RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1-v1_5 avec une clé de 3 072 bits et un condensé SHA256.
RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1-v1_5 avec une clé de 4 096 bits et un condensé SHA256.
RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1-v1_5 avec une clé de 4 096 bits et un condensé SHA512.
RSA_SIGN_RAW_PKCS1_2048 Signature RSASSA-PKCS1-v1_5 sans encodage, avec une clé de 2 048 bits.
RSA_SIGN_RAW_PKCS1_3072 Signature RSASSA-PKCS1-v1_5 sans encodage, avec une clé de 3 072 bits.
RSA_SIGN_RAW_PKCS1_4096 Signature RSASSA-PKCS1-v1_5 sans encodage, avec une clé de 4 096 bits.
RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP avec une clé de 2 048 bits et un condensé SHA256.
RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP avec une clé de 3 072 bits et un condensé SHA256.
RSA_DECRYPT_OAEP_4096_SHA256 RSAES-OAEP avec une clé de 4 096 bits et un condensé SHA256.
RSA_DECRYPT_OAEP_4096_SHA512 RSAES-OAEP avec une clé de 4 096 bits et un condensé SHA512.
RSA_DECRYPT_OAEP_2048_SHA1 RSAES-OAEP avec une clé de 2 048 bits et un condensé SHA1.
RSA_DECRYPT_OAEP_3072_SHA1 RSAES-OAEP avec une clé de 3 072 bits et un condensé SHA1.
RSA_DECRYPT_OAEP_4096_SHA1 RSAES-OAEP avec une clé de 4 096 bits et un condensé SHA1.
EC_SIGN_P256_SHA256 ECDSA sur la courbe NIST P-256 avec un condensé SHA256. D'autres fonctions de hachage peuvent également être utilisées: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
EC_SIGN_P384_SHA384 ECDSA sur la courbe NIST P-384 avec un condensé SHA384. D'autres fonctions de hachage peuvent également être utilisées: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
EC_SIGN_SECP256K1_SHA256 ECDSA sur la courbe non-NIST secp256k1. Cette courbe n'est acceptée que pour le niveau de protection HSM. D'autres fonctions de hachage peuvent également être utilisées: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms
HMAC_SHA256 Signature HMAC-SHA256 avec une clé de 256 bits.
HMAC_SHA1 Signature HMAC-SHA1 avec une clé de 160 bits.
HMAC_SHA384 Signature HMAC-SHA384 avec une clé de 384 bits.
HMAC_SHA512 Signature HMAC-SHA512 avec une clé de 512 bits.
HMAC_SHA224 Signature HMAC-SHA224 avec une clé de 224 bits.
EXTERNAL_SYMMETRIC_ENCRYPTION Algorithme représentant le chiffrement symétrique par un gestionnaire de clés externe.

KeyOperationAttestation

Contient un certificat généré par le HSM, concernant une opération de clé. Pour en savoir plus, consultez la section Valider des attestations.

Représentation JSON
{
  "format": enum (AttestationFormat),
  "content": string,
  "certChains": {
    object (CertificateChains)
  }
}
Champs
format

enum (AttestationFormat)

Uniquement en sortie. Format des données du certificat.

content

string (bytes format)

Uniquement en sortie. Données du certificat, fournies par le HSM lors de l'exécution de l'opération de clé.

Chaîne encodée en base64.

certChains

object (CertificateChains)

Uniquement en sortie. Chaînes de certificats nécessaires pour valider l'attestation

AttestationFormat

Formats de certificat fournis par le HSM.

Enums
ATTESTATION_FORMAT_UNSPECIFIED Non spécifié.
CAVIUM_V1_COMPRESSED

Certificat de HSM Cavium compressé avec gzip. Notez que ce format est défini par Cavium et qu'il peut être modifié à tout moment.

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

CAVIUM_V2_COMPRESSED Attestation HSM Cavium V2 compressée avec gzip. Il s'agit d'un nouveau format introduit dans la version 3.2-08 de Cavium.

CertificateChains

Chaînes de certificats nécessaires pour valider l'attestation. Les certificats des chaînes sont encodés au format PEM et sont ordonnés en fonction de https://tools.ietf.org/html/rfc5246#section-7.4.2.

Représentation JSON
{
  "caviumCerts": [
    string
  ],
  "googleCardCerts": [
    string
  ],
  "googlePartitionCerts": [
    string
  ]
}
Champs
caviumCerts[]

string

Chaîne de certificats Cavium correspondant à l'attestation.

googleCardCerts[]

string

Chaîne de certificat de carte Google correspondant à l'attestation.

googlePartitionCerts[]

string

Chaîne de certificats de partition Google correspondant à l'attestation.

ExternalProtectionLevelOptions

ExternalProtectionLevelOptions stocke un groupe de champs supplémentaires pour configurer un CryptoKeyVersion spécifique au niveau de protection EXTERNAL et aux niveaux de protection EXTERNAL_VPC.

Représentation JSON
{
  "externalKeyUri": string,
  "ekmConnectionKeyPath": string
}
Champs
externalKeyUri

string

URI d'une ressource externe représentée par ce CryptoKeyVersion.

ekmConnectionKeyPath

string

Chemin d'accès au matériel de clé externe sur l'EKM lors de l'utilisation de [EkmConnection][]. Exemple : "v0/my/key". Définissez ce champ à la place de externalKeyUri lorsque vous utilisez une [EkmConnection][].

CryptoKeyPurpose

CryptoKeyPurpose décrit les fonctionnalités cryptographiques d'un CryptoKey. Une clé donnée ne peut être employée que pour les opérations autorisées par son objectif. Pour en savoir plus, consultez la section Objectifs des clés.

Enums
CRYPTO_KEY_PURPOSE_UNSPECIFIED Non spécifié.
ENCRYPT_DECRYPT CryptoKeys à cette fin peut être utilisé avec [Encrypt][KeyManagementService.Encrypt] et [Decrypt][KeyManagementService.Decrypt].
ASYMMETRIC_SIGN CryptoKeys à cette fin peut être utilisé avec [AsymmetricSign][KeyManagementService.AsymmetricSign] et [GetPublicKey][KeyManagementService.GetPublicKey].
ASYMMETRIC_DECRYPT CryptoKeys à cette fin peut être utilisé avec [AsymmetricDecrypt][KeyManagementService.AsymmetricDecrypt] et [GetPublicKey][KeyManagementService.GetPublicKey].
MAC CryptoKeys à cette fin peut être utilisé avec [MacSign][KeyManagementService.MacSign].

CryptoKeyVersionTemplate

Une CryptoKeyVersionTemplate spécifie les propriétés à utiliser lors de la création d'une nouvelle CryptoKeyVersion, soit manuellement avec [CreateCryptoKey][KeyManagementService.CreateCryptoKey], soit automatiquement à la suite d'une rotation automatique.

Représentation JSON
{
  "protectionLevel": enum (ProtectionLevel),
  "algorithm": enum (CryptoKeyVersionAlgorithm)
}
Champs
protectionLevel

enum (ProtectionLevel)

ProtectionLevel à utiliser lorsque vous créez un CryptoKeyVersion basé sur ce modèle. Immuable. La valeur par défaut est SOFTWARE.

algorithm

enum (CryptoKeyVersionAlgorithm)

Obligatoire. Algorithm à utiliser lorsque vous créez un CryptoKeyVersion basé sur ce modèle.

Pour assurer la rétrocompatibilité, GOOGLE_SYMMETRIC_ENCRYPTION est implicite si ce champ est omis et que CryptoKey.purpose est défini sur ENCRYPT_DECRYPT.

Méthodes

list

Renvoie les clés cryptographiques gérées par Cloud KMS dans un projet Cloud donné.