google-apis-cloudkms_v1 0.64.0 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,66 @@ module Google
22
22
  module Apis
23
23
  module CloudkmsV1
24
24
 
25
+ # Add a quorum member to the SingleTenantHsmInstance. This will increase the
26
+ # total_approver_count by 1. The SingleTenantHsmInstance must be in the ACTIVE
27
+ # state to perform this operation.
28
+ class AddQuorumMember
29
+ include Google::Apis::Core::Hashable
30
+
31
+ # Required. The public key associated with the 2FA key for the new quorum member
32
+ # to add. Public keys must be associated with RSA 2048 keys.
33
+ # Corresponds to the JSON property `twoFactorPublicKeyPem`
34
+ # @return [String]
35
+ attr_accessor :two_factor_public_key_pem
36
+
37
+ def initialize(**args)
38
+ update!(**args)
39
+ end
40
+
41
+ # Update properties of this object
42
+ def update!(**args)
43
+ @two_factor_public_key_pem = args[:two_factor_public_key_pem] if args.key?(:two_factor_public_key_pem)
44
+ end
45
+ end
46
+
47
+ # Request message for HsmManagement.ApproveSingleTenantHsmInstanceProposal.
48
+ class ApproveSingleTenantHsmInstanceProposalRequest
49
+ include Google::Apis::Core::Hashable
50
+
51
+ # The reply to QuorumParameters for approving the proposal.
52
+ # Corresponds to the JSON property `quorumReply`
53
+ # @return [Google::Apis::CloudkmsV1::QuorumReply]
54
+ attr_accessor :quorum_reply
55
+
56
+ # The reply to RequiredActionQuorumParameters for approving the proposal.
57
+ # Corresponds to the JSON property `requiredActionQuorumReply`
58
+ # @return [Google::Apis::CloudkmsV1::RequiredActionQuorumReply]
59
+ attr_accessor :required_action_quorum_reply
60
+
61
+ def initialize(**args)
62
+ update!(**args)
63
+ end
64
+
65
+ # Update properties of this object
66
+ def update!(**args)
67
+ @quorum_reply = args[:quorum_reply] if args.key?(:quorum_reply)
68
+ @required_action_quorum_reply = args[:required_action_quorum_reply] if args.key?(:required_action_quorum_reply)
69
+ end
70
+ end
71
+
72
+ # Response message for HsmManagement.ApproveSingleTenantHsmInstanceProposal.
73
+ class ApproveSingleTenantHsmInstanceProposalResponse
74
+ include Google::Apis::Core::Hashable
75
+
76
+ def initialize(**args)
77
+ update!(**args)
78
+ end
79
+
80
+ # Update properties of this object
81
+ def update!(**args)
82
+ end
83
+ end
84
+
25
85
  # Request message for KeyManagementService.AsymmetricDecrypt.
26
86
  class AsymmetricDecryptRequest
27
87
  include Google::Apis::Core::Hashable
@@ -319,7 +379,7 @@ module Google
319
379
  end
320
380
  end
321
381
 
322
- # Cloud KMS Autokey configuration for a folder or project.
382
+ # Cloud KMS Autokey configuration for a folder.
323
383
  class AutokeyConfig
324
384
  include Google::Apis::Core::Hashable
325
385
 
@@ -344,7 +404,7 @@ module Google
344
404
  attr_accessor :key_project
345
405
 
346
406
  # Identifier. Name of the AutokeyConfig resource, e.g. `folders/`FOLDER_NUMBER`/
347
- # autokeyConfig` `projects/`PROJECT_NUMBER`/autokeyConfig`.
407
+ # autokeyConfig`
348
408
  # Corresponds to the JSON property `name`
349
409
  # @return [String]
350
410
  attr_accessor :name
@@ -577,6 +637,61 @@ module Google
577
637
  end
578
638
  end
579
639
 
640
+ # A challenge to be signed by a 2FA key.
641
+ class Challenge
642
+ include Google::Apis::Core::Hashable
643
+
644
+ # Output only. The challenge to be signed by the 2FA key indicated by the public
645
+ # key.
646
+ # Corresponds to the JSON property `challenge`
647
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
648
+ # @return [String]
649
+ attr_accessor :challenge
650
+
651
+ # Output only. The public key associated with the 2FA key that should sign the
652
+ # challenge.
653
+ # Corresponds to the JSON property `publicKeyPem`
654
+ # @return [String]
655
+ attr_accessor :public_key_pem
656
+
657
+ def initialize(**args)
658
+ update!(**args)
659
+ end
660
+
661
+ # Update properties of this object
662
+ def update!(**args)
663
+ @challenge = args[:challenge] if args.key?(:challenge)
664
+ @public_key_pem = args[:public_key_pem] if args.key?(:public_key_pem)
665
+ end
666
+ end
667
+
668
+ # A reply to a challenge signed by a 2FA key.
669
+ class ChallengeReply
670
+ include Google::Apis::Core::Hashable
671
+
672
+ # Required. The public key associated with the 2FA key.
673
+ # Corresponds to the JSON property `publicKeyPem`
674
+ # @return [String]
675
+ attr_accessor :public_key_pem
676
+
677
+ # Required. The signed challenge associated with the 2FA key. The signature must
678
+ # be RSASSA-PKCS1 v1.5 with a SHA256 digest.
679
+ # Corresponds to the JSON property `signedChallenge`
680
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
681
+ # @return [String]
682
+ attr_accessor :signed_challenge
683
+
684
+ def initialize(**args)
685
+ update!(**args)
686
+ end
687
+
688
+ # Update properties of this object
689
+ def update!(**args)
690
+ @public_key_pem = args[:public_key_pem] if args.key?(:public_key_pem)
691
+ @signed_challenge = args[:signed_challenge] if args.key?(:signed_challenge)
692
+ end
693
+ end
694
+
580
695
  # Data with integrity verification field.
581
696
  class ChecksummedData
582
697
  include Google::Apis::Core::Hashable
@@ -627,8 +742,11 @@ module Google
627
742
  # for all CryptoKeyVersions associated with this CryptoKey reside and where all
628
743
  # related cryptographic operations are performed. Only applicable if
629
744
  # CryptoKeyVersions have a ProtectionLevel of EXTERNAL_VPC, with the resource
630
- # name in the format `projects/*/locations/*/ekmConnections/*`. Note, this list
631
- # is non-exhaustive and may apply to additional ProtectionLevels in the future.
745
+ # name in the format `projects/*/locations/*/ekmConnections/*`. Only applicable
746
+ # if CryptoKeyVersions have a ProtectionLevel of HSM_SINGLE_TENANT, with the
747
+ # resource name in the format `projects/*/locations/*/singleTenantHsmInstances/*`
748
+ # . Note, this list is non-exhaustive and may apply to additional
749
+ # ProtectionLevels in the future.
632
750
  # Corresponds to the JSON property `cryptoKeyBackend`
633
751
  # @return [String]
634
752
  attr_accessor :crypto_key_backend
@@ -1098,6 +1216,22 @@ module Google
1098
1216
  end
1099
1217
  end
1100
1218
 
1219
+ # Delete the SingleTenantHsmInstance. Deleting a SingleTenantHsmInstance will
1220
+ # make all CryptoKeys attached to the SingleTenantHsmInstance unusable. The
1221
+ # SingleTenantHsmInstance must not be in the DELETING or DELETED state to
1222
+ # perform this operation.
1223
+ class DeleteSingleTenantHsmInstance
1224
+ include Google::Apis::Core::Hashable
1225
+
1226
+ def initialize(**args)
1227
+ update!(**args)
1228
+ end
1229
+
1230
+ # Update properties of this object
1231
+ def update!(**args)
1232
+ end
1233
+ end
1234
+
1101
1235
  # Request message for KeyManagementService.DestroyCryptoKeyVersion.
1102
1236
  class DestroyCryptoKeyVersionRequest
1103
1237
  include Google::Apis::Core::Hashable
@@ -1145,6 +1279,20 @@ module Google
1145
1279
  end
1146
1280
  end
1147
1281
 
1282
+ # Disable the SingleTenantHsmInstance. The SingleTenantHsmInstance must be in
1283
+ # the ACTIVE state to perform this operation.
1284
+ class DisableSingleTenantHsmInstance
1285
+ include Google::Apis::Core::Hashable
1286
+
1287
+ def initialize(**args)
1288
+ update!(**args)
1289
+ end
1290
+
1291
+ # Update properties of this object
1292
+ def update!(**args)
1293
+ end
1294
+ end
1295
+
1148
1296
  # An EkmConfig is a singleton resource that represents configuration parameters
1149
1297
  # that apply to all CryptoKeys and CryptoKeyVersions with a ProtectionLevel of
1150
1298
  # EXTERNAL_VPC in a given project and location.
@@ -1231,6 +1379,36 @@ module Google
1231
1379
  end
1232
1380
  end
1233
1381
 
1382
+ # A generic empty message that you can re-use to avoid defining duplicated empty
1383
+ # messages in your APIs. A typical example is to use it as the request or the
1384
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
1385
+ # protobuf.Empty) returns (google.protobuf.Empty); `
1386
+ class Empty
1387
+ include Google::Apis::Core::Hashable
1388
+
1389
+ def initialize(**args)
1390
+ update!(**args)
1391
+ end
1392
+
1393
+ # Update properties of this object
1394
+ def update!(**args)
1395
+ end
1396
+ end
1397
+
1398
+ # Enable the SingleTenantHsmInstance. The SingleTenantHsmInstance must be in the
1399
+ # DISABLED state to perform this operation.
1400
+ class EnableSingleTenantHsmInstance
1401
+ include Google::Apis::Core::Hashable
1402
+
1403
+ def initialize(**args)
1404
+ update!(**args)
1405
+ end
1406
+
1407
+ # Update properties of this object
1408
+ def update!(**args)
1409
+ end
1410
+ end
1411
+
1234
1412
  # Request message for KeyManagementService.Encrypt.
1235
1413
  class EncryptRequest
1236
1414
  include Google::Apis::Core::Hashable
@@ -1374,6 +1552,19 @@ module Google
1374
1552
  end
1375
1553
  end
1376
1554
 
1555
+ # Request message for HsmManagement.ExecuteSingleTenantHsmInstanceProposal.
1556
+ class ExecuteSingleTenantHsmInstanceProposalRequest
1557
+ include Google::Apis::Core::Hashable
1558
+
1559
+ def initialize(**args)
1560
+ update!(**args)
1561
+ end
1562
+
1563
+ # Update properties of this object
1564
+ def update!(**args)
1565
+ end
1566
+ end
1567
+
1377
1568
  # Represents a textual expression in the Common Expression Language (CEL) syntax.
1378
1569
  # CEL is a C-like expression language. The syntax and semantics of CEL are
1379
1570
  # documented at https://github.com/google/cel-spec. Example (Comparison): title:
@@ -1621,6 +1812,15 @@ module Google
1621
1812
  # @return [String]
1622
1813
  attr_accessor :create_time
1623
1814
 
1815
+ # Immutable. The resource name of the backend environment where the key material
1816
+ # for the wrapping key resides and where all related cryptographic operations
1817
+ # are performed. Currently, this field is only populated for keys stored in
1818
+ # HSM_SINGLE_TENANT. Note, this list is non-exhaustive and may apply to
1819
+ # additional ProtectionLevels in the future.
1820
+ # Corresponds to the JSON property `cryptoKeyBackend`
1821
+ # @return [String]
1822
+ attr_accessor :crypto_key_backend
1823
+
1624
1824
  # Output only. The time this ImportJob expired. Only present if state is EXPIRED.
1625
1825
  # Corresponds to the JSON property `expireEventTime`
1626
1826
  # @return [String]
@@ -1674,6 +1874,7 @@ module Google
1674
1874
  def update!(**args)
1675
1875
  @attestation = args[:attestation] if args.key?(:attestation)
1676
1876
  @create_time = args[:create_time] if args.key?(:create_time)
1877
+ @crypto_key_backend = args[:crypto_key_backend] if args.key?(:crypto_key_backend)
1677
1878
  @expire_event_time = args[:expire_event_time] if args.key?(:expire_event_time)
1678
1879
  @expire_time = args[:expire_time] if args.key?(:expire_time)
1679
1880
  @generate_time = args[:generate_time] if args.key?(:generate_time)
@@ -2081,6 +2282,76 @@ module Google
2081
2282
  end
2082
2283
  end
2083
2284
 
2285
+ # Response message for HsmManagement.ListSingleTenantHsmInstanceProposals.
2286
+ class ListSingleTenantHsmInstanceProposalsResponse
2287
+ include Google::Apis::Core::Hashable
2288
+
2289
+ # A token to retrieve next page of results. Pass this value in
2290
+ # ListSingleTenantHsmInstanceProposalsRequest.page_token to retrieve the next
2291
+ # page of results.
2292
+ # Corresponds to the JSON property `nextPageToken`
2293
+ # @return [String]
2294
+ attr_accessor :next_page_token
2295
+
2296
+ # The list of SingleTenantHsmInstanceProposals.
2297
+ # Corresponds to the JSON property `singleTenantHsmInstanceProposals`
2298
+ # @return [Array<Google::Apis::CloudkmsV1::SingleTenantHsmInstanceProposal>]
2299
+ attr_accessor :single_tenant_hsm_instance_proposals
2300
+
2301
+ # The total number of SingleTenantHsmInstanceProposals that matched the query.
2302
+ # This field is not populated if ListSingleTenantHsmInstanceProposalsRequest.
2303
+ # filter is applied.
2304
+ # Corresponds to the JSON property `totalSize`
2305
+ # @return [Fixnum]
2306
+ attr_accessor :total_size
2307
+
2308
+ def initialize(**args)
2309
+ update!(**args)
2310
+ end
2311
+
2312
+ # Update properties of this object
2313
+ def update!(**args)
2314
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2315
+ @single_tenant_hsm_instance_proposals = args[:single_tenant_hsm_instance_proposals] if args.key?(:single_tenant_hsm_instance_proposals)
2316
+ @total_size = args[:total_size] if args.key?(:total_size)
2317
+ end
2318
+ end
2319
+
2320
+ # Response message for HsmManagement.ListSingleTenantHsmInstances.
2321
+ class ListSingleTenantHsmInstancesResponse
2322
+ include Google::Apis::Core::Hashable
2323
+
2324
+ # A token to retrieve next page of results. Pass this value in
2325
+ # ListSingleTenantHsmInstancesRequest.page_token to retrieve the next page of
2326
+ # results.
2327
+ # Corresponds to the JSON property `nextPageToken`
2328
+ # @return [String]
2329
+ attr_accessor :next_page_token
2330
+
2331
+ # The list of SingleTenantHsmInstances.
2332
+ # Corresponds to the JSON property `singleTenantHsmInstances`
2333
+ # @return [Array<Google::Apis::CloudkmsV1::SingleTenantHsmInstance>]
2334
+ attr_accessor :single_tenant_hsm_instances
2335
+
2336
+ # The total number of SingleTenantHsmInstances that matched the query. This
2337
+ # field is not populated if ListSingleTenantHsmInstancesRequest.filter is
2338
+ # applied.
2339
+ # Corresponds to the JSON property `totalSize`
2340
+ # @return [Fixnum]
2341
+ attr_accessor :total_size
2342
+
2343
+ def initialize(**args)
2344
+ update!(**args)
2345
+ end
2346
+
2347
+ # Update properties of this object
2348
+ def update!(**args)
2349
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2350
+ @single_tenant_hsm_instances = args[:single_tenant_hsm_instances] if args.key?(:single_tenant_hsm_instances)
2351
+ @total_size = args[:total_size] if args.key?(:total_size)
2352
+ end
2353
+ end
2354
+
2084
2355
  # A resource that represents a Google Cloud location.
2085
2356
  class Location
2086
2357
  include Google::Apis::Core::Hashable
@@ -2146,6 +2417,13 @@ module Google
2146
2417
  attr_accessor :hsm_available
2147
2418
  alias_method :hsm_available?, :hsm_available
2148
2419
 
2420
+ # Indicates whether CryptoKeys with protection_level HSM_SINGLE_TENANT can be
2421
+ # created in this location.
2422
+ # Corresponds to the JSON property `hsmSingleTenantAvailable`
2423
+ # @return [Boolean]
2424
+ attr_accessor :hsm_single_tenant_available
2425
+ alias_method :hsm_single_tenant_available?, :hsm_single_tenant_available
2426
+
2149
2427
  def initialize(**args)
2150
2428
  update!(**args)
2151
2429
  end
@@ -2154,6 +2432,7 @@ module Google
2154
2432
  def update!(**args)
2155
2433
  @ekm_available = args[:ekm_available] if args.key?(:ekm_available)
2156
2434
  @hsm_available = args[:hsm_available] if args.key?(:hsm_available)
2435
+ @hsm_single_tenant_available = args[:hsm_single_tenant_available] if args.key?(:hsm_single_tenant_available)
2157
2436
  end
2158
2437
  end
2159
2438
 
@@ -2609,6 +2888,96 @@ module Google
2609
2888
  end
2610
2889
  end
2611
2890
 
2891
+ # Configuration for M of N quorum auth.
2892
+ class QuorumAuth
2893
+ include Google::Apis::Core::Hashable
2894
+
2895
+ # Output only. The required numbers of approvers. The M value used for M of N
2896
+ # quorum auth. Must be greater than or equal to 2 and less than or equal to
2897
+ # total_approver_count - 1.
2898
+ # Corresponds to the JSON property `requiredApproverCount`
2899
+ # @return [Fixnum]
2900
+ attr_accessor :required_approver_count
2901
+
2902
+ # Required. The total number of approvers. This is the N value used for M of N
2903
+ # quorum auth. Must be greater than or equal to 3 and less than or equal to 16.
2904
+ # Corresponds to the JSON property `totalApproverCount`
2905
+ # @return [Fixnum]
2906
+ attr_accessor :total_approver_count
2907
+
2908
+ # Output only. The public keys associated with the 2FA keys for M of N quorum
2909
+ # auth.
2910
+ # Corresponds to the JSON property `twoFactorPublicKeyPems`
2911
+ # @return [Array<String>]
2912
+ attr_accessor :two_factor_public_key_pems
2913
+
2914
+ def initialize(**args)
2915
+ update!(**args)
2916
+ end
2917
+
2918
+ # Update properties of this object
2919
+ def update!(**args)
2920
+ @required_approver_count = args[:required_approver_count] if args.key?(:required_approver_count)
2921
+ @total_approver_count = args[:total_approver_count] if args.key?(:total_approver_count)
2922
+ @two_factor_public_key_pems = args[:two_factor_public_key_pems] if args.key?(:two_factor_public_key_pems)
2923
+ end
2924
+ end
2925
+
2926
+ # Parameters of quorum approval for the SingleTenantHsmInstanceProposal.
2927
+ class QuorumParameters
2928
+ include Google::Apis::Core::Hashable
2929
+
2930
+ # Output only. The public keys associated with the 2FA keys that have already
2931
+ # approved the SingleTenantHsmInstanceProposal by signing the challenge.
2932
+ # Corresponds to the JSON property `approvedTwoFactorPublicKeyPems`
2933
+ # @return [Array<String>]
2934
+ attr_accessor :approved_two_factor_public_key_pems
2935
+
2936
+ # Output only. The challenges to be signed by 2FA keys for quorum auth. M of N
2937
+ # of these challenges are required to be signed to approve the operation.
2938
+ # Corresponds to the JSON property `challenges`
2939
+ # @return [Array<Google::Apis::CloudkmsV1::Challenge>]
2940
+ attr_accessor :challenges
2941
+
2942
+ # Output only. The required numbers of approvers. This is the M value used for M
2943
+ # of N quorum auth. It is less than the number of public keys.
2944
+ # Corresponds to the JSON property `requiredApproverCount`
2945
+ # @return [Fixnum]
2946
+ attr_accessor :required_approver_count
2947
+
2948
+ def initialize(**args)
2949
+ update!(**args)
2950
+ end
2951
+
2952
+ # Update properties of this object
2953
+ def update!(**args)
2954
+ @approved_two_factor_public_key_pems = args[:approved_two_factor_public_key_pems] if args.key?(:approved_two_factor_public_key_pems)
2955
+ @challenges = args[:challenges] if args.key?(:challenges)
2956
+ @required_approver_count = args[:required_approver_count] if args.key?(:required_approver_count)
2957
+ end
2958
+ end
2959
+
2960
+ # The reply to QuorumParameters for approving the proposal.
2961
+ class QuorumReply
2962
+ include Google::Apis::Core::Hashable
2963
+
2964
+ # Required. The challenge replies to approve the proposal. Challenge replies can
2965
+ # be sent across multiple requests. The proposal will be approved when
2966
+ # required_approver_count challenge replies are provided.
2967
+ # Corresponds to the JSON property `challengeReplies`
2968
+ # @return [Array<Google::Apis::CloudkmsV1::ChallengeReply>]
2969
+ attr_accessor :challenge_replies
2970
+
2971
+ def initialize(**args)
2972
+ update!(**args)
2973
+ end
2974
+
2975
+ # Update properties of this object
2976
+ def update!(**args)
2977
+ @challenge_replies = args[:challenge_replies] if args.key?(:challenge_replies)
2978
+ end
2979
+ end
2980
+
2612
2981
  # Request message for KeyManagementService.RawDecrypt.
2613
2982
  class RawDecryptRequest
2614
2983
  include Google::Apis::Core::Hashable
@@ -2997,6 +3366,145 @@ module Google
2997
3366
  end
2998
3367
  end
2999
3368
 
3369
+ # Refreshes the SingleTenantHsmInstance. This operation must be performed
3370
+ # periodically to keep the SingleTenantHsmInstance active. This operation must
3371
+ # be performed before unrefreshed_duration_until_disable has passed. The
3372
+ # SingleTenantHsmInstance must be in the ACTIVE state to perform this operation.
3373
+ class RefreshSingleTenantHsmInstance
3374
+ include Google::Apis::Core::Hashable
3375
+
3376
+ def initialize(**args)
3377
+ update!(**args)
3378
+ end
3379
+
3380
+ # Update properties of this object
3381
+ def update!(**args)
3382
+ end
3383
+ end
3384
+
3385
+ # Register 2FA keys for the SingleTenantHsmInstance. This operation requires all
3386
+ # Challenges to be signed by 2FA keys. The SingleTenantHsmInstance must be in
3387
+ # the PENDING_TWO_FACTOR_AUTH_REGISTRATION state to perform this operation.
3388
+ class RegisterTwoFactorAuthKeys
3389
+ include Google::Apis::Core::Hashable
3390
+
3391
+ # Required. The required numbers of approvers to set for the
3392
+ # SingleTenantHsmInstance. This is the M value used for M of N quorum auth. Must
3393
+ # be greater than or equal to 2 and less than or equal to total_approver_count -
3394
+ # 1.
3395
+ # Corresponds to the JSON property `requiredApproverCount`
3396
+ # @return [Fixnum]
3397
+ attr_accessor :required_approver_count
3398
+
3399
+ # Required. The public keys associated with the 2FA keys for M of N quorum auth.
3400
+ # Public keys must be associated with RSA 2048 keys.
3401
+ # Corresponds to the JSON property `twoFactorPublicKeyPems`
3402
+ # @return [Array<String>]
3403
+ attr_accessor :two_factor_public_key_pems
3404
+
3405
+ def initialize(**args)
3406
+ update!(**args)
3407
+ end
3408
+
3409
+ # Update properties of this object
3410
+ def update!(**args)
3411
+ @required_approver_count = args[:required_approver_count] if args.key?(:required_approver_count)
3412
+ @two_factor_public_key_pems = args[:two_factor_public_key_pems] if args.key?(:two_factor_public_key_pems)
3413
+ end
3414
+ end
3415
+
3416
+ # Remove a quorum member from the SingleTenantHsmInstance. This will reduce
3417
+ # total_approver_count by 1. The SingleTenantHsmInstance must be in the ACTIVE
3418
+ # state to perform this operation.
3419
+ class RemoveQuorumMember
3420
+ include Google::Apis::Core::Hashable
3421
+
3422
+ # Required. The public key associated with the 2FA key for the quorum member to
3423
+ # remove. Public keys must be associated with RSA 2048 keys.
3424
+ # Corresponds to the JSON property `twoFactorPublicKeyPem`
3425
+ # @return [String]
3426
+ attr_accessor :two_factor_public_key_pem
3427
+
3428
+ def initialize(**args)
3429
+ update!(**args)
3430
+ end
3431
+
3432
+ # Update properties of this object
3433
+ def update!(**args)
3434
+ @two_factor_public_key_pem = args[:two_factor_public_key_pem] if args.key?(:two_factor_public_key_pem)
3435
+ end
3436
+ end
3437
+
3438
+ # Parameters for an approval that has both required challenges and a quorum.
3439
+ class RequiredActionQuorumParameters
3440
+ include Google::Apis::Core::Hashable
3441
+
3442
+ # Output only. The public keys associated with the 2FA keys that have already
3443
+ # approved the SingleTenantHsmInstanceProposal by signing the challenge.
3444
+ # Corresponds to the JSON property `approvedTwoFactorPublicKeyPems`
3445
+ # @return [Array<String>]
3446
+ attr_accessor :approved_two_factor_public_key_pems
3447
+
3448
+ # Output only. The challenges to be signed by 2FA keys for quorum auth. M of N
3449
+ # of these challenges are required to be signed to approve the operation.
3450
+ # Corresponds to the JSON property `quorumChallenges`
3451
+ # @return [Array<Google::Apis::CloudkmsV1::Challenge>]
3452
+ attr_accessor :quorum_challenges
3453
+
3454
+ # Output only. The required number of quorum approvers. This is the M value used
3455
+ # for M of N quorum auth. It is less than the number of public keys.
3456
+ # Corresponds to the JSON property `requiredApproverCount`
3457
+ # @return [Fixnum]
3458
+ attr_accessor :required_approver_count
3459
+
3460
+ # Output only. A list of specific challenges that must be signed. For some
3461
+ # operations, this will contain a single challenge.
3462
+ # Corresponds to the JSON property `requiredChallenges`
3463
+ # @return [Array<Google::Apis::CloudkmsV1::Challenge>]
3464
+ attr_accessor :required_challenges
3465
+
3466
+ def initialize(**args)
3467
+ update!(**args)
3468
+ end
3469
+
3470
+ # Update properties of this object
3471
+ def update!(**args)
3472
+ @approved_two_factor_public_key_pems = args[:approved_two_factor_public_key_pems] if args.key?(:approved_two_factor_public_key_pems)
3473
+ @quorum_challenges = args[:quorum_challenges] if args.key?(:quorum_challenges)
3474
+ @required_approver_count = args[:required_approver_count] if args.key?(:required_approver_count)
3475
+ @required_challenges = args[:required_challenges] if args.key?(:required_challenges)
3476
+ end
3477
+ end
3478
+
3479
+ # The reply to RequiredActionQuorumParameters for approving the proposal.
3480
+ class RequiredActionQuorumReply
3481
+ include Google::Apis::Core::Hashable
3482
+
3483
+ # Required. Quorum members' signed challenge replies. These can be provided
3484
+ # across multiple requests. The proposal will be approved when
3485
+ # required_approver_count quorum_challenge_replies are provided and when all
3486
+ # required_challenge_replies are provided.
3487
+ # Corresponds to the JSON property `quorumChallengeReplies`
3488
+ # @return [Array<Google::Apis::CloudkmsV1::ChallengeReply>]
3489
+ attr_accessor :quorum_challenge_replies
3490
+
3491
+ # Required. All required challenges must be signed for the proposal to be
3492
+ # approved. These can be sent across multiple requests.
3493
+ # Corresponds to the JSON property `requiredChallengeReplies`
3494
+ # @return [Array<Google::Apis::CloudkmsV1::ChallengeReply>]
3495
+ attr_accessor :required_challenge_replies
3496
+
3497
+ def initialize(**args)
3498
+ update!(**args)
3499
+ end
3500
+
3501
+ # Update properties of this object
3502
+ def update!(**args)
3503
+ @quorum_challenge_replies = args[:quorum_challenge_replies] if args.key?(:quorum_challenge_replies)
3504
+ @required_challenge_replies = args[:required_challenge_replies] if args.key?(:required_challenge_replies)
3505
+ end
3506
+ end
3507
+
3000
3508
  # Request message for KeyManagementService.RestoreCryptoKeyVersion.
3001
3509
  class RestoreCryptoKeyVersionRequest
3002
3510
  include Google::Apis::Core::Hashable
@@ -3182,6 +3690,208 @@ module Google
3182
3690
  end
3183
3691
  end
3184
3692
 
3693
+ # A SingleTenantHsmInstance represents a single-tenant HSM instance. It can be
3694
+ # used for creating CryptoKeys with a ProtectionLevel of HSM_SINGLE_TENANT, as
3695
+ # well as performing cryptographic operations using keys created within the
3696
+ # SingleTenantHsmInstance.
3697
+ class SingleTenantHsmInstance
3698
+ include Google::Apis::Core::Hashable
3699
+
3700
+ # Output only. The time at which the SingleTenantHsmInstance was created.
3701
+ # Corresponds to the JSON property `createTime`
3702
+ # @return [String]
3703
+ attr_accessor :create_time
3704
+
3705
+ # Output only. The time at which the SingleTenantHsmInstance was deleted.
3706
+ # Corresponds to the JSON property `deleteTime`
3707
+ # @return [String]
3708
+ attr_accessor :delete_time
3709
+
3710
+ # Output only. The time at which the instance will be automatically disabled if
3711
+ # not refreshed. This field is updated upon creation and after each successful
3712
+ # refresh operation and enable. A RefreshSingleTenantHsmInstance operation must
3713
+ # be made via a SingleTenantHsmInstanceProposal before this time otherwise the
3714
+ # SingleTenantHsmInstance will become disabled.
3715
+ # Corresponds to the JSON property `disableTime`
3716
+ # @return [String]
3717
+ attr_accessor :disable_time
3718
+
3719
+ # Identifier. The resource name for this SingleTenantHsmInstance in the format `
3720
+ # projects/*/locations/*/singleTenantHsmInstances/*`.
3721
+ # Corresponds to the JSON property `name`
3722
+ # @return [String]
3723
+ attr_accessor :name
3724
+
3725
+ # Configuration for M of N quorum auth.
3726
+ # Corresponds to the JSON property `quorumAuth`
3727
+ # @return [Google::Apis::CloudkmsV1::QuorumAuth]
3728
+ attr_accessor :quorum_auth
3729
+
3730
+ # Output only. The state of the SingleTenantHsmInstance.
3731
+ # Corresponds to the JSON property `state`
3732
+ # @return [String]
3733
+ attr_accessor :state
3734
+
3735
+ # Output only. The system-defined duration that an instance can remain
3736
+ # unrefreshed until it is automatically disabled. This will have a value of 120
3737
+ # days.
3738
+ # Corresponds to the JSON property `unrefreshedDurationUntilDisable`
3739
+ # @return [String]
3740
+ attr_accessor :unrefreshed_duration_until_disable
3741
+
3742
+ def initialize(**args)
3743
+ update!(**args)
3744
+ end
3745
+
3746
+ # Update properties of this object
3747
+ def update!(**args)
3748
+ @create_time = args[:create_time] if args.key?(:create_time)
3749
+ @delete_time = args[:delete_time] if args.key?(:delete_time)
3750
+ @disable_time = args[:disable_time] if args.key?(:disable_time)
3751
+ @name = args[:name] if args.key?(:name)
3752
+ @quorum_auth = args[:quorum_auth] if args.key?(:quorum_auth)
3753
+ @state = args[:state] if args.key?(:state)
3754
+ @unrefreshed_duration_until_disable = args[:unrefreshed_duration_until_disable] if args.key?(:unrefreshed_duration_until_disable)
3755
+ end
3756
+ end
3757
+
3758
+ # A SingleTenantHsmInstanceProposal represents a proposal to perform an
3759
+ # operation on a SingleTenantHsmInstance.
3760
+ class SingleTenantHsmInstanceProposal
3761
+ include Google::Apis::Core::Hashable
3762
+
3763
+ # Add a quorum member to the SingleTenantHsmInstance. This will increase the
3764
+ # total_approver_count by 1. The SingleTenantHsmInstance must be in the ACTIVE
3765
+ # state to perform this operation.
3766
+ # Corresponds to the JSON property `addQuorumMember`
3767
+ # @return [Google::Apis::CloudkmsV1::AddQuorumMember]
3768
+ attr_accessor :add_quorum_member
3769
+
3770
+ # Output only. The time at which the SingleTenantHsmInstanceProposal was created.
3771
+ # Corresponds to the JSON property `createTime`
3772
+ # @return [String]
3773
+ attr_accessor :create_time
3774
+
3775
+ # Delete the SingleTenantHsmInstance. Deleting a SingleTenantHsmInstance will
3776
+ # make all CryptoKeys attached to the SingleTenantHsmInstance unusable. The
3777
+ # SingleTenantHsmInstance must not be in the DELETING or DELETED state to
3778
+ # perform this operation.
3779
+ # Corresponds to the JSON property `deleteSingleTenantHsmInstance`
3780
+ # @return [Google::Apis::CloudkmsV1::DeleteSingleTenantHsmInstance]
3781
+ attr_accessor :delete_single_tenant_hsm_instance
3782
+
3783
+ # Output only. The time at which the SingleTenantHsmInstanceProposal was deleted.
3784
+ # Corresponds to the JSON property `deleteTime`
3785
+ # @return [String]
3786
+ attr_accessor :delete_time
3787
+
3788
+ # Disable the SingleTenantHsmInstance. The SingleTenantHsmInstance must be in
3789
+ # the ACTIVE state to perform this operation.
3790
+ # Corresponds to the JSON property `disableSingleTenantHsmInstance`
3791
+ # @return [Google::Apis::CloudkmsV1::DisableSingleTenantHsmInstance]
3792
+ attr_accessor :disable_single_tenant_hsm_instance
3793
+
3794
+ # Enable the SingleTenantHsmInstance. The SingleTenantHsmInstance must be in the
3795
+ # DISABLED state to perform this operation.
3796
+ # Corresponds to the JSON property `enableSingleTenantHsmInstance`
3797
+ # @return [Google::Apis::CloudkmsV1::EnableSingleTenantHsmInstance]
3798
+ attr_accessor :enable_single_tenant_hsm_instance
3799
+
3800
+ # The time at which the SingleTenantHsmInstanceProposal will expire if not
3801
+ # approved and executed.
3802
+ # Corresponds to the JSON property `expireTime`
3803
+ # @return [String]
3804
+ attr_accessor :expire_time
3805
+
3806
+ # Output only. The root cause of the most recent failure. Only present if state
3807
+ # is FAILED.
3808
+ # Corresponds to the JSON property `failureReason`
3809
+ # @return [String]
3810
+ attr_accessor :failure_reason
3811
+
3812
+ # Identifier. The resource name for this SingleTenantHsmInstance in the format `
3813
+ # projects/*/locations/*/singleTenantHsmInstances/*/proposals/*`.
3814
+ # Corresponds to the JSON property `name`
3815
+ # @return [String]
3816
+ attr_accessor :name
3817
+
3818
+ # Output only. The time at which the soft-deleted
3819
+ # SingleTenantHsmInstanceProposal will be permanently purged. This field is only
3820
+ # populated when the state is DELETED and will be set a time after expiration of
3821
+ # the proposal, i.e. >= expire_time or (create_time + ttl).
3822
+ # Corresponds to the JSON property `purgeTime`
3823
+ # @return [String]
3824
+ attr_accessor :purge_time
3825
+
3826
+ # Parameters of quorum approval for the SingleTenantHsmInstanceProposal.
3827
+ # Corresponds to the JSON property `quorumParameters`
3828
+ # @return [Google::Apis::CloudkmsV1::QuorumParameters]
3829
+ attr_accessor :quorum_parameters
3830
+
3831
+ # Refreshes the SingleTenantHsmInstance. This operation must be performed
3832
+ # periodically to keep the SingleTenantHsmInstance active. This operation must
3833
+ # be performed before unrefreshed_duration_until_disable has passed. The
3834
+ # SingleTenantHsmInstance must be in the ACTIVE state to perform this operation.
3835
+ # Corresponds to the JSON property `refreshSingleTenantHsmInstance`
3836
+ # @return [Google::Apis::CloudkmsV1::RefreshSingleTenantHsmInstance]
3837
+ attr_accessor :refresh_single_tenant_hsm_instance
3838
+
3839
+ # Register 2FA keys for the SingleTenantHsmInstance. This operation requires all
3840
+ # Challenges to be signed by 2FA keys. The SingleTenantHsmInstance must be in
3841
+ # the PENDING_TWO_FACTOR_AUTH_REGISTRATION state to perform this operation.
3842
+ # Corresponds to the JSON property `registerTwoFactorAuthKeys`
3843
+ # @return [Google::Apis::CloudkmsV1::RegisterTwoFactorAuthKeys]
3844
+ attr_accessor :register_two_factor_auth_keys
3845
+
3846
+ # Remove a quorum member from the SingleTenantHsmInstance. This will reduce
3847
+ # total_approver_count by 1. The SingleTenantHsmInstance must be in the ACTIVE
3848
+ # state to perform this operation.
3849
+ # Corresponds to the JSON property `removeQuorumMember`
3850
+ # @return [Google::Apis::CloudkmsV1::RemoveQuorumMember]
3851
+ attr_accessor :remove_quorum_member
3852
+
3853
+ # Parameters for an approval that has both required challenges and a quorum.
3854
+ # Corresponds to the JSON property `requiredActionQuorumParameters`
3855
+ # @return [Google::Apis::CloudkmsV1::RequiredActionQuorumParameters]
3856
+ attr_accessor :required_action_quorum_parameters
3857
+
3858
+ # Output only. The state of the SingleTenantHsmInstanceProposal.
3859
+ # Corresponds to the JSON property `state`
3860
+ # @return [String]
3861
+ attr_accessor :state
3862
+
3863
+ # Input only. The TTL for the SingleTenantHsmInstanceProposal. Proposals will
3864
+ # expire after this duration.
3865
+ # Corresponds to the JSON property `ttl`
3866
+ # @return [String]
3867
+ attr_accessor :ttl
3868
+
3869
+ def initialize(**args)
3870
+ update!(**args)
3871
+ end
3872
+
3873
+ # Update properties of this object
3874
+ def update!(**args)
3875
+ @add_quorum_member = args[:add_quorum_member] if args.key?(:add_quorum_member)
3876
+ @create_time = args[:create_time] if args.key?(:create_time)
3877
+ @delete_single_tenant_hsm_instance = args[:delete_single_tenant_hsm_instance] if args.key?(:delete_single_tenant_hsm_instance)
3878
+ @delete_time = args[:delete_time] if args.key?(:delete_time)
3879
+ @disable_single_tenant_hsm_instance = args[:disable_single_tenant_hsm_instance] if args.key?(:disable_single_tenant_hsm_instance)
3880
+ @enable_single_tenant_hsm_instance = args[:enable_single_tenant_hsm_instance] if args.key?(:enable_single_tenant_hsm_instance)
3881
+ @expire_time = args[:expire_time] if args.key?(:expire_time)
3882
+ @failure_reason = args[:failure_reason] if args.key?(:failure_reason)
3883
+ @name = args[:name] if args.key?(:name)
3884
+ @purge_time = args[:purge_time] if args.key?(:purge_time)
3885
+ @quorum_parameters = args[:quorum_parameters] if args.key?(:quorum_parameters)
3886
+ @refresh_single_tenant_hsm_instance = args[:refresh_single_tenant_hsm_instance] if args.key?(:refresh_single_tenant_hsm_instance)
3887
+ @register_two_factor_auth_keys = args[:register_two_factor_auth_keys] if args.key?(:register_two_factor_auth_keys)
3888
+ @remove_quorum_member = args[:remove_quorum_member] if args.key?(:remove_quorum_member)
3889
+ @required_action_quorum_parameters = args[:required_action_quorum_parameters] if args.key?(:required_action_quorum_parameters)
3890
+ @state = args[:state] if args.key?(:state)
3891
+ @ttl = args[:ttl] if args.key?(:ttl)
3892
+ end
3893
+ end
3894
+
3185
3895
  # The `Status` type defines a logical error model that is suitable for different
3186
3896
  # programming environments, including REST APIs and RPC APIs. It is used by [
3187
3897
  # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of