pulumi-gcp 7.8.0a1706829616__py3-none-any.whl → 7.8.0a1706905467__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. pulumi_gcp/__init__.py +30 -0
  2. pulumi_gcp/artifactregistry/repository.py +26 -28
  3. pulumi_gcp/cloudrun/_inputs.py +87 -4
  4. pulumi_gcp/cloudrun/outputs.py +152 -4
  5. pulumi_gcp/composer/_inputs.py +63 -0
  6. pulumi_gcp/composer/outputs.py +136 -0
  7. pulumi_gcp/compute/_inputs.py +8 -18
  8. pulumi_gcp/compute/backend_service.py +28 -0
  9. pulumi_gcp/compute/outputs.py +10 -20
  10. pulumi_gcp/compute/region_backend_service.py +30 -0
  11. pulumi_gcp/config/__init__.pyi +4 -0
  12. pulumi_gcp/config/vars.py +8 -0
  13. pulumi_gcp/discoveryengine/__init__.py +8 -0
  14. pulumi_gcp/discoveryengine/data_store.py +734 -0
  15. pulumi_gcp/eventarc/_inputs.py +2 -2
  16. pulumi_gcp/eventarc/outputs.py +2 -2
  17. pulumi_gcp/firebase/_inputs.py +4 -2
  18. pulumi_gcp/firebase/extensions_instance.py +6 -8
  19. pulumi_gcp/firebase/outputs.py +4 -2
  20. pulumi_gcp/firestore/backup_schedule.py +36 -12
  21. pulumi_gcp/firestore/database.py +0 -8
  22. pulumi_gcp/firestore/document.py +0 -68
  23. pulumi_gcp/firestore/field.py +22 -102
  24. pulumi_gcp/firestore/index.py +4 -42
  25. pulumi_gcp/gkehub/feature.py +2 -2
  26. pulumi_gcp/provider.py +40 -0
  27. pulumi_gcp/pubsub/_inputs.py +26 -4
  28. pulumi_gcp/pubsub/outputs.py +45 -8
  29. pulumi_gcp/pubsub/subscription.py +82 -0
  30. pulumi_gcp/securityposture/__init__.py +11 -0
  31. pulumi_gcp/securityposture/_inputs.py +1364 -0
  32. pulumi_gcp/securityposture/outputs.py +1372 -0
  33. pulumi_gcp/securityposture/posture.py +828 -0
  34. pulumi_gcp/securityposture/posture_deployment.py +872 -0
  35. pulumi_gcp/vertex/_inputs.py +156 -0
  36. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +259 -3
  37. pulumi_gcp/vertex/outputs.py +170 -0
  38. pulumi_gcp/workflows/workflow.py +75 -7
  39. pulumi_gcp/workstations/_inputs.py +38 -0
  40. pulumi_gcp/workstations/outputs.py +30 -0
  41. pulumi_gcp/workstations/workstation_config.py +54 -0
  42. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/METADATA +1 -1
  43. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/RECORD +45 -38
  44. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/WHEEL +0 -0
  45. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,872 @@
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 pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from .. import _utilities
11
+
12
+ __all__ = ['PostureDeploymentArgs', 'PostureDeployment']
13
+
14
+ @pulumi.input_type
15
+ class PostureDeploymentArgs:
16
+ def __init__(__self__, *,
17
+ location: pulumi.Input[str],
18
+ parent: pulumi.Input[str],
19
+ posture_deployment_id: pulumi.Input[str],
20
+ posture_id: pulumi.Input[str],
21
+ posture_revision_id: pulumi.Input[str],
22
+ target_resource: pulumi.Input[str],
23
+ description: Optional[pulumi.Input[str]] = None):
24
+ """
25
+ The set of arguments for constructing a PostureDeployment resource.
26
+ :param pulumi.Input[str] location: The location of the resource, eg. global`.
27
+ :param pulumi.Input[str] parent: The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
28
+ :param pulumi.Input[str] posture_deployment_id: ID of the posture deployment.
29
+
30
+
31
+ - - -
32
+ :param pulumi.Input[str] posture_id: Relative name of the posture which needs to be deployed. It should be in the format:
33
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
34
+ :param pulumi.Input[str] posture_revision_id: Revision_id the posture which needs to be deployed.
35
+ :param pulumi.Input[str] target_resource: The resource on which the posture should be deployed. This can be in one of the following formats:
36
+ projects/<project_number>
37
+ folders/<folder_number>
38
+ organizations/<organization_id>
39
+ :param pulumi.Input[str] description: Description of the posture deployment.
40
+ """
41
+ pulumi.set(__self__, "location", location)
42
+ pulumi.set(__self__, "parent", parent)
43
+ pulumi.set(__self__, "posture_deployment_id", posture_deployment_id)
44
+ pulumi.set(__self__, "posture_id", posture_id)
45
+ pulumi.set(__self__, "posture_revision_id", posture_revision_id)
46
+ pulumi.set(__self__, "target_resource", target_resource)
47
+ if description is not None:
48
+ pulumi.set(__self__, "description", description)
49
+
50
+ @property
51
+ @pulumi.getter
52
+ def location(self) -> pulumi.Input[str]:
53
+ """
54
+ The location of the resource, eg. global`.
55
+ """
56
+ return pulumi.get(self, "location")
57
+
58
+ @location.setter
59
+ def location(self, value: pulumi.Input[str]):
60
+ pulumi.set(self, "location", value)
61
+
62
+ @property
63
+ @pulumi.getter
64
+ def parent(self) -> pulumi.Input[str]:
65
+ """
66
+ The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
67
+ """
68
+ return pulumi.get(self, "parent")
69
+
70
+ @parent.setter
71
+ def parent(self, value: pulumi.Input[str]):
72
+ pulumi.set(self, "parent", value)
73
+
74
+ @property
75
+ @pulumi.getter(name="postureDeploymentId")
76
+ def posture_deployment_id(self) -> pulumi.Input[str]:
77
+ """
78
+ ID of the posture deployment.
79
+
80
+
81
+ - - -
82
+ """
83
+ return pulumi.get(self, "posture_deployment_id")
84
+
85
+ @posture_deployment_id.setter
86
+ def posture_deployment_id(self, value: pulumi.Input[str]):
87
+ pulumi.set(self, "posture_deployment_id", value)
88
+
89
+ @property
90
+ @pulumi.getter(name="postureId")
91
+ def posture_id(self) -> pulumi.Input[str]:
92
+ """
93
+ Relative name of the posture which needs to be deployed. It should be in the format:
94
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
95
+ """
96
+ return pulumi.get(self, "posture_id")
97
+
98
+ @posture_id.setter
99
+ def posture_id(self, value: pulumi.Input[str]):
100
+ pulumi.set(self, "posture_id", value)
101
+
102
+ @property
103
+ @pulumi.getter(name="postureRevisionId")
104
+ def posture_revision_id(self) -> pulumi.Input[str]:
105
+ """
106
+ Revision_id the posture which needs to be deployed.
107
+ """
108
+ return pulumi.get(self, "posture_revision_id")
109
+
110
+ @posture_revision_id.setter
111
+ def posture_revision_id(self, value: pulumi.Input[str]):
112
+ pulumi.set(self, "posture_revision_id", value)
113
+
114
+ @property
115
+ @pulumi.getter(name="targetResource")
116
+ def target_resource(self) -> pulumi.Input[str]:
117
+ """
118
+ The resource on which the posture should be deployed. This can be in one of the following formats:
119
+ projects/<project_number>
120
+ folders/<folder_number>
121
+ organizations/<organization_id>
122
+ """
123
+ return pulumi.get(self, "target_resource")
124
+
125
+ @target_resource.setter
126
+ def target_resource(self, value: pulumi.Input[str]):
127
+ pulumi.set(self, "target_resource", value)
128
+
129
+ @property
130
+ @pulumi.getter
131
+ def description(self) -> Optional[pulumi.Input[str]]:
132
+ """
133
+ Description of the posture deployment.
134
+ """
135
+ return pulumi.get(self, "description")
136
+
137
+ @description.setter
138
+ def description(self, value: Optional[pulumi.Input[str]]):
139
+ pulumi.set(self, "description", value)
140
+
141
+
142
+ @pulumi.input_type
143
+ class _PostureDeploymentState:
144
+ def __init__(__self__, *,
145
+ create_time: Optional[pulumi.Input[str]] = None,
146
+ description: Optional[pulumi.Input[str]] = None,
147
+ desired_posture_id: Optional[pulumi.Input[str]] = None,
148
+ desired_posture_revision_id: Optional[pulumi.Input[str]] = None,
149
+ etag: Optional[pulumi.Input[str]] = None,
150
+ failure_message: Optional[pulumi.Input[str]] = None,
151
+ location: Optional[pulumi.Input[str]] = None,
152
+ name: Optional[pulumi.Input[str]] = None,
153
+ parent: Optional[pulumi.Input[str]] = None,
154
+ posture_deployment_id: Optional[pulumi.Input[str]] = None,
155
+ posture_id: Optional[pulumi.Input[str]] = None,
156
+ posture_revision_id: Optional[pulumi.Input[str]] = None,
157
+ reconciling: Optional[pulumi.Input[bool]] = None,
158
+ state: Optional[pulumi.Input[str]] = None,
159
+ target_resource: Optional[pulumi.Input[str]] = None,
160
+ update_time: Optional[pulumi.Input[str]] = None):
161
+ """
162
+ Input properties used for looking up and filtering PostureDeployment resources.
163
+ :param pulumi.Input[str] create_time: Time the posture deployment was created in UTC.
164
+ :param pulumi.Input[str] description: Description of the posture deployment.
165
+ :param pulumi.Input[str] desired_posture_id: This is an output only optional field which will be filled in case when
166
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
167
+ It denotes the desired Posture to be deployed.
168
+ :param pulumi.Input[str] desired_posture_revision_id: This is an output only optional field which will be filled in case when
169
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
170
+ It denotes the desired Posture revision_id to be deployed.
171
+ :param pulumi.Input[str] etag: For Resource freshness validation (https://google.aip.dev/154)
172
+ :param pulumi.Input[str] failure_message: This is a output only optional field which will be filled in case where
173
+ PostureDeployment enters a failure state like UPDATE_FAILED or
174
+ CREATE_FAILED or DELETE_FAILED. It will have the failure message for posture deployment's
175
+ CREATE/UPDATE/DELETE methods.
176
+ :param pulumi.Input[str] location: The location of the resource, eg. global`.
177
+ :param pulumi.Input[str] name: Name of the posture deployment instance.
178
+ :param pulumi.Input[str] parent: The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
179
+ :param pulumi.Input[str] posture_deployment_id: ID of the posture deployment.
180
+
181
+
182
+ - - -
183
+ :param pulumi.Input[str] posture_id: Relative name of the posture which needs to be deployed. It should be in the format:
184
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
185
+ :param pulumi.Input[str] posture_revision_id: Revision_id the posture which needs to be deployed.
186
+ :param pulumi.Input[bool] reconciling: If set, there are currently changes in flight to the posture deployment.
187
+ :param pulumi.Input[str] state: State of the posture deployment.
188
+ :param pulumi.Input[str] target_resource: The resource on which the posture should be deployed. This can be in one of the following formats:
189
+ projects/<project_number>
190
+ folders/<folder_number>
191
+ organizations/<organization_id>
192
+ :param pulumi.Input[str] update_time: Time the posture deployment was updated in UTC.
193
+ """
194
+ if create_time is not None:
195
+ pulumi.set(__self__, "create_time", create_time)
196
+ if description is not None:
197
+ pulumi.set(__self__, "description", description)
198
+ if desired_posture_id is not None:
199
+ pulumi.set(__self__, "desired_posture_id", desired_posture_id)
200
+ if desired_posture_revision_id is not None:
201
+ pulumi.set(__self__, "desired_posture_revision_id", desired_posture_revision_id)
202
+ if etag is not None:
203
+ pulumi.set(__self__, "etag", etag)
204
+ if failure_message is not None:
205
+ pulumi.set(__self__, "failure_message", failure_message)
206
+ if location is not None:
207
+ pulumi.set(__self__, "location", location)
208
+ if name is not None:
209
+ pulumi.set(__self__, "name", name)
210
+ if parent is not None:
211
+ pulumi.set(__self__, "parent", parent)
212
+ if posture_deployment_id is not None:
213
+ pulumi.set(__self__, "posture_deployment_id", posture_deployment_id)
214
+ if posture_id is not None:
215
+ pulumi.set(__self__, "posture_id", posture_id)
216
+ if posture_revision_id is not None:
217
+ pulumi.set(__self__, "posture_revision_id", posture_revision_id)
218
+ if reconciling is not None:
219
+ pulumi.set(__self__, "reconciling", reconciling)
220
+ if state is not None:
221
+ pulumi.set(__self__, "state", state)
222
+ if target_resource is not None:
223
+ pulumi.set(__self__, "target_resource", target_resource)
224
+ if update_time is not None:
225
+ pulumi.set(__self__, "update_time", update_time)
226
+
227
+ @property
228
+ @pulumi.getter(name="createTime")
229
+ def create_time(self) -> Optional[pulumi.Input[str]]:
230
+ """
231
+ Time the posture deployment was created in UTC.
232
+ """
233
+ return pulumi.get(self, "create_time")
234
+
235
+ @create_time.setter
236
+ def create_time(self, value: Optional[pulumi.Input[str]]):
237
+ pulumi.set(self, "create_time", value)
238
+
239
+ @property
240
+ @pulumi.getter
241
+ def description(self) -> Optional[pulumi.Input[str]]:
242
+ """
243
+ Description of the posture deployment.
244
+ """
245
+ return pulumi.get(self, "description")
246
+
247
+ @description.setter
248
+ def description(self, value: Optional[pulumi.Input[str]]):
249
+ pulumi.set(self, "description", value)
250
+
251
+ @property
252
+ @pulumi.getter(name="desiredPostureId")
253
+ def desired_posture_id(self) -> Optional[pulumi.Input[str]]:
254
+ """
255
+ This is an output only optional field which will be filled in case when
256
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
257
+ It denotes the desired Posture to be deployed.
258
+ """
259
+ return pulumi.get(self, "desired_posture_id")
260
+
261
+ @desired_posture_id.setter
262
+ def desired_posture_id(self, value: Optional[pulumi.Input[str]]):
263
+ pulumi.set(self, "desired_posture_id", value)
264
+
265
+ @property
266
+ @pulumi.getter(name="desiredPostureRevisionId")
267
+ def desired_posture_revision_id(self) -> Optional[pulumi.Input[str]]:
268
+ """
269
+ This is an output only optional field which will be filled in case when
270
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
271
+ It denotes the desired Posture revision_id to be deployed.
272
+ """
273
+ return pulumi.get(self, "desired_posture_revision_id")
274
+
275
+ @desired_posture_revision_id.setter
276
+ def desired_posture_revision_id(self, value: Optional[pulumi.Input[str]]):
277
+ pulumi.set(self, "desired_posture_revision_id", value)
278
+
279
+ @property
280
+ @pulumi.getter
281
+ def etag(self) -> Optional[pulumi.Input[str]]:
282
+ """
283
+ For Resource freshness validation (https://google.aip.dev/154)
284
+ """
285
+ return pulumi.get(self, "etag")
286
+
287
+ @etag.setter
288
+ def etag(self, value: Optional[pulumi.Input[str]]):
289
+ pulumi.set(self, "etag", value)
290
+
291
+ @property
292
+ @pulumi.getter(name="failureMessage")
293
+ def failure_message(self) -> Optional[pulumi.Input[str]]:
294
+ """
295
+ This is a output only optional field which will be filled in case where
296
+ PostureDeployment enters a failure state like UPDATE_FAILED or
297
+ CREATE_FAILED or DELETE_FAILED. It will have the failure message for posture deployment's
298
+ CREATE/UPDATE/DELETE methods.
299
+ """
300
+ return pulumi.get(self, "failure_message")
301
+
302
+ @failure_message.setter
303
+ def failure_message(self, value: Optional[pulumi.Input[str]]):
304
+ pulumi.set(self, "failure_message", value)
305
+
306
+ @property
307
+ @pulumi.getter
308
+ def location(self) -> Optional[pulumi.Input[str]]:
309
+ """
310
+ The location of the resource, eg. global`.
311
+ """
312
+ return pulumi.get(self, "location")
313
+
314
+ @location.setter
315
+ def location(self, value: Optional[pulumi.Input[str]]):
316
+ pulumi.set(self, "location", value)
317
+
318
+ @property
319
+ @pulumi.getter
320
+ def name(self) -> Optional[pulumi.Input[str]]:
321
+ """
322
+ Name of the posture deployment instance.
323
+ """
324
+ return pulumi.get(self, "name")
325
+
326
+ @name.setter
327
+ def name(self, value: Optional[pulumi.Input[str]]):
328
+ pulumi.set(self, "name", value)
329
+
330
+ @property
331
+ @pulumi.getter
332
+ def parent(self) -> Optional[pulumi.Input[str]]:
333
+ """
334
+ The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
335
+ """
336
+ return pulumi.get(self, "parent")
337
+
338
+ @parent.setter
339
+ def parent(self, value: Optional[pulumi.Input[str]]):
340
+ pulumi.set(self, "parent", value)
341
+
342
+ @property
343
+ @pulumi.getter(name="postureDeploymentId")
344
+ def posture_deployment_id(self) -> Optional[pulumi.Input[str]]:
345
+ """
346
+ ID of the posture deployment.
347
+
348
+
349
+ - - -
350
+ """
351
+ return pulumi.get(self, "posture_deployment_id")
352
+
353
+ @posture_deployment_id.setter
354
+ def posture_deployment_id(self, value: Optional[pulumi.Input[str]]):
355
+ pulumi.set(self, "posture_deployment_id", value)
356
+
357
+ @property
358
+ @pulumi.getter(name="postureId")
359
+ def posture_id(self) -> Optional[pulumi.Input[str]]:
360
+ """
361
+ Relative name of the posture which needs to be deployed. It should be in the format:
362
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
363
+ """
364
+ return pulumi.get(self, "posture_id")
365
+
366
+ @posture_id.setter
367
+ def posture_id(self, value: Optional[pulumi.Input[str]]):
368
+ pulumi.set(self, "posture_id", value)
369
+
370
+ @property
371
+ @pulumi.getter(name="postureRevisionId")
372
+ def posture_revision_id(self) -> Optional[pulumi.Input[str]]:
373
+ """
374
+ Revision_id the posture which needs to be deployed.
375
+ """
376
+ return pulumi.get(self, "posture_revision_id")
377
+
378
+ @posture_revision_id.setter
379
+ def posture_revision_id(self, value: Optional[pulumi.Input[str]]):
380
+ pulumi.set(self, "posture_revision_id", value)
381
+
382
+ @property
383
+ @pulumi.getter
384
+ def reconciling(self) -> Optional[pulumi.Input[bool]]:
385
+ """
386
+ If set, there are currently changes in flight to the posture deployment.
387
+ """
388
+ return pulumi.get(self, "reconciling")
389
+
390
+ @reconciling.setter
391
+ def reconciling(self, value: Optional[pulumi.Input[bool]]):
392
+ pulumi.set(self, "reconciling", value)
393
+
394
+ @property
395
+ @pulumi.getter
396
+ def state(self) -> Optional[pulumi.Input[str]]:
397
+ """
398
+ State of the posture deployment.
399
+ """
400
+ return pulumi.get(self, "state")
401
+
402
+ @state.setter
403
+ def state(self, value: Optional[pulumi.Input[str]]):
404
+ pulumi.set(self, "state", value)
405
+
406
+ @property
407
+ @pulumi.getter(name="targetResource")
408
+ def target_resource(self) -> Optional[pulumi.Input[str]]:
409
+ """
410
+ The resource on which the posture should be deployed. This can be in one of the following formats:
411
+ projects/<project_number>
412
+ folders/<folder_number>
413
+ organizations/<organization_id>
414
+ """
415
+ return pulumi.get(self, "target_resource")
416
+
417
+ @target_resource.setter
418
+ def target_resource(self, value: Optional[pulumi.Input[str]]):
419
+ pulumi.set(self, "target_resource", value)
420
+
421
+ @property
422
+ @pulumi.getter(name="updateTime")
423
+ def update_time(self) -> Optional[pulumi.Input[str]]:
424
+ """
425
+ Time the posture deployment was updated in UTC.
426
+ """
427
+ return pulumi.get(self, "update_time")
428
+
429
+ @update_time.setter
430
+ def update_time(self, value: Optional[pulumi.Input[str]]):
431
+ pulumi.set(self, "update_time", value)
432
+
433
+
434
+ class PostureDeployment(pulumi.CustomResource):
435
+ @overload
436
+ def __init__(__self__,
437
+ resource_name: str,
438
+ opts: Optional[pulumi.ResourceOptions] = None,
439
+ description: Optional[pulumi.Input[str]] = None,
440
+ location: Optional[pulumi.Input[str]] = None,
441
+ parent: Optional[pulumi.Input[str]] = None,
442
+ posture_deployment_id: Optional[pulumi.Input[str]] = None,
443
+ posture_id: Optional[pulumi.Input[str]] = None,
444
+ posture_revision_id: Optional[pulumi.Input[str]] = None,
445
+ target_resource: Optional[pulumi.Input[str]] = None,
446
+ __props__=None):
447
+ """
448
+ Represents a deployment of a security posture on a resource. A posture contains user curated policy sets. A posture can
449
+ be deployed on a project or on a folder or on an organization. To deploy a posture we need to populate the posture's name
450
+ and its revision_id in the posture deployment configuration. Every update to a deployed posture generates a new revision_id.
451
+ Thus, the updated revision_id should be used in the respective posture deployment's configuration to deploy that posture
452
+ on a resource.
453
+
454
+ To get more information about PostureDeployment, see:
455
+
456
+ * How-to Guides
457
+ * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
458
+
459
+ ## Example Usage
460
+ ### Securityposture Posture Deployment Basic
461
+
462
+ ```python
463
+ import pulumi
464
+ import pulumi_gcp as gcp
465
+
466
+ posture1 = gcp.securityposture.Posture("posture1",
467
+ posture_id="posture_1",
468
+ parent="organizations/123456789",
469
+ location="global",
470
+ state="ACTIVE",
471
+ description="a new posture",
472
+ policy_sets=[gcp.securityposture.PosturePolicySetArgs(
473
+ policy_set_id="org_policy_set",
474
+ description="set of org policies",
475
+ policies=[gcp.securityposture.PosturePolicySetPolicyArgs(
476
+ policy_id="policy_1",
477
+ constraint=gcp.securityposture.PosturePolicySetPolicyConstraintArgs(
478
+ org_policy_constraint=gcp.securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs(
479
+ canned_constraint_id="storage.uniformBucketLevelAccess",
480
+ policy_rules=[gcp.securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs(
481
+ enforce=True,
482
+ )],
483
+ ),
484
+ ),
485
+ )],
486
+ )])
487
+ posture_deployment = gcp.securityposture.PostureDeployment("postureDeployment",
488
+ posture_deployment_id="posture_deployment_1",
489
+ parent="organizations/123456789",
490
+ location="global",
491
+ description="a new posture deployment",
492
+ target_resource="projects/1111111111111",
493
+ posture_id=posture1.name,
494
+ posture_revision_id=posture1.revision_id)
495
+ ```
496
+
497
+ ## Import
498
+
499
+ PostureDeployment can be imported using any of these accepted formats* `{{parent}}/locations/{{location}}/postureDeployments/{{posture_deployment_id}}` When using the `pulumi import` command, PostureDeployment can be imported using one of the formats above. For example
500
+
501
+ ```sh
502
+ $ pulumi import gcp:securityposture/postureDeployment:PostureDeployment default {{parent}}/locations/{{location}}/postureDeployments/{{posture_deployment_id}}
503
+ ```
504
+
505
+ :param str resource_name: The name of the resource.
506
+ :param pulumi.ResourceOptions opts: Options for the resource.
507
+ :param pulumi.Input[str] description: Description of the posture deployment.
508
+ :param pulumi.Input[str] location: The location of the resource, eg. global`.
509
+ :param pulumi.Input[str] parent: The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
510
+ :param pulumi.Input[str] posture_deployment_id: ID of the posture deployment.
511
+
512
+
513
+ - - -
514
+ :param pulumi.Input[str] posture_id: Relative name of the posture which needs to be deployed. It should be in the format:
515
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
516
+ :param pulumi.Input[str] posture_revision_id: Revision_id the posture which needs to be deployed.
517
+ :param pulumi.Input[str] target_resource: The resource on which the posture should be deployed. This can be in one of the following formats:
518
+ projects/<project_number>
519
+ folders/<folder_number>
520
+ organizations/<organization_id>
521
+ """
522
+ ...
523
+ @overload
524
+ def __init__(__self__,
525
+ resource_name: str,
526
+ args: PostureDeploymentArgs,
527
+ opts: Optional[pulumi.ResourceOptions] = None):
528
+ """
529
+ Represents a deployment of a security posture on a resource. A posture contains user curated policy sets. A posture can
530
+ be deployed on a project or on a folder or on an organization. To deploy a posture we need to populate the posture's name
531
+ and its revision_id in the posture deployment configuration. Every update to a deployed posture generates a new revision_id.
532
+ Thus, the updated revision_id should be used in the respective posture deployment's configuration to deploy that posture
533
+ on a resource.
534
+
535
+ To get more information about PostureDeployment, see:
536
+
537
+ * How-to Guides
538
+ * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)
539
+
540
+ ## Example Usage
541
+ ### Securityposture Posture Deployment Basic
542
+
543
+ ```python
544
+ import pulumi
545
+ import pulumi_gcp as gcp
546
+
547
+ posture1 = gcp.securityposture.Posture("posture1",
548
+ posture_id="posture_1",
549
+ parent="organizations/123456789",
550
+ location="global",
551
+ state="ACTIVE",
552
+ description="a new posture",
553
+ policy_sets=[gcp.securityposture.PosturePolicySetArgs(
554
+ policy_set_id="org_policy_set",
555
+ description="set of org policies",
556
+ policies=[gcp.securityposture.PosturePolicySetPolicyArgs(
557
+ policy_id="policy_1",
558
+ constraint=gcp.securityposture.PosturePolicySetPolicyConstraintArgs(
559
+ org_policy_constraint=gcp.securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs(
560
+ canned_constraint_id="storage.uniformBucketLevelAccess",
561
+ policy_rules=[gcp.securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs(
562
+ enforce=True,
563
+ )],
564
+ ),
565
+ ),
566
+ )],
567
+ )])
568
+ posture_deployment = gcp.securityposture.PostureDeployment("postureDeployment",
569
+ posture_deployment_id="posture_deployment_1",
570
+ parent="organizations/123456789",
571
+ location="global",
572
+ description="a new posture deployment",
573
+ target_resource="projects/1111111111111",
574
+ posture_id=posture1.name,
575
+ posture_revision_id=posture1.revision_id)
576
+ ```
577
+
578
+ ## Import
579
+
580
+ PostureDeployment can be imported using any of these accepted formats* `{{parent}}/locations/{{location}}/postureDeployments/{{posture_deployment_id}}` When using the `pulumi import` command, PostureDeployment can be imported using one of the formats above. For example
581
+
582
+ ```sh
583
+ $ pulumi import gcp:securityposture/postureDeployment:PostureDeployment default {{parent}}/locations/{{location}}/postureDeployments/{{posture_deployment_id}}
584
+ ```
585
+
586
+ :param str resource_name: The name of the resource.
587
+ :param PostureDeploymentArgs args: The arguments to use to populate this resource's properties.
588
+ :param pulumi.ResourceOptions opts: Options for the resource.
589
+ """
590
+ ...
591
+ def __init__(__self__, resource_name: str, *args, **kwargs):
592
+ resource_args, opts = _utilities.get_resource_args_opts(PostureDeploymentArgs, pulumi.ResourceOptions, *args, **kwargs)
593
+ if resource_args is not None:
594
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
595
+ else:
596
+ __self__._internal_init(resource_name, *args, **kwargs)
597
+
598
+ def _internal_init(__self__,
599
+ resource_name: str,
600
+ opts: Optional[pulumi.ResourceOptions] = None,
601
+ description: Optional[pulumi.Input[str]] = None,
602
+ location: Optional[pulumi.Input[str]] = None,
603
+ parent: Optional[pulumi.Input[str]] = None,
604
+ posture_deployment_id: Optional[pulumi.Input[str]] = None,
605
+ posture_id: Optional[pulumi.Input[str]] = None,
606
+ posture_revision_id: Optional[pulumi.Input[str]] = None,
607
+ target_resource: Optional[pulumi.Input[str]] = None,
608
+ __props__=None):
609
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
610
+ if not isinstance(opts, pulumi.ResourceOptions):
611
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
612
+ if opts.id is None:
613
+ if __props__ is not None:
614
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
615
+ __props__ = PostureDeploymentArgs.__new__(PostureDeploymentArgs)
616
+
617
+ __props__.__dict__["description"] = description
618
+ if location is None and not opts.urn:
619
+ raise TypeError("Missing required property 'location'")
620
+ __props__.__dict__["location"] = location
621
+ if parent is None and not opts.urn:
622
+ raise TypeError("Missing required property 'parent'")
623
+ __props__.__dict__["parent"] = parent
624
+ if posture_deployment_id is None and not opts.urn:
625
+ raise TypeError("Missing required property 'posture_deployment_id'")
626
+ __props__.__dict__["posture_deployment_id"] = posture_deployment_id
627
+ if posture_id is None and not opts.urn:
628
+ raise TypeError("Missing required property 'posture_id'")
629
+ __props__.__dict__["posture_id"] = posture_id
630
+ if posture_revision_id is None and not opts.urn:
631
+ raise TypeError("Missing required property 'posture_revision_id'")
632
+ __props__.__dict__["posture_revision_id"] = posture_revision_id
633
+ if target_resource is None and not opts.urn:
634
+ raise TypeError("Missing required property 'target_resource'")
635
+ __props__.__dict__["target_resource"] = target_resource
636
+ __props__.__dict__["create_time"] = None
637
+ __props__.__dict__["desired_posture_id"] = None
638
+ __props__.__dict__["desired_posture_revision_id"] = None
639
+ __props__.__dict__["etag"] = None
640
+ __props__.__dict__["failure_message"] = None
641
+ __props__.__dict__["name"] = None
642
+ __props__.__dict__["reconciling"] = None
643
+ __props__.__dict__["state"] = None
644
+ __props__.__dict__["update_time"] = None
645
+ super(PostureDeployment, __self__).__init__(
646
+ 'gcp:securityposture/postureDeployment:PostureDeployment',
647
+ resource_name,
648
+ __props__,
649
+ opts)
650
+
651
+ @staticmethod
652
+ def get(resource_name: str,
653
+ id: pulumi.Input[str],
654
+ opts: Optional[pulumi.ResourceOptions] = None,
655
+ create_time: Optional[pulumi.Input[str]] = None,
656
+ description: Optional[pulumi.Input[str]] = None,
657
+ desired_posture_id: Optional[pulumi.Input[str]] = None,
658
+ desired_posture_revision_id: Optional[pulumi.Input[str]] = None,
659
+ etag: Optional[pulumi.Input[str]] = None,
660
+ failure_message: Optional[pulumi.Input[str]] = None,
661
+ location: Optional[pulumi.Input[str]] = None,
662
+ name: Optional[pulumi.Input[str]] = None,
663
+ parent: Optional[pulumi.Input[str]] = None,
664
+ posture_deployment_id: Optional[pulumi.Input[str]] = None,
665
+ posture_id: Optional[pulumi.Input[str]] = None,
666
+ posture_revision_id: Optional[pulumi.Input[str]] = None,
667
+ reconciling: Optional[pulumi.Input[bool]] = None,
668
+ state: Optional[pulumi.Input[str]] = None,
669
+ target_resource: Optional[pulumi.Input[str]] = None,
670
+ update_time: Optional[pulumi.Input[str]] = None) -> 'PostureDeployment':
671
+ """
672
+ Get an existing PostureDeployment resource's state with the given name, id, and optional extra
673
+ properties used to qualify the lookup.
674
+
675
+ :param str resource_name: The unique name of the resulting resource.
676
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
677
+ :param pulumi.ResourceOptions opts: Options for the resource.
678
+ :param pulumi.Input[str] create_time: Time the posture deployment was created in UTC.
679
+ :param pulumi.Input[str] description: Description of the posture deployment.
680
+ :param pulumi.Input[str] desired_posture_id: This is an output only optional field which will be filled in case when
681
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
682
+ It denotes the desired Posture to be deployed.
683
+ :param pulumi.Input[str] desired_posture_revision_id: This is an output only optional field which will be filled in case when
684
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
685
+ It denotes the desired Posture revision_id to be deployed.
686
+ :param pulumi.Input[str] etag: For Resource freshness validation (https://google.aip.dev/154)
687
+ :param pulumi.Input[str] failure_message: This is a output only optional field which will be filled in case where
688
+ PostureDeployment enters a failure state like UPDATE_FAILED or
689
+ CREATE_FAILED or DELETE_FAILED. It will have the failure message for posture deployment's
690
+ CREATE/UPDATE/DELETE methods.
691
+ :param pulumi.Input[str] location: The location of the resource, eg. global`.
692
+ :param pulumi.Input[str] name: Name of the posture deployment instance.
693
+ :param pulumi.Input[str] parent: The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
694
+ :param pulumi.Input[str] posture_deployment_id: ID of the posture deployment.
695
+
696
+
697
+ - - -
698
+ :param pulumi.Input[str] posture_id: Relative name of the posture which needs to be deployed. It should be in the format:
699
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
700
+ :param pulumi.Input[str] posture_revision_id: Revision_id the posture which needs to be deployed.
701
+ :param pulumi.Input[bool] reconciling: If set, there are currently changes in flight to the posture deployment.
702
+ :param pulumi.Input[str] state: State of the posture deployment.
703
+ :param pulumi.Input[str] target_resource: The resource on which the posture should be deployed. This can be in one of the following formats:
704
+ projects/<project_number>
705
+ folders/<folder_number>
706
+ organizations/<organization_id>
707
+ :param pulumi.Input[str] update_time: Time the posture deployment was updated in UTC.
708
+ """
709
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
710
+
711
+ __props__ = _PostureDeploymentState.__new__(_PostureDeploymentState)
712
+
713
+ __props__.__dict__["create_time"] = create_time
714
+ __props__.__dict__["description"] = description
715
+ __props__.__dict__["desired_posture_id"] = desired_posture_id
716
+ __props__.__dict__["desired_posture_revision_id"] = desired_posture_revision_id
717
+ __props__.__dict__["etag"] = etag
718
+ __props__.__dict__["failure_message"] = failure_message
719
+ __props__.__dict__["location"] = location
720
+ __props__.__dict__["name"] = name
721
+ __props__.__dict__["parent"] = parent
722
+ __props__.__dict__["posture_deployment_id"] = posture_deployment_id
723
+ __props__.__dict__["posture_id"] = posture_id
724
+ __props__.__dict__["posture_revision_id"] = posture_revision_id
725
+ __props__.__dict__["reconciling"] = reconciling
726
+ __props__.__dict__["state"] = state
727
+ __props__.__dict__["target_resource"] = target_resource
728
+ __props__.__dict__["update_time"] = update_time
729
+ return PostureDeployment(resource_name, opts=opts, __props__=__props__)
730
+
731
+ @property
732
+ @pulumi.getter(name="createTime")
733
+ def create_time(self) -> pulumi.Output[str]:
734
+ """
735
+ Time the posture deployment was created in UTC.
736
+ """
737
+ return pulumi.get(self, "create_time")
738
+
739
+ @property
740
+ @pulumi.getter
741
+ def description(self) -> pulumi.Output[Optional[str]]:
742
+ """
743
+ Description of the posture deployment.
744
+ """
745
+ return pulumi.get(self, "description")
746
+
747
+ @property
748
+ @pulumi.getter(name="desiredPostureId")
749
+ def desired_posture_id(self) -> pulumi.Output[str]:
750
+ """
751
+ This is an output only optional field which will be filled in case when
752
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
753
+ It denotes the desired Posture to be deployed.
754
+ """
755
+ return pulumi.get(self, "desired_posture_id")
756
+
757
+ @property
758
+ @pulumi.getter(name="desiredPostureRevisionId")
759
+ def desired_posture_revision_id(self) -> pulumi.Output[str]:
760
+ """
761
+ This is an output only optional field which will be filled in case when
762
+ PostureDeployment state is UPDATE_FAILED or CREATE_FAILED or DELETE_FAILED.
763
+ It denotes the desired Posture revision_id to be deployed.
764
+ """
765
+ return pulumi.get(self, "desired_posture_revision_id")
766
+
767
+ @property
768
+ @pulumi.getter
769
+ def etag(self) -> pulumi.Output[str]:
770
+ """
771
+ For Resource freshness validation (https://google.aip.dev/154)
772
+ """
773
+ return pulumi.get(self, "etag")
774
+
775
+ @property
776
+ @pulumi.getter(name="failureMessage")
777
+ def failure_message(self) -> pulumi.Output[str]:
778
+ """
779
+ This is a output only optional field which will be filled in case where
780
+ PostureDeployment enters a failure state like UPDATE_FAILED or
781
+ CREATE_FAILED or DELETE_FAILED. It will have the failure message for posture deployment's
782
+ CREATE/UPDATE/DELETE methods.
783
+ """
784
+ return pulumi.get(self, "failure_message")
785
+
786
+ @property
787
+ @pulumi.getter
788
+ def location(self) -> pulumi.Output[str]:
789
+ """
790
+ The location of the resource, eg. global`.
791
+ """
792
+ return pulumi.get(self, "location")
793
+
794
+ @property
795
+ @pulumi.getter
796
+ def name(self) -> pulumi.Output[str]:
797
+ """
798
+ Name of the posture deployment instance.
799
+ """
800
+ return pulumi.get(self, "name")
801
+
802
+ @property
803
+ @pulumi.getter
804
+ def parent(self) -> pulumi.Output[str]:
805
+ """
806
+ The parent of the resource, an organization. Format should be `organizations/{organization_id}`.
807
+ """
808
+ return pulumi.get(self, "parent")
809
+
810
+ @property
811
+ @pulumi.getter(name="postureDeploymentId")
812
+ def posture_deployment_id(self) -> pulumi.Output[str]:
813
+ """
814
+ ID of the posture deployment.
815
+
816
+
817
+ - - -
818
+ """
819
+ return pulumi.get(self, "posture_deployment_id")
820
+
821
+ @property
822
+ @pulumi.getter(name="postureId")
823
+ def posture_id(self) -> pulumi.Output[str]:
824
+ """
825
+ Relative name of the posture which needs to be deployed. It should be in the format:
826
+ organizations/<ORG_ID>/locations/<LOCATION>/postures/<postureID>
827
+ """
828
+ return pulumi.get(self, "posture_id")
829
+
830
+ @property
831
+ @pulumi.getter(name="postureRevisionId")
832
+ def posture_revision_id(self) -> pulumi.Output[str]:
833
+ """
834
+ Revision_id the posture which needs to be deployed.
835
+ """
836
+ return pulumi.get(self, "posture_revision_id")
837
+
838
+ @property
839
+ @pulumi.getter
840
+ def reconciling(self) -> pulumi.Output[bool]:
841
+ """
842
+ If set, there are currently changes in flight to the posture deployment.
843
+ """
844
+ return pulumi.get(self, "reconciling")
845
+
846
+ @property
847
+ @pulumi.getter
848
+ def state(self) -> pulumi.Output[str]:
849
+ """
850
+ State of the posture deployment.
851
+ """
852
+ return pulumi.get(self, "state")
853
+
854
+ @property
855
+ @pulumi.getter(name="targetResource")
856
+ def target_resource(self) -> pulumi.Output[str]:
857
+ """
858
+ The resource on which the posture should be deployed. This can be in one of the following formats:
859
+ projects/<project_number>
860
+ folders/<folder_number>
861
+ organizations/<organization_id>
862
+ """
863
+ return pulumi.get(self, "target_resource")
864
+
865
+ @property
866
+ @pulumi.getter(name="updateTime")
867
+ def update_time(self) -> pulumi.Output[str]:
868
+ """
869
+ Time the posture deployment was updated in UTC.
870
+ """
871
+ return pulumi.get(self, "update_time")
872
+