Skip to content

Commit e3d9b11

Browse files
Google APIscopybara-github
authored andcommitted
feat: add support for Key Reimport
PiperOrigin-RevId: 393749648
1 parent 577814e commit e3d9b11

2 files changed

Lines changed: 48 additions & 13 deletions

File tree

google/cloud/kms/v1/resources.proto

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,10 @@ message CryptoKeyVersion {
335335
DISABLED = 2;
336336

337337
// This version is destroyed, and the key material is no longer stored.
338+
// This version may only become [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED] again if this version is
339+
// [reimport_eligible][google.cloud.kms.v1.CryptoKeyVersion.reimport_eligible] and the original
340+
// key material is reimported with a call to
341+
// [KeyManagementService.ImportCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.ImportCryptoKeyVersion].
338342
DESTROYED = 3;
339343

340344
// This version is scheduled for destruction, and will be destroyed soon.
@@ -407,16 +411,16 @@ message CryptoKeyVersion {
407411
// [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED].
408412
google.protobuf.Timestamp destroy_event_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
409413

410-
// Output only. The name of the [ImportJob][google.cloud.kms.v1.ImportJob] used to import this
414+
// Output only. The name of the [ImportJob][google.cloud.kms.v1.ImportJob] used in the most recent import of this
411415
// [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. Only present if the underlying key material was
412416
// imported.
413417
string import_job = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
414418

415419
// Output only. The time at which this [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s key material
416-
// was imported.
420+
// was most recently imported.
417421
google.protobuf.Timestamp import_time = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
418422

419-
// Output only. The root cause of an import failure. Only present if
423+
// Output only. The root cause of the most recent import failure. Only present if
420424
// [state][google.cloud.kms.v1.CryptoKeyVersion.state] is
421425
// [IMPORT_FAILED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.IMPORT_FAILED].
422426
string import_failure_reason = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
@@ -425,6 +429,11 @@ message CryptoKeyVersion {
425429
// configuring a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] that are specific to the
426430
// [EXTERNAL][google.cloud.kms.v1.ProtectionLevel.EXTERNAL] protection level.
427431
ExternalProtectionLevelOptions external_protection_level_options = 17;
432+
433+
// Output only. Whether or not this key version is eligible for reimport, by being
434+
// specified as a target in
435+
// [ImportCryptoKeyVersionRequest.crypto_key_version][google.cloud.kms.v1.ImportCryptoKeyVersionRequest.crypto_key_version].
436+
bool reimport_eligible = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
428437
}
429438

430439
// The public key for a given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. Obtained via

google/cloud/kms/v1/service.proto

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,12 @@ service KeyManagementService {
161161
option (google.api.method_signature) = "parent,crypto_key_version";
162162
}
163163

164-
// Imports a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] into an existing [CryptoKey][google.cloud.kms.v1.CryptoKey] using the
165-
// wrapped key material provided in the request.
164+
// Import wrapped key material into a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion].
166165
//
167-
// The version ID will be assigned the next sequential id within the
168-
// [CryptoKey][google.cloud.kms.v1.CryptoKey].
166+
// All requests must specify a [CryptoKey][google.cloud.kms.v1.CryptoKey]. If a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] is
167+
// additionally specified in the request, key material will be reimported into
168+
// that version. Otherwise, a new version will be created, and will be
169+
// assigned the next sequential id within the [CryptoKey][google.cloud.kms.v1.CryptoKey].
169170
rpc ImportCryptoKeyVersion(ImportCryptoKeyVersionRequest) returns (CryptoKeyVersion) {
170171
option (google.api.http) = {
171172
post: "/v1/{parent=projects/*/locations/*/keyRings/*/cryptoKeys/*}/cryptoKeyVersions:import"
@@ -223,10 +224,11 @@ service KeyManagementService {
223224
// Schedule a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] for destruction.
224225
//
225226
// Upon calling this method, [CryptoKeyVersion.state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to
226-
// [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED]
227-
// and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to a time 24
228-
// hours in the future, at which point the [state][google.cloud.kms.v1.CryptoKeyVersion.state]
229-
// will be changed to
227+
// [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED],
228+
// and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to the time
229+
// [destroy_scheduled_duration][google.cloud.kms.v1.CryptoKey.destroy_scheduled_duration] in the
230+
// future. At that time, the [state][google.cloud.kms.v1.CryptoKeyVersion.state] will
231+
// automatically change to
230232
// [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED], and the key
231233
// material will be irrevocably destroyed.
232234
//
@@ -646,15 +648,39 @@ message CreateCryptoKeyVersionRequest {
646648

647649
// Request message for [KeyManagementService.ImportCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.ImportCryptoKeyVersion].
648650
message ImportCryptoKeyVersionRequest {
649-
// Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to
650-
// be imported into.
651+
// Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to be imported into.
652+
//
653+
// The create permission is only required on this key when creating a new
654+
// [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion].
651655
string parent = 1 [
652656
(google.api.field_behavior) = REQUIRED,
653657
(google.api.resource_reference) = {
654658
type: "cloudkms.googleapis.com/CryptoKey"
655659
}
656660
];
657661

662+
// Optional. The optional [name][google.cloud.kms.v1.CryptoKeyVersion.name] of an existing
663+
// [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to target for an import operation.
664+
// If this field is not present, a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] containing the
665+
// supplied key material is created.
666+
//
667+
// If this field is present, the supplied key material is imported into
668+
// the existing [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. To import into an existing
669+
// [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion], the [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] must be a child of
670+
// [ImportCryptoKeyVersionRequest.parent][google.cloud.kms.v1.ImportCryptoKeyVersionRequest.parent], have been previously created via
671+
// [ImportCryptoKeyVersion][], and be in
672+
// [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED] or
673+
// [IMPORT_FAILED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.IMPORT_FAILED]
674+
// state. The key material and algorithm must match the previous
675+
// [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] exactly if the [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] has ever contained
676+
// key material.
677+
string crypto_key_version = 6 [
678+
(google.api.field_behavior) = OPTIONAL,
679+
(google.api.resource_reference) = {
680+
type: "cloudkms.googleapis.com/CryptoKeyVersion"
681+
}
682+
];
683+
658684
// Required. The [algorithm][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionAlgorithm] of
659685
// the key being imported. This does not need to match the
660686
// [version_template][google.cloud.kms.v1.CryptoKey.version_template] of the [CryptoKey][google.cloud.kms.v1.CryptoKey] this

0 commit comments

Comments
 (0)