pulumi-gcp 7.31.0a1721039192__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 (33) hide show
  1. pulumi_gcp/__init__.py +11 -0
  2. pulumi_gcp/alloydb/cluster.py +0 -24
  3. pulumi_gcp/bigquery/_inputs.py +0 -12
  4. pulumi_gcp/bigquery/dataset.py +0 -28
  5. pulumi_gcp/bigquery/dataset_access.py +0 -28
  6. pulumi_gcp/bigquery/outputs.py +0 -24
  7. pulumi_gcp/bigtable/authorized_view.py +104 -0
  8. pulumi_gcp/compute/global_address.py +16 -4
  9. pulumi_gcp/compute/target_instance.py +2 -2
  10. pulumi_gcp/config/__init__.pyi +2 -0
  11. pulumi_gcp/config/vars.py +4 -0
  12. pulumi_gcp/gkehub/__init__.py +1 -0
  13. pulumi_gcp/gkehub/get_membership_binding.py +222 -0
  14. pulumi_gcp/gkehub/outputs.py +19 -0
  15. pulumi_gcp/iap/client.py +7 -7
  16. pulumi_gcp/kms/_inputs.py +40 -0
  17. pulumi_gcp/kms/crypto_key.py +103 -0
  18. pulumi_gcp/kms/get_kms_crypto_key.py +11 -1
  19. pulumi_gcp/kms/outputs.py +112 -0
  20. pulumi_gcp/networksecurity/address_group.py +1 -1
  21. pulumi_gcp/privilegedaccessmanager/entitlement.py +4 -0
  22. pulumi_gcp/provider.py +20 -0
  23. pulumi_gcp/pulumi-plugin.json +1 -1
  24. pulumi_gcp/securitycenter/__init__.py +1 -0
  25. pulumi_gcp/securitycenter/_inputs.py +93 -0
  26. pulumi_gcp/securitycenter/outputs.py +59 -0
  27. pulumi_gcp/securitycenter/project_notification_config.py +518 -0
  28. pulumi_gcp/siteverification/__init__.py +8 -0
  29. pulumi_gcp/siteverification/get_token.py +221 -0
  30. {pulumi_gcp-7.31.0a1721039192.dist-info → pulumi_gcp-7.32.0.dist-info}/METADATA +1 -1
  31. {pulumi_gcp-7.31.0a1721039192.dist-info → pulumi_gcp-7.32.0.dist-info}/RECORD +33 -29
  32. {pulumi_gcp-7.31.0a1721039192.dist-info → pulumi_gcp-7.32.0.dist-info}/WHEEL +0 -0
  33. {pulumi_gcp-7.31.0a1721039192.dist-info → pulumi_gcp-7.32.0.dist-info}/top_level.txt +0 -0
@@ -452,7 +452,7 @@ class TargetInstance(pulumi.CustomResource):
452
452
  import pulumi_gcp as gcp
453
453
 
454
454
  target_vm = gcp.compute.get_network(name="default")
455
- vmimage = gcp.compute.get_image(family="debian-10",
455
+ vmimage = gcp.compute.get_image(family="debian-12",
456
456
  project="debian-cloud")
457
457
  target_vm_instance = gcp.compute.Instance("target-vm",
458
458
  name="custom-network-target-vm",
@@ -642,7 +642,7 @@ class TargetInstance(pulumi.CustomResource):
642
642
  import pulumi_gcp as gcp
643
643
 
644
644
  target_vm = gcp.compute.get_network(name="default")
645
- vmimage = gcp.compute.get_image(family="debian-10",
645
+ vmimage = gcp.compute.get_image(family="debian-12",
646
646
  project="debian-cloud")
647
647
  target_vm_instance = gcp.compute.Instance("target-vm",
648
648
  name="custom-network-target-vm",
@@ -319,6 +319,8 @@ serviceNetworkingCustomEndpoint: Optional[str]
319
319
 
320
320
  serviceUsageCustomEndpoint: Optional[str]
321
321
 
322
+ siteVerificationCustomEndpoint: Optional[str]
323
+
322
324
  skipRegionValidation: bool
323
325
 
324
326
  sourceRepoCustomEndpoint: Optional[str]
pulumi_gcp/config/vars.py CHANGED
@@ -629,6 +629,10 @@ class _ExportableConfig(types.ModuleType):
629
629
  def service_usage_custom_endpoint(self) -> Optional[str]:
630
630
  return __config__.get('serviceUsageCustomEndpoint')
631
631
 
632
+ @property
633
+ def site_verification_custom_endpoint(self) -> Optional[str]:
634
+ return __config__.get('siteVerificationCustomEndpoint')
635
+
632
636
  @property
633
637
  def skip_region_validation(self) -> bool:
634
638
  return __config__.get_bool('skipRegionValidation') or (_utilities.get_env_bool('PULUMI_GCP_SKIP_REGION_VALIDATION') or False)
@@ -12,6 +12,7 @@ from .feature_iam_policy import *
12
12
  from .feature_membership import *
13
13
  from .fleet import *
14
14
  from .get_feature_iam_policy import *
15
+ from .get_membership_binding import *
15
16
  from .get_membership_iam_policy import *
16
17
  from .get_scope_iam_policy import *
17
18
  from .membership import *
@@ -0,0 +1,222 @@
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
+ 'GetMembershipBindingResult',
20
+ 'AwaitableGetMembershipBindingResult',
21
+ 'get_membership_binding',
22
+ 'get_membership_binding_output',
23
+ ]
24
+
25
+ @pulumi.output_type
26
+ class GetMembershipBindingResult:
27
+ """
28
+ A collection of values returned by getMembershipBinding.
29
+ """
30
+ def __init__(__self__, create_time=None, delete_time=None, effective_labels=None, id=None, labels=None, location=None, membership_binding_id=None, membership_id=None, name=None, project=None, pulumi_labels=None, scope=None, states=None, uid=None, update_time=None):
31
+ if create_time and not isinstance(create_time, str):
32
+ raise TypeError("Expected argument 'create_time' to be a str")
33
+ pulumi.set(__self__, "create_time", create_time)
34
+ if delete_time and not isinstance(delete_time, str):
35
+ raise TypeError("Expected argument 'delete_time' to be a str")
36
+ pulumi.set(__self__, "delete_time", delete_time)
37
+ if effective_labels and not isinstance(effective_labels, dict):
38
+ raise TypeError("Expected argument 'effective_labels' to be a dict")
39
+ pulumi.set(__self__, "effective_labels", effective_labels)
40
+ if id and not isinstance(id, str):
41
+ raise TypeError("Expected argument 'id' to be a str")
42
+ pulumi.set(__self__, "id", id)
43
+ if labels and not isinstance(labels, dict):
44
+ raise TypeError("Expected argument 'labels' to be a dict")
45
+ pulumi.set(__self__, "labels", labels)
46
+ if location and not isinstance(location, str):
47
+ raise TypeError("Expected argument 'location' to be a str")
48
+ pulumi.set(__self__, "location", location)
49
+ if membership_binding_id and not isinstance(membership_binding_id, str):
50
+ raise TypeError("Expected argument 'membership_binding_id' to be a str")
51
+ pulumi.set(__self__, "membership_binding_id", membership_binding_id)
52
+ if membership_id and not isinstance(membership_id, str):
53
+ raise TypeError("Expected argument 'membership_id' to be a str")
54
+ pulumi.set(__self__, "membership_id", membership_id)
55
+ if name and not isinstance(name, str):
56
+ raise TypeError("Expected argument 'name' to be a str")
57
+ pulumi.set(__self__, "name", name)
58
+ if project and not isinstance(project, str):
59
+ raise TypeError("Expected argument 'project' to be a str")
60
+ pulumi.set(__self__, "project", project)
61
+ if pulumi_labels and not isinstance(pulumi_labels, dict):
62
+ raise TypeError("Expected argument 'pulumi_labels' to be a dict")
63
+ pulumi.set(__self__, "pulumi_labels", pulumi_labels)
64
+ if scope and not isinstance(scope, str):
65
+ raise TypeError("Expected argument 'scope' to be a str")
66
+ pulumi.set(__self__, "scope", scope)
67
+ if states and not isinstance(states, list):
68
+ raise TypeError("Expected argument 'states' to be a list")
69
+ pulumi.set(__self__, "states", states)
70
+ if uid and not isinstance(uid, str):
71
+ raise TypeError("Expected argument 'uid' to be a str")
72
+ pulumi.set(__self__, "uid", uid)
73
+ if update_time and not isinstance(update_time, str):
74
+ raise TypeError("Expected argument 'update_time' to be a str")
75
+ pulumi.set(__self__, "update_time", update_time)
76
+
77
+ @property
78
+ @pulumi.getter(name="createTime")
79
+ def create_time(self) -> str:
80
+ return pulumi.get(self, "create_time")
81
+
82
+ @property
83
+ @pulumi.getter(name="deleteTime")
84
+ def delete_time(self) -> str:
85
+ return pulumi.get(self, "delete_time")
86
+
87
+ @property
88
+ @pulumi.getter(name="effectiveLabels")
89
+ def effective_labels(self) -> Mapping[str, str]:
90
+ return pulumi.get(self, "effective_labels")
91
+
92
+ @property
93
+ @pulumi.getter
94
+ def id(self) -> str:
95
+ """
96
+ The provider-assigned unique ID for this managed resource.
97
+ """
98
+ return pulumi.get(self, "id")
99
+
100
+ @property
101
+ @pulumi.getter
102
+ def labels(self) -> Mapping[str, str]:
103
+ return pulumi.get(self, "labels")
104
+
105
+ @property
106
+ @pulumi.getter
107
+ def location(self) -> str:
108
+ return pulumi.get(self, "location")
109
+
110
+ @property
111
+ @pulumi.getter(name="membershipBindingId")
112
+ def membership_binding_id(self) -> str:
113
+ return pulumi.get(self, "membership_binding_id")
114
+
115
+ @property
116
+ @pulumi.getter(name="membershipId")
117
+ def membership_id(self) -> str:
118
+ return pulumi.get(self, "membership_id")
119
+
120
+ @property
121
+ @pulumi.getter
122
+ def name(self) -> str:
123
+ return pulumi.get(self, "name")
124
+
125
+ @property
126
+ @pulumi.getter
127
+ def project(self) -> Optional[str]:
128
+ return pulumi.get(self, "project")
129
+
130
+ @property
131
+ @pulumi.getter(name="pulumiLabels")
132
+ def pulumi_labels(self) -> Mapping[str, str]:
133
+ return pulumi.get(self, "pulumi_labels")
134
+
135
+ @property
136
+ @pulumi.getter
137
+ def scope(self) -> str:
138
+ return pulumi.get(self, "scope")
139
+
140
+ @property
141
+ @pulumi.getter
142
+ def states(self) -> Sequence['outputs.GetMembershipBindingStateResult']:
143
+ return pulumi.get(self, "states")
144
+
145
+ @property
146
+ @pulumi.getter
147
+ def uid(self) -> str:
148
+ return pulumi.get(self, "uid")
149
+
150
+ @property
151
+ @pulumi.getter(name="updateTime")
152
+ def update_time(self) -> str:
153
+ return pulumi.get(self, "update_time")
154
+
155
+
156
+ class AwaitableGetMembershipBindingResult(GetMembershipBindingResult):
157
+ # pylint: disable=using-constant-test
158
+ def __await__(self):
159
+ if False:
160
+ yield self
161
+ return GetMembershipBindingResult(
162
+ create_time=self.create_time,
163
+ delete_time=self.delete_time,
164
+ effective_labels=self.effective_labels,
165
+ id=self.id,
166
+ labels=self.labels,
167
+ location=self.location,
168
+ membership_binding_id=self.membership_binding_id,
169
+ membership_id=self.membership_id,
170
+ name=self.name,
171
+ project=self.project,
172
+ pulumi_labels=self.pulumi_labels,
173
+ scope=self.scope,
174
+ states=self.states,
175
+ uid=self.uid,
176
+ update_time=self.update_time)
177
+
178
+
179
+ def get_membership_binding(location: Optional[str] = None,
180
+ membership_binding_id: Optional[str] = None,
181
+ membership_id: Optional[str] = None,
182
+ project: Optional[str] = None,
183
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetMembershipBindingResult:
184
+ """
185
+ Use this data source to access information about an existing resource.
186
+ """
187
+ __args__ = dict()
188
+ __args__['location'] = location
189
+ __args__['membershipBindingId'] = membership_binding_id
190
+ __args__['membershipId'] = membership_id
191
+ __args__['project'] = project
192
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
193
+ __ret__ = pulumi.runtime.invoke('gcp:gkehub/getMembershipBinding:getMembershipBinding', __args__, opts=opts, typ=GetMembershipBindingResult).value
194
+
195
+ return AwaitableGetMembershipBindingResult(
196
+ create_time=pulumi.get(__ret__, 'create_time'),
197
+ delete_time=pulumi.get(__ret__, 'delete_time'),
198
+ effective_labels=pulumi.get(__ret__, 'effective_labels'),
199
+ id=pulumi.get(__ret__, 'id'),
200
+ labels=pulumi.get(__ret__, 'labels'),
201
+ location=pulumi.get(__ret__, 'location'),
202
+ membership_binding_id=pulumi.get(__ret__, 'membership_binding_id'),
203
+ membership_id=pulumi.get(__ret__, 'membership_id'),
204
+ name=pulumi.get(__ret__, 'name'),
205
+ project=pulumi.get(__ret__, 'project'),
206
+ pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'),
207
+ scope=pulumi.get(__ret__, 'scope'),
208
+ states=pulumi.get(__ret__, 'states'),
209
+ uid=pulumi.get(__ret__, 'uid'),
210
+ update_time=pulumi.get(__ret__, 'update_time'))
211
+
212
+
213
+ @_utilities.lift_output_func(get_membership_binding)
214
+ def get_membership_binding_output(location: Optional[pulumi.Input[str]] = None,
215
+ membership_binding_id: Optional[pulumi.Input[str]] = None,
216
+ membership_id: Optional[pulumi.Input[str]] = None,
217
+ project: Optional[pulumi.Input[Optional[str]]] = None,
218
+ opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetMembershipBindingResult]:
219
+ """
220
+ Use this data source to access information about an existing resource.
221
+ """
222
+ ...
@@ -88,6 +88,7 @@ __all__ = [
88
88
  'ScopeRbacRoleBindingRole',
89
89
  'ScopeRbacRoleBindingState',
90
90
  'ScopeState',
91
+ 'GetMembershipBindingStateResult',
91
92
  ]
92
93
 
93
94
  @pulumi.output_type
@@ -3588,3 +3589,21 @@ class ScopeState(dict):
3588
3589
  return pulumi.get(self, "code")
3589
3590
 
3590
3591
 
3592
+ @pulumi.output_type
3593
+ class GetMembershipBindingStateResult(dict):
3594
+ def __init__(__self__, *,
3595
+ code: str):
3596
+ """
3597
+ :param str code: Code describes the state of a MembershipBinding resource.
3598
+ """
3599
+ pulumi.set(__self__, "code", code)
3600
+
3601
+ @property
3602
+ @pulumi.getter
3603
+ def code(self) -> str:
3604
+ """
3605
+ Code describes the state of a MembershipBinding resource.
3606
+ """
3607
+ return pulumi.get(self, "code")
3608
+
3609
+
pulumi_gcp/iap/client.py CHANGED
@@ -25,7 +25,7 @@ class ClientArgs:
25
25
  The set of arguments for constructing a Client resource.
26
26
  :param pulumi.Input[str] brand: Identifier of the brand to which this client
27
27
  is attached to. The format is
28
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
28
+ `projects/{project_number}/brands/{brand_id}`.
29
29
 
30
30
 
31
31
  - - -
@@ -40,7 +40,7 @@ class ClientArgs:
40
40
  """
41
41
  Identifier of the brand to which this client
42
42
  is attached to. The format is
43
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
43
+ `projects/{project_number}/brands/{brand_id}`.
44
44
 
45
45
 
46
46
  - - -
@@ -75,7 +75,7 @@ class _ClientState:
75
75
  Input properties used for looking up and filtering Client resources.
76
76
  :param pulumi.Input[str] brand: Identifier of the brand to which this client
77
77
  is attached to. The format is
78
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
78
+ `projects/{project_number}/brands/{brand_id}`.
79
79
 
80
80
 
81
81
  - - -
@@ -99,7 +99,7 @@ class _ClientState:
99
99
  """
100
100
  Identifier of the brand to which this client
101
101
  is attached to. The format is
102
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
102
+ `projects/{project_number}/brands/{brand_id}`.
103
103
 
104
104
 
105
105
  - - -
@@ -215,7 +215,7 @@ class Client(pulumi.CustomResource):
215
215
  :param pulumi.ResourceOptions opts: Options for the resource.
216
216
  :param pulumi.Input[str] brand: Identifier of the brand to which this client
217
217
  is attached to. The format is
218
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
218
+ `projects/{project_number}/brands/{brand_id}`.
219
219
 
220
220
 
221
221
  - - -
@@ -341,7 +341,7 @@ class Client(pulumi.CustomResource):
341
341
  :param pulumi.ResourceOptions opts: Options for the resource.
342
342
  :param pulumi.Input[str] brand: Identifier of the brand to which this client
343
343
  is attached to. The format is
344
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
344
+ `projects/{project_number}/brands/{brand_id}`.
345
345
 
346
346
 
347
347
  - - -
@@ -366,7 +366,7 @@ class Client(pulumi.CustomResource):
366
366
  """
367
367
  Identifier of the brand to which this client
368
368
  is attached to. The format is
369
- `projects/{project_number}/brands/{brand_id}/identityAwareProxyClients/{client_id}`.
369
+ `projects/{project_number}/brands/{brand_id}`.
370
370
 
371
371
 
372
372
  - - -
pulumi_gcp/kms/_inputs.py CHANGED
@@ -19,6 +19,8 @@ __all__ = [
19
19
  'CryptoKeyIAMBindingConditionArgsDict',
20
20
  'CryptoKeyIAMMemberConditionArgs',
21
21
  'CryptoKeyIAMMemberConditionArgsDict',
22
+ 'CryptoKeyKeyAccessJustificationsPolicyArgs',
23
+ 'CryptoKeyKeyAccessJustificationsPolicyArgsDict',
22
24
  'CryptoKeyPrimaryArgs',
23
25
  'CryptoKeyPrimaryArgsDict',
24
26
  'CryptoKeyVersionAttestationArgs',
@@ -211,6 +213,44 @@ class CryptoKeyIAMMemberConditionArgs:
211
213
  pulumi.set(self, "description", value)
212
214
 
213
215
 
216
+ if not MYPY:
217
+ class CryptoKeyKeyAccessJustificationsPolicyArgsDict(TypedDict):
218
+ allowed_access_reasons: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
219
+ """
220
+ The list of allowed reasons for access to this CryptoKey. Zero allowed
221
+ access reasons means all encrypt, decrypt, and sign operations for
222
+ this CryptoKey will fail.
223
+ """
224
+ elif False:
225
+ CryptoKeyKeyAccessJustificationsPolicyArgsDict: TypeAlias = Mapping[str, Any]
226
+
227
+ @pulumi.input_type
228
+ class CryptoKeyKeyAccessJustificationsPolicyArgs:
229
+ def __init__(__self__, *,
230
+ allowed_access_reasons: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
231
+ """
232
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_access_reasons: The list of allowed reasons for access to this CryptoKey. Zero allowed
233
+ access reasons means all encrypt, decrypt, and sign operations for
234
+ this CryptoKey will fail.
235
+ """
236
+ if allowed_access_reasons is not None:
237
+ pulumi.set(__self__, "allowed_access_reasons", allowed_access_reasons)
238
+
239
+ @property
240
+ @pulumi.getter(name="allowedAccessReasons")
241
+ def allowed_access_reasons(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
242
+ """
243
+ The list of allowed reasons for access to this CryptoKey. Zero allowed
244
+ access reasons means all encrypt, decrypt, and sign operations for
245
+ this CryptoKey will fail.
246
+ """
247
+ return pulumi.get(self, "allowed_access_reasons")
248
+
249
+ @allowed_access_reasons.setter
250
+ def allowed_access_reasons(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
251
+ pulumi.set(self, "allowed_access_reasons", value)
252
+
253
+
214
254
  if not MYPY:
215
255
  class CryptoKeyPrimaryArgsDict(TypedDict):
216
256
  name: NotRequired[pulumi.Input[str]]
@@ -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,
@@ -43,6 +44,15 @@ class CryptoKeyArgs:
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
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:
@@ -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,
@@ -245,6 +278,15 @@ class _CryptoKeyState:
245
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:
@@ -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,
@@ -570,6 +635,15 @@ class CryptoKey(pulumi.CustomResource):
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
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,
@@ -755,6 +832,15 @@ class CryptoKey(pulumi.CustomResource):
755
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
@@ -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]: