pulumi-gcp 7.31.0a1720850808__py3-none-any.whl → 7.32.0__py3-none-any.whl

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.
Files changed (103) hide show
  1. pulumi_gcp/__init__.py +51 -0
  2. pulumi_gcp/alloydb/cluster.py +0 -24
  3. pulumi_gcp/applicationintegration/auth_config.py +2 -2
  4. pulumi_gcp/bigquery/_inputs.py +0 -12
  5. pulumi_gcp/bigquery/dataset.py +0 -28
  6. pulumi_gcp/bigquery/dataset_access.py +0 -28
  7. pulumi_gcp/bigquery/outputs.py +0 -24
  8. pulumi_gcp/bigquery/reservation_assignment.py +48 -30
  9. pulumi_gcp/bigtable/authorized_view.py +104 -0
  10. pulumi_gcp/certificateauthority/certificate_template.py +2 -2
  11. pulumi_gcp/certificatemanager/_inputs.py +33 -0
  12. pulumi_gcp/certificatemanager/outputs.py +36 -0
  13. pulumi_gcp/certificatemanager/trust_config.py +107 -0
  14. pulumi_gcp/compute/_inputs.py +3 -6
  15. pulumi_gcp/compute/ca_external_account_key.py +2 -2
  16. pulumi_gcp/compute/get_health_check.py +11 -1
  17. pulumi_gcp/compute/global_address.py +16 -4
  18. pulumi_gcp/compute/global_forwarding_rule.py +2 -4
  19. pulumi_gcp/compute/health_check.py +124 -0
  20. pulumi_gcp/compute/instance.py +14 -14
  21. pulumi_gcp/compute/instance_group_membership.py +2 -2
  22. pulumi_gcp/compute/outputs.py +4 -8
  23. pulumi_gcp/compute/region_network_endpoint.py +2 -2
  24. pulumi_gcp/compute/region_network_endpoint_group.py +2 -2
  25. pulumi_gcp/compute/subnetwork.py +2 -2
  26. pulumi_gcp/compute/target_instance.py +2 -2
  27. pulumi_gcp/config/__init__.pyi +4 -0
  28. pulumi_gcp/config/vars.py +8 -0
  29. pulumi_gcp/container/_inputs.py +3 -3
  30. pulumi_gcp/container/outputs.py +4 -4
  31. pulumi_gcp/containeranalysis/note.py +2 -2
  32. pulumi_gcp/dataloss/_inputs.py +3 -0
  33. pulumi_gcp/dataloss/outputs.py +2 -0
  34. pulumi_gcp/dataloss/prevention_job_trigger.py +90 -0
  35. pulumi_gcp/dataplex/_inputs.py +56 -0
  36. pulumi_gcp/dataplex/datascan.py +12 -0
  37. pulumi_gcp/dataplex/outputs.py +52 -0
  38. pulumi_gcp/filestore/backup.py +2 -2
  39. pulumi_gcp/filestore/instance.py +2 -2
  40. pulumi_gcp/filestore/snapshot.py +2 -2
  41. pulumi_gcp/gkehub/__init__.py +1 -0
  42. pulumi_gcp/gkehub/_inputs.py +20 -0
  43. pulumi_gcp/gkehub/get_membership_binding.py +222 -0
  44. pulumi_gcp/gkehub/outputs.py +31 -0
  45. pulumi_gcp/iap/client.py +7 -7
  46. pulumi_gcp/kms/__init__.py +2 -0
  47. pulumi_gcp/kms/_inputs.py +40 -0
  48. pulumi_gcp/kms/crypto_key.py +110 -7
  49. pulumi_gcp/kms/get_crypto_keys.py +143 -0
  50. pulumi_gcp/kms/get_key_rings.py +119 -0
  51. pulumi_gcp/kms/get_kms_crypto_key.py +11 -1
  52. pulumi_gcp/kms/outputs.py +382 -0
  53. pulumi_gcp/logging/_inputs.py +12 -12
  54. pulumi_gcp/logging/folder_bucket_config.py +6 -6
  55. pulumi_gcp/logging/organization_bucket_config.py +6 -6
  56. pulumi_gcp/logging/outputs.py +8 -8
  57. pulumi_gcp/logging/project_bucket_config.py +6 -6
  58. pulumi_gcp/looker/instance.py +2 -2
  59. pulumi_gcp/monitoring/custom_service.py +2 -2
  60. pulumi_gcp/monitoring/generic_service.py +2 -2
  61. pulumi_gcp/monitoring/notification_channel.py +2 -2
  62. pulumi_gcp/monitoring/slo.py +2 -2
  63. pulumi_gcp/netapp/storage_pool.py +132 -53
  64. pulumi_gcp/netapp/volume.py +60 -4
  65. pulumi_gcp/networksecurity/address_group.py +85 -1
  66. pulumi_gcp/networksecurity/firewall_endpoint.py +2 -2
  67. pulumi_gcp/networksecurity/firewall_endpoint_association.py +2 -2
  68. pulumi_gcp/networksecurity/security_profile_group.py +2 -2
  69. pulumi_gcp/orgpolicy/_inputs.py +40 -10
  70. pulumi_gcp/orgpolicy/outputs.py +28 -8
  71. pulumi_gcp/orgpolicy/policy.py +52 -35
  72. pulumi_gcp/privilegedaccessmanager/entitlement.py +4 -0
  73. pulumi_gcp/provider.py +40 -0
  74. pulumi_gcp/pubsub/_inputs.py +3 -3
  75. pulumi_gcp/pubsub/outputs.py +4 -4
  76. pulumi_gcp/pulumi-plugin.json +1 -1
  77. pulumi_gcp/securesourcemanager/__init__.py +5 -0
  78. pulumi_gcp/securesourcemanager/_inputs.py +284 -0
  79. pulumi_gcp/securesourcemanager/get_repository_iam_policy.py +177 -0
  80. pulumi_gcp/securesourcemanager/outputs.py +202 -0
  81. pulumi_gcp/securesourcemanager/repository.py +715 -0
  82. pulumi_gcp/securesourcemanager/repository_iam_binding.py +804 -0
  83. pulumi_gcp/securesourcemanager/repository_iam_member.py +804 -0
  84. pulumi_gcp/securesourcemanager/repository_iam_policy.py +643 -0
  85. pulumi_gcp/securitycenter/__init__.py +2 -0
  86. pulumi_gcp/securitycenter/_inputs.py +186 -0
  87. pulumi_gcp/securitycenter/outputs.py +118 -0
  88. pulumi_gcp/securitycenter/project_notification_config.py +518 -0
  89. pulumi_gcp/securitycenter/v2_organization_notification_config.py +576 -0
  90. pulumi_gcp/securityposture/posture_deployment.py +0 -78
  91. pulumi_gcp/servicenetworking/vpc_service_controls.py +2 -2
  92. pulumi_gcp/siteverification/__init__.py +8 -0
  93. pulumi_gcp/siteverification/get_token.py +221 -0
  94. pulumi_gcp/vertex/_inputs.py +21 -1
  95. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +222 -0
  96. pulumi_gcp/vertex/outputs.py +15 -1
  97. pulumi_gcp/workstations/_inputs.py +33 -1
  98. pulumi_gcp/workstations/outputs.py +23 -1
  99. pulumi_gcp/workstations/workstation_config.py +18 -0
  100. {pulumi_gcp-7.31.0a1720850808.dist-info → pulumi_gcp-7.32.0.dist-info}/METADATA +1 -1
  101. {pulumi_gcp-7.31.0a1720850808.dist-info → pulumi_gcp-7.32.0.dist-info}/RECORD +103 -91
  102. {pulumi_gcp-7.31.0a1720850808.dist-info → pulumi_gcp-7.32.0.dist-info}/WHEEL +0 -0
  103. {pulumi_gcp-7.31.0a1720850808.dist-info → pulumi_gcp-7.32.0.dist-info}/top_level.txt +0 -0
@@ -25,6 +25,7 @@ class CryptoKeyArgs:
25
25
  crypto_key_backend: Optional[pulumi.Input[str]] = None,
26
26
  destroy_scheduled_duration: Optional[pulumi.Input[str]] = None,
27
27
  import_only: Optional[pulumi.Input[bool]] = None,
28
+ key_access_justifications_policy: Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']] = None,
28
29
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
29
30
  name: Optional[pulumi.Input[str]] = None,
30
31
  purpose: Optional[pulumi.Input[str]] = None,
@@ -41,8 +42,17 @@ class CryptoKeyArgs:
41
42
  :param pulumi.Input[str] crypto_key_backend: The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
42
43
  The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
43
44
  :param pulumi.Input[str] destroy_scheduled_duration: The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
44
- If not specified at creation time, the default duration is 24 hours.
45
+ If not specified at creation time, the default duration is 30 days.
45
46
  :param pulumi.Input[bool] import_only: Whether this key may contain imported versions only.
47
+ :param pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs'] key_access_justifications_policy: The policy used for Key Access Justifications Policy Enforcement. If this
48
+ field is present and this key is enrolled in Key Access Justifications
49
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
50
+ sign operations, and the operation will fail if rejected by the policy. The
51
+ policy is defined by specifying zero or more allowed justification codes.
52
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
53
+ By default, this field is absent, and all justification codes are allowed.
54
+ This field is currently in beta and is subject to change.
55
+ Structure is documented below.
46
56
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels with user-defined metadata to apply to this resource.
47
57
 
48
58
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
@@ -69,6 +79,8 @@ class CryptoKeyArgs:
69
79
  pulumi.set(__self__, "destroy_scheduled_duration", destroy_scheduled_duration)
70
80
  if import_only is not None:
71
81
  pulumi.set(__self__, "import_only", import_only)
82
+ if key_access_justifications_policy is not None:
83
+ pulumi.set(__self__, "key_access_justifications_policy", key_access_justifications_policy)
72
84
  if labels is not None:
73
85
  pulumi.set(__self__, "labels", labels)
74
86
  if name is not None:
@@ -116,7 +128,7 @@ class CryptoKeyArgs:
116
128
  def destroy_scheduled_duration(self) -> Optional[pulumi.Input[str]]:
117
129
  """
118
130
  The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
119
- If not specified at creation time, the default duration is 24 hours.
131
+ If not specified at creation time, the default duration is 30 days.
120
132
  """
121
133
  return pulumi.get(self, "destroy_scheduled_duration")
122
134
 
@@ -136,6 +148,26 @@ class CryptoKeyArgs:
136
148
  def import_only(self, value: Optional[pulumi.Input[bool]]):
137
149
  pulumi.set(self, "import_only", value)
138
150
 
151
+ @property
152
+ @pulumi.getter(name="keyAccessJustificationsPolicy")
153
+ def key_access_justifications_policy(self) -> Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']]:
154
+ """
155
+ The policy used for Key Access Justifications Policy Enforcement. If this
156
+ field is present and this key is enrolled in Key Access Justifications
157
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
158
+ sign operations, and the operation will fail if rejected by the policy. The
159
+ policy is defined by specifying zero or more allowed justification codes.
160
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
161
+ By default, this field is absent, and all justification codes are allowed.
162
+ This field is currently in beta and is subject to change.
163
+ Structure is documented below.
164
+ """
165
+ return pulumi.get(self, "key_access_justifications_policy")
166
+
167
+ @key_access_justifications_policy.setter
168
+ def key_access_justifications_policy(self, value: Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']]):
169
+ pulumi.set(self, "key_access_justifications_policy", value)
170
+
139
171
  @property
140
172
  @pulumi.getter
141
173
  def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
@@ -228,6 +260,7 @@ class _CryptoKeyState:
228
260
  destroy_scheduled_duration: Optional[pulumi.Input[str]] = None,
229
261
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
230
262
  import_only: Optional[pulumi.Input[bool]] = None,
263
+ key_access_justifications_policy: Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']] = None,
231
264
  key_ring: Optional[pulumi.Input[str]] = None,
232
265
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
233
266
  name: Optional[pulumi.Input[str]] = None,
@@ -242,9 +275,18 @@ class _CryptoKeyState:
242
275
  :param pulumi.Input[str] crypto_key_backend: The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
243
276
  The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
244
277
  :param pulumi.Input[str] destroy_scheduled_duration: The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
245
- If not specified at creation time, the default duration is 24 hours.
278
+ If not specified at creation time, the default duration is 30 days.
246
279
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
247
280
  :param pulumi.Input[bool] import_only: Whether this key may contain imported versions only.
281
+ :param pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs'] key_access_justifications_policy: The policy used for Key Access Justifications Policy Enforcement. If this
282
+ field is present and this key is enrolled in Key Access Justifications
283
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
284
+ sign operations, and the operation will fail if rejected by the policy. The
285
+ policy is defined by specifying zero or more allowed justification codes.
286
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
287
+ By default, this field is absent, and all justification codes are allowed.
288
+ This field is currently in beta and is subject to change.
289
+ Structure is documented below.
248
290
  :param pulumi.Input[str] key_ring: The KeyRing that this key belongs to.
249
291
  Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
250
292
 
@@ -282,6 +324,8 @@ class _CryptoKeyState:
282
324
  pulumi.set(__self__, "effective_labels", effective_labels)
283
325
  if import_only is not None:
284
326
  pulumi.set(__self__, "import_only", import_only)
327
+ if key_access_justifications_policy is not None:
328
+ pulumi.set(__self__, "key_access_justifications_policy", key_access_justifications_policy)
285
329
  if key_ring is not None:
286
330
  pulumi.set(__self__, "key_ring", key_ring)
287
331
  if labels is not None:
@@ -319,7 +363,7 @@ class _CryptoKeyState:
319
363
  def destroy_scheduled_duration(self) -> Optional[pulumi.Input[str]]:
320
364
  """
321
365
  The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
322
- If not specified at creation time, the default duration is 24 hours.
366
+ If not specified at creation time, the default duration is 30 days.
323
367
  """
324
368
  return pulumi.get(self, "destroy_scheduled_duration")
325
369
 
@@ -351,6 +395,26 @@ class _CryptoKeyState:
351
395
  def import_only(self, value: Optional[pulumi.Input[bool]]):
352
396
  pulumi.set(self, "import_only", value)
353
397
 
398
+ @property
399
+ @pulumi.getter(name="keyAccessJustificationsPolicy")
400
+ def key_access_justifications_policy(self) -> Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']]:
401
+ """
402
+ The policy used for Key Access Justifications Policy Enforcement. If this
403
+ field is present and this key is enrolled in Key Access Justifications
404
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
405
+ sign operations, and the operation will fail if rejected by the policy. The
406
+ policy is defined by specifying zero or more allowed justification codes.
407
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
408
+ By default, this field is absent, and all justification codes are allowed.
409
+ This field is currently in beta and is subject to change.
410
+ Structure is documented below.
411
+ """
412
+ return pulumi.get(self, "key_access_justifications_policy")
413
+
414
+ @key_access_justifications_policy.setter
415
+ def key_access_justifications_policy(self, value: Optional[pulumi.Input['CryptoKeyKeyAccessJustificationsPolicyArgs']]):
416
+ pulumi.set(self, "key_access_justifications_policy", value)
417
+
354
418
  @property
355
419
  @pulumi.getter(name="keyRing")
356
420
  def key_ring(self) -> Optional[pulumi.Input[str]]:
@@ -487,6 +551,7 @@ class CryptoKey(pulumi.CustomResource):
487
551
  crypto_key_backend: Optional[pulumi.Input[str]] = None,
488
552
  destroy_scheduled_duration: Optional[pulumi.Input[str]] = None,
489
553
  import_only: Optional[pulumi.Input[bool]] = None,
554
+ key_access_justifications_policy: Optional[pulumi.Input[Union['CryptoKeyKeyAccessJustificationsPolicyArgs', 'CryptoKeyKeyAccessJustificationsPolicyArgsDict']]] = None,
490
555
  key_ring: Optional[pulumi.Input[str]] = None,
491
556
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
492
557
  name: Optional[pulumi.Input[str]] = None,
@@ -568,8 +633,17 @@ class CryptoKey(pulumi.CustomResource):
568
633
  :param pulumi.Input[str] crypto_key_backend: The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
569
634
  The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
570
635
  :param pulumi.Input[str] destroy_scheduled_duration: The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
571
- If not specified at creation time, the default duration is 24 hours.
636
+ If not specified at creation time, the default duration is 30 days.
572
637
  :param pulumi.Input[bool] import_only: Whether this key may contain imported versions only.
638
+ :param pulumi.Input[Union['CryptoKeyKeyAccessJustificationsPolicyArgs', 'CryptoKeyKeyAccessJustificationsPolicyArgsDict']] key_access_justifications_policy: The policy used for Key Access Justifications Policy Enforcement. If this
639
+ field is present and this key is enrolled in Key Access Justifications
640
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
641
+ sign operations, and the operation will fail if rejected by the policy. The
642
+ policy is defined by specifying zero or more allowed justification codes.
643
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
644
+ By default, this field is absent, and all justification codes are allowed.
645
+ This field is currently in beta and is subject to change.
646
+ Structure is documented below.
573
647
  :param pulumi.Input[str] key_ring: The KeyRing that this key belongs to.
574
648
  Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
575
649
 
@@ -686,6 +760,7 @@ class CryptoKey(pulumi.CustomResource):
686
760
  crypto_key_backend: Optional[pulumi.Input[str]] = None,
687
761
  destroy_scheduled_duration: Optional[pulumi.Input[str]] = None,
688
762
  import_only: Optional[pulumi.Input[bool]] = None,
763
+ key_access_justifications_policy: Optional[pulumi.Input[Union['CryptoKeyKeyAccessJustificationsPolicyArgs', 'CryptoKeyKeyAccessJustificationsPolicyArgsDict']]] = None,
689
764
  key_ring: Optional[pulumi.Input[str]] = None,
690
765
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
691
766
  name: Optional[pulumi.Input[str]] = None,
@@ -705,6 +780,7 @@ class CryptoKey(pulumi.CustomResource):
705
780
  __props__.__dict__["crypto_key_backend"] = crypto_key_backend
706
781
  __props__.__dict__["destroy_scheduled_duration"] = destroy_scheduled_duration
707
782
  __props__.__dict__["import_only"] = import_only
783
+ __props__.__dict__["key_access_justifications_policy"] = key_access_justifications_policy
708
784
  if key_ring is None and not opts.urn:
709
785
  raise TypeError("Missing required property 'key_ring'")
710
786
  __props__.__dict__["key_ring"] = key_ring
@@ -733,6 +809,7 @@ class CryptoKey(pulumi.CustomResource):
733
809
  destroy_scheduled_duration: Optional[pulumi.Input[str]] = None,
734
810
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
735
811
  import_only: Optional[pulumi.Input[bool]] = None,
812
+ key_access_justifications_policy: Optional[pulumi.Input[Union['CryptoKeyKeyAccessJustificationsPolicyArgs', 'CryptoKeyKeyAccessJustificationsPolicyArgsDict']]] = None,
736
813
  key_ring: Optional[pulumi.Input[str]] = None,
737
814
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
738
815
  name: Optional[pulumi.Input[str]] = None,
@@ -752,9 +829,18 @@ class CryptoKey(pulumi.CustomResource):
752
829
  :param pulumi.Input[str] crypto_key_backend: The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
753
830
  The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
754
831
  :param pulumi.Input[str] destroy_scheduled_duration: The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
755
- If not specified at creation time, the default duration is 24 hours.
832
+ If not specified at creation time, the default duration is 30 days.
756
833
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
757
834
  :param pulumi.Input[bool] import_only: Whether this key may contain imported versions only.
835
+ :param pulumi.Input[Union['CryptoKeyKeyAccessJustificationsPolicyArgs', 'CryptoKeyKeyAccessJustificationsPolicyArgsDict']] key_access_justifications_policy: The policy used for Key Access Justifications Policy Enforcement. If this
836
+ field is present and this key is enrolled in Key Access Justifications
837
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
838
+ sign operations, and the operation will fail if rejected by the policy. The
839
+ policy is defined by specifying zero or more allowed justification codes.
840
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
841
+ By default, this field is absent, and all justification codes are allowed.
842
+ This field is currently in beta and is subject to change.
843
+ Structure is documented below.
758
844
  :param pulumi.Input[str] key_ring: The KeyRing that this key belongs to.
759
845
  Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
760
846
 
@@ -792,6 +878,7 @@ class CryptoKey(pulumi.CustomResource):
792
878
  __props__.__dict__["destroy_scheduled_duration"] = destroy_scheduled_duration
793
879
  __props__.__dict__["effective_labels"] = effective_labels
794
880
  __props__.__dict__["import_only"] = import_only
881
+ __props__.__dict__["key_access_justifications_policy"] = key_access_justifications_policy
795
882
  __props__.__dict__["key_ring"] = key_ring
796
883
  __props__.__dict__["labels"] = labels
797
884
  __props__.__dict__["name"] = name
@@ -817,7 +904,7 @@ class CryptoKey(pulumi.CustomResource):
817
904
  def destroy_scheduled_duration(self) -> pulumi.Output[str]:
818
905
  """
819
906
  The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
820
- If not specified at creation time, the default duration is 24 hours.
907
+ If not specified at creation time, the default duration is 30 days.
821
908
  """
822
909
  return pulumi.get(self, "destroy_scheduled_duration")
823
910
 
@@ -837,6 +924,22 @@ class CryptoKey(pulumi.CustomResource):
837
924
  """
838
925
  return pulumi.get(self, "import_only")
839
926
 
927
+ @property
928
+ @pulumi.getter(name="keyAccessJustificationsPolicy")
929
+ def key_access_justifications_policy(self) -> pulumi.Output['outputs.CryptoKeyKeyAccessJustificationsPolicy']:
930
+ """
931
+ The policy used for Key Access Justifications Policy Enforcement. If this
932
+ field is present and this key is enrolled in Key Access Justifications
933
+ Policy Enforcement, the policy will be evaluated in encrypt, decrypt, and
934
+ sign operations, and the operation will fail if rejected by the policy. The
935
+ policy is defined by specifying zero or more allowed justification codes.
936
+ https://cloud.google.com/assured-workloads/key-access-justifications/docs/justification-codes
937
+ By default, this field is absent, and all justification codes are allowed.
938
+ This field is currently in beta and is subject to change.
939
+ Structure is documented below.
940
+ """
941
+ return pulumi.get(self, "key_access_justifications_policy")
942
+
840
943
  @property
841
944
  @pulumi.getter(name="keyRing")
842
945
  def key_ring(self) -> pulumi.Output[str]:
@@ -0,0 +1,143 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+
18
+ __all__ = [
19
+ 'GetCryptoKeysResult',
20
+ 'AwaitableGetCryptoKeysResult',
21
+ 'get_crypto_keys',
22
+ 'get_crypto_keys_output',
23
+ ]
24
+
25
+ @pulumi.output_type
26
+ class GetCryptoKeysResult:
27
+ """
28
+ A collection of values returned by getCryptoKeys.
29
+ """
30
+ def __init__(__self__, filter=None, id=None, key_ring=None, keys=None):
31
+ if filter and not isinstance(filter, str):
32
+ raise TypeError("Expected argument 'filter' to be a str")
33
+ pulumi.set(__self__, "filter", filter)
34
+ if id and not isinstance(id, str):
35
+ raise TypeError("Expected argument 'id' to be a str")
36
+ pulumi.set(__self__, "id", id)
37
+ if key_ring and not isinstance(key_ring, str):
38
+ raise TypeError("Expected argument 'key_ring' to be a str")
39
+ pulumi.set(__self__, "key_ring", key_ring)
40
+ if keys and not isinstance(keys, list):
41
+ raise TypeError("Expected argument 'keys' to be a list")
42
+ pulumi.set(__self__, "keys", keys)
43
+
44
+ @property
45
+ @pulumi.getter
46
+ def filter(self) -> Optional[str]:
47
+ return pulumi.get(self, "filter")
48
+
49
+ @property
50
+ @pulumi.getter
51
+ def id(self) -> str:
52
+ """
53
+ The provider-assigned unique ID for this managed resource.
54
+ """
55
+ return pulumi.get(self, "id")
56
+
57
+ @property
58
+ @pulumi.getter(name="keyRing")
59
+ def key_ring(self) -> str:
60
+ return pulumi.get(self, "key_ring")
61
+
62
+ @property
63
+ @pulumi.getter
64
+ def keys(self) -> Sequence['outputs.GetCryptoKeysKeyResult']:
65
+ """
66
+ A list of all the retrieved keys from the provided key ring. This list is influenced by the provided filter argument.
67
+ """
68
+ return pulumi.get(self, "keys")
69
+
70
+
71
+ class AwaitableGetCryptoKeysResult(GetCryptoKeysResult):
72
+ # pylint: disable=using-constant-test
73
+ def __await__(self):
74
+ if False:
75
+ yield self
76
+ return GetCryptoKeysResult(
77
+ filter=self.filter,
78
+ id=self.id,
79
+ key_ring=self.key_ring,
80
+ keys=self.keys)
81
+
82
+
83
+ def get_crypto_keys(filter: Optional[str] = None,
84
+ key_ring: Optional[str] = None,
85
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCryptoKeysResult:
86
+ """
87
+ Provides access to all Google Cloud Platform KMS CryptoKeys in a given KeyRing. For more information see
88
+ [the official documentation](https://cloud.google.com/kms/docs/object-hierarchy#key)
89
+ and
90
+ [API](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys).
91
+
92
+ A CryptoKey is an interface to key material which can be used to encrypt and decrypt data. A CryptoKey belongs to a
93
+ Google Cloud KMS KeyRing.
94
+
95
+
96
+ :param str filter: The filter argument is used to add a filter query parameter that limits which keys are retrieved by the data source: ?filter={{filter}}. When no value is provided there is no filtering.
97
+
98
+ Example filter values if filtering on name. Note: names take the form projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}.
99
+
100
+ * `"name:my-key-"` will retrieve keys that contain "my-key-" anywhere in their name.
101
+ * `"name=projects/my-project/locations/global/keyRings/my-key-ring/cryptoKeys/my-key-1"` will only retrieve a key with that exact name.
102
+
103
+ [See the documentation about using filters](https://cloud.google.com/kms/docs/sorting-and-filtering)
104
+ :param str key_ring: The key ring that the keys belongs to. Format: 'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'.,
105
+ """
106
+ __args__ = dict()
107
+ __args__['filter'] = filter
108
+ __args__['keyRing'] = key_ring
109
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
110
+ __ret__ = pulumi.runtime.invoke('gcp:kms/getCryptoKeys:getCryptoKeys', __args__, opts=opts, typ=GetCryptoKeysResult).value
111
+
112
+ return AwaitableGetCryptoKeysResult(
113
+ filter=pulumi.get(__ret__, 'filter'),
114
+ id=pulumi.get(__ret__, 'id'),
115
+ key_ring=pulumi.get(__ret__, 'key_ring'),
116
+ keys=pulumi.get(__ret__, 'keys'))
117
+
118
+
119
+ @_utilities.lift_output_func(get_crypto_keys)
120
+ def get_crypto_keys_output(filter: Optional[pulumi.Input[Optional[str]]] = None,
121
+ key_ring: Optional[pulumi.Input[str]] = None,
122
+ opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCryptoKeysResult]:
123
+ """
124
+ Provides access to all Google Cloud Platform KMS CryptoKeys in a given KeyRing. For more information see
125
+ [the official documentation](https://cloud.google.com/kms/docs/object-hierarchy#key)
126
+ and
127
+ [API](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys).
128
+
129
+ A CryptoKey is an interface to key material which can be used to encrypt and decrypt data. A CryptoKey belongs to a
130
+ Google Cloud KMS KeyRing.
131
+
132
+
133
+ :param str filter: The filter argument is used to add a filter query parameter that limits which keys are retrieved by the data source: ?filter={{filter}}. When no value is provided there is no filtering.
134
+
135
+ Example filter values if filtering on name. Note: names take the form projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}.
136
+
137
+ * `"name:my-key-"` will retrieve keys that contain "my-key-" anywhere in their name.
138
+ * `"name=projects/my-project/locations/global/keyRings/my-key-ring/cryptoKeys/my-key-1"` will only retrieve a key with that exact name.
139
+
140
+ [See the documentation about using filters](https://cloud.google.com/kms/docs/sorting-and-filtering)
141
+ :param str key_ring: The key ring that the keys belongs to. Format: 'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'.,
142
+ """
143
+ ...
@@ -0,0 +1,119 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+
18
+ __all__ = [
19
+ 'GetKeyRingsResult',
20
+ 'AwaitableGetKeyRingsResult',
21
+ 'get_key_rings',
22
+ 'get_key_rings_output',
23
+ ]
24
+
25
+ @pulumi.output_type
26
+ class GetKeyRingsResult:
27
+ """
28
+ A collection of values returned by getKeyRings.
29
+ """
30
+ def __init__(__self__, filter=None, id=None, key_rings=None, location=None, project=None):
31
+ if filter and not isinstance(filter, str):
32
+ raise TypeError("Expected argument 'filter' to be a str")
33
+ pulumi.set(__self__, "filter", filter)
34
+ if id and not isinstance(id, str):
35
+ raise TypeError("Expected argument 'id' to be a str")
36
+ pulumi.set(__self__, "id", id)
37
+ if key_rings and not isinstance(key_rings, list):
38
+ raise TypeError("Expected argument 'key_rings' to be a list")
39
+ pulumi.set(__self__, "key_rings", key_rings)
40
+ if location and not isinstance(location, str):
41
+ raise TypeError("Expected argument 'location' to be a str")
42
+ pulumi.set(__self__, "location", location)
43
+ if project and not isinstance(project, str):
44
+ raise TypeError("Expected argument 'project' to be a str")
45
+ pulumi.set(__self__, "project", project)
46
+
47
+ @property
48
+ @pulumi.getter
49
+ def filter(self) -> Optional[str]:
50
+ return pulumi.get(self, "filter")
51
+
52
+ @property
53
+ @pulumi.getter
54
+ def id(self) -> str:
55
+ """
56
+ The provider-assigned unique ID for this managed resource.
57
+ """
58
+ return pulumi.get(self, "id")
59
+
60
+ @property
61
+ @pulumi.getter(name="keyRings")
62
+ def key_rings(self) -> Sequence['outputs.GetKeyRingsKeyRingResult']:
63
+ return pulumi.get(self, "key_rings")
64
+
65
+ @property
66
+ @pulumi.getter
67
+ def location(self) -> str:
68
+ return pulumi.get(self, "location")
69
+
70
+ @property
71
+ @pulumi.getter
72
+ def project(self) -> Optional[str]:
73
+ return pulumi.get(self, "project")
74
+
75
+
76
+ class AwaitableGetKeyRingsResult(GetKeyRingsResult):
77
+ # pylint: disable=using-constant-test
78
+ def __await__(self):
79
+ if False:
80
+ yield self
81
+ return GetKeyRingsResult(
82
+ filter=self.filter,
83
+ id=self.id,
84
+ key_rings=self.key_rings,
85
+ location=self.location,
86
+ project=self.project)
87
+
88
+
89
+ def get_key_rings(filter: Optional[str] = None,
90
+ location: Optional[str] = None,
91
+ project: Optional[str] = None,
92
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetKeyRingsResult:
93
+ """
94
+ Use this data source to access information about an existing resource.
95
+ """
96
+ __args__ = dict()
97
+ __args__['filter'] = filter
98
+ __args__['location'] = location
99
+ __args__['project'] = project
100
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
101
+ __ret__ = pulumi.runtime.invoke('gcp:kms/getKeyRings:getKeyRings', __args__, opts=opts, typ=GetKeyRingsResult).value
102
+
103
+ return AwaitableGetKeyRingsResult(
104
+ filter=pulumi.get(__ret__, 'filter'),
105
+ id=pulumi.get(__ret__, 'id'),
106
+ key_rings=pulumi.get(__ret__, 'key_rings'),
107
+ location=pulumi.get(__ret__, 'location'),
108
+ project=pulumi.get(__ret__, 'project'))
109
+
110
+
111
+ @_utilities.lift_output_func(get_key_rings)
112
+ def get_key_rings_output(filter: Optional[pulumi.Input[Optional[str]]] = None,
113
+ location: Optional[pulumi.Input[str]] = None,
114
+ project: Optional[pulumi.Input[Optional[str]]] = None,
115
+ opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKeyRingsResult]:
116
+ """
117
+ Use this data source to access information about an existing resource.
118
+ """
119
+ ...
@@ -27,7 +27,7 @@ class GetKMSCryptoKeyResult:
27
27
  """
28
28
  A collection of values returned by getKMSCryptoKey.
29
29
  """
30
- def __init__(__self__, crypto_key_backend=None, destroy_scheduled_duration=None, effective_labels=None, id=None, import_only=None, key_ring=None, labels=None, name=None, primaries=None, pulumi_labels=None, purpose=None, rotation_period=None, skip_initial_version_creation=None, version_templates=None):
30
+ def __init__(__self__, crypto_key_backend=None, destroy_scheduled_duration=None, effective_labels=None, id=None, import_only=None, key_access_justifications_policies=None, key_ring=None, labels=None, name=None, primaries=None, pulumi_labels=None, purpose=None, rotation_period=None, skip_initial_version_creation=None, version_templates=None):
31
31
  if crypto_key_backend and not isinstance(crypto_key_backend, str):
32
32
  raise TypeError("Expected argument 'crypto_key_backend' to be a str")
33
33
  pulumi.set(__self__, "crypto_key_backend", crypto_key_backend)
@@ -43,6 +43,9 @@ class GetKMSCryptoKeyResult:
43
43
  if import_only and not isinstance(import_only, bool):
44
44
  raise TypeError("Expected argument 'import_only' to be a bool")
45
45
  pulumi.set(__self__, "import_only", import_only)
46
+ if key_access_justifications_policies and not isinstance(key_access_justifications_policies, list):
47
+ raise TypeError("Expected argument 'key_access_justifications_policies' to be a list")
48
+ pulumi.set(__self__, "key_access_justifications_policies", key_access_justifications_policies)
46
49
  if key_ring and not isinstance(key_ring, str):
47
50
  raise TypeError("Expected argument 'key_ring' to be a str")
48
51
  pulumi.set(__self__, "key_ring", key_ring)
@@ -99,6 +102,11 @@ class GetKMSCryptoKeyResult:
99
102
  def import_only(self) -> bool:
100
103
  return pulumi.get(self, "import_only")
101
104
 
105
+ @property
106
+ @pulumi.getter(name="keyAccessJustificationsPolicies")
107
+ def key_access_justifications_policies(self) -> Sequence['outputs.GetKMSCryptoKeyKeyAccessJustificationsPolicyResult']:
108
+ return pulumi.get(self, "key_access_justifications_policies")
109
+
102
110
  @property
103
111
  @pulumi.getter(name="keyRing")
104
112
  def key_ring(self) -> str:
@@ -164,6 +172,7 @@ class AwaitableGetKMSCryptoKeyResult(GetKMSCryptoKeyResult):
164
172
  effective_labels=self.effective_labels,
165
173
  id=self.id,
166
174
  import_only=self.import_only,
175
+ key_access_justifications_policies=self.key_access_justifications_policies,
167
176
  key_ring=self.key_ring,
168
177
  labels=self.labels,
169
178
  name=self.name,
@@ -216,6 +225,7 @@ def get_kms_crypto_key(key_ring: Optional[str] = None,
216
225
  effective_labels=pulumi.get(__ret__, 'effective_labels'),
217
226
  id=pulumi.get(__ret__, 'id'),
218
227
  import_only=pulumi.get(__ret__, 'import_only'),
228
+ key_access_justifications_policies=pulumi.get(__ret__, 'key_access_justifications_policies'),
219
229
  key_ring=pulumi.get(__ret__, 'key_ring'),
220
230
  labels=pulumi.get(__ret__, 'labels'),
221
231
  name=pulumi.get(__ret__, 'name'),