pulumi-gcp 7.28.0a1718863699__py3-none-any.whl → 7.28.0a1718995220__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 (58) hide show
  1. pulumi_gcp/__init__.py +59 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +58 -74
  3. pulumi_gcp/accesscontextmanager/access_levels.py +0 -20
  4. pulumi_gcp/accesscontextmanager/outputs.py +58 -74
  5. pulumi_gcp/accesscontextmanager/service_perimeter.py +2 -0
  6. pulumi_gcp/bigtable/_inputs.py +40 -0
  7. pulumi_gcp/bigtable/outputs.py +49 -0
  8. pulumi_gcp/bigtable/table.py +54 -0
  9. pulumi_gcp/cloudbuildv2/_inputs.py +383 -0
  10. pulumi_gcp/cloudbuildv2/connection.py +110 -2
  11. pulumi_gcp/cloudbuildv2/outputs.py +421 -0
  12. pulumi_gcp/composer/__init__.py +3 -0
  13. pulumi_gcp/composer/get_user_workloads_config_map.py +190 -0
  14. pulumi_gcp/composer/get_user_workloads_secret.py +188 -0
  15. pulumi_gcp/composer/user_workloads_config_map.py +475 -0
  16. pulumi_gcp/compute/_inputs.py +4 -2
  17. pulumi_gcp/compute/backend_service.py +28 -48
  18. pulumi_gcp/compute/interconnect.py +4 -4
  19. pulumi_gcp/compute/outputs.py +10 -4
  20. pulumi_gcp/compute/region_backend_service.py +35 -48
  21. pulumi_gcp/compute/region_network_endpoint.py +187 -0
  22. pulumi_gcp/compute/region_network_endpoint_group.py +49 -9
  23. pulumi_gcp/compute/region_target_https_proxy.py +7 -14
  24. pulumi_gcp/compute/target_https_proxy.py +28 -14
  25. pulumi_gcp/config/__init__.pyi +2 -0
  26. pulumi_gcp/config/vars.py +4 -0
  27. pulumi_gcp/container/_inputs.py +2 -2
  28. pulumi_gcp/container/outputs.py +4 -4
  29. pulumi_gcp/discoveryengine/_inputs.py +227 -0
  30. pulumi_gcp/discoveryengine/data_store.py +108 -0
  31. pulumi_gcp/discoveryengine/outputs.py +280 -0
  32. pulumi_gcp/edgecontainer/_inputs.py +107 -1
  33. pulumi_gcp/edgecontainer/outputs.py +123 -1
  34. pulumi_gcp/gkehub/_inputs.py +16 -0
  35. pulumi_gcp/gkehub/outputs.py +15 -1
  36. pulumi_gcp/logging/folder_sink.py +14 -14
  37. pulumi_gcp/logging/organization_sink.py +14 -14
  38. pulumi_gcp/managedkafka/__init__.py +11 -0
  39. pulumi_gcp/managedkafka/_inputs.py +169 -0
  40. pulumi_gcp/managedkafka/cluster.py +807 -0
  41. pulumi_gcp/managedkafka/outputs.py +197 -0
  42. pulumi_gcp/managedkafka/topic.py +599 -0
  43. pulumi_gcp/netapp/__init__.py +1 -0
  44. pulumi_gcp/netapp/active_directory.py +55 -0
  45. pulumi_gcp/netapp/backup.py +903 -0
  46. pulumi_gcp/provider.py +20 -0
  47. pulumi_gcp/pulumi-plugin.json +1 -1
  48. pulumi_gcp/securitycenter/__init__.py +3 -0
  49. pulumi_gcp/securitycenter/_inputs.py +1105 -0
  50. pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py +725 -0
  51. pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py +713 -0
  52. pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py +706 -0
  53. pulumi_gcp/securitycenter/outputs.py +1048 -0
  54. pulumi_gcp/vertex/ai_feature_online_store.py +37 -8
  55. {pulumi_gcp-7.28.0a1718863699.dist-info → pulumi_gcp-7.28.0a1718995220.dist-info}/METADATA +1 -1
  56. {pulumi_gcp-7.28.0a1718863699.dist-info → pulumi_gcp-7.28.0a1718995220.dist-info}/RECORD +58 -46
  57. {pulumi_gcp-7.28.0a1718863699.dist-info → pulumi_gcp-7.28.0a1718995220.dist-info}/WHEEL +0 -0
  58. {pulumi_gcp-7.28.0a1718863699.dist-info → pulumi_gcp-7.28.0a1718995220.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,725 @@
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
+ from . import outputs
12
+ from ._inputs import *
13
+
14
+ __all__ = ['ManagementFolderSecurityHealthAnalyticsCustomModuleArgs', 'ManagementFolderSecurityHealthAnalyticsCustomModule']
15
+
16
+ @pulumi.input_type
17
+ class ManagementFolderSecurityHealthAnalyticsCustomModuleArgs:
18
+ def __init__(__self__, *,
19
+ folder: pulumi.Input[str],
20
+ custom_config: Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']] = None,
21
+ display_name: Optional[pulumi.Input[str]] = None,
22
+ enablement_state: Optional[pulumi.Input[str]] = None,
23
+ location: Optional[pulumi.Input[str]] = None):
24
+ """
25
+ The set of arguments for constructing a ManagementFolderSecurityHealthAnalyticsCustomModule resource.
26
+ :param pulumi.Input[str] folder: Numerical ID of the parent folder.
27
+
28
+
29
+ - - -
30
+ :param pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs'] custom_config: The user specified custom configuration for the module.
31
+ Structure is documented below.
32
+ :param pulumi.Input[str] display_name: The display name of the Security Health Analytics custom module. This
33
+ display name becomes the finding category for all findings that are
34
+ returned by this custom module. The display name must be between 1 and
35
+ 128 characters, start with a lowercase letter, and contain alphanumeric
36
+ characters or underscores only.
37
+ :param pulumi.Input[str] enablement_state: The enablement state of the custom module.
38
+ Possible values are: `ENABLED`, `DISABLED`.
39
+ :param pulumi.Input[str] location: Location ID of the parent organization. If not provided, 'global' will be used as the default location.
40
+ """
41
+ pulumi.set(__self__, "folder", folder)
42
+ if custom_config is not None:
43
+ pulumi.set(__self__, "custom_config", custom_config)
44
+ if display_name is not None:
45
+ pulumi.set(__self__, "display_name", display_name)
46
+ if enablement_state is not None:
47
+ pulumi.set(__self__, "enablement_state", enablement_state)
48
+ if location is not None:
49
+ pulumi.set(__self__, "location", location)
50
+
51
+ @property
52
+ @pulumi.getter
53
+ def folder(self) -> pulumi.Input[str]:
54
+ """
55
+ Numerical ID of the parent folder.
56
+
57
+
58
+ - - -
59
+ """
60
+ return pulumi.get(self, "folder")
61
+
62
+ @folder.setter
63
+ def folder(self, value: pulumi.Input[str]):
64
+ pulumi.set(self, "folder", value)
65
+
66
+ @property
67
+ @pulumi.getter(name="customConfig")
68
+ def custom_config(self) -> Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]:
69
+ """
70
+ The user specified custom configuration for the module.
71
+ Structure is documented below.
72
+ """
73
+ return pulumi.get(self, "custom_config")
74
+
75
+ @custom_config.setter
76
+ def custom_config(self, value: Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]):
77
+ pulumi.set(self, "custom_config", value)
78
+
79
+ @property
80
+ @pulumi.getter(name="displayName")
81
+ def display_name(self) -> Optional[pulumi.Input[str]]:
82
+ """
83
+ The display name of the Security Health Analytics custom module. This
84
+ display name becomes the finding category for all findings that are
85
+ returned by this custom module. The display name must be between 1 and
86
+ 128 characters, start with a lowercase letter, and contain alphanumeric
87
+ characters or underscores only.
88
+ """
89
+ return pulumi.get(self, "display_name")
90
+
91
+ @display_name.setter
92
+ def display_name(self, value: Optional[pulumi.Input[str]]):
93
+ pulumi.set(self, "display_name", value)
94
+
95
+ @property
96
+ @pulumi.getter(name="enablementState")
97
+ def enablement_state(self) -> Optional[pulumi.Input[str]]:
98
+ """
99
+ The enablement state of the custom module.
100
+ Possible values are: `ENABLED`, `DISABLED`.
101
+ """
102
+ return pulumi.get(self, "enablement_state")
103
+
104
+ @enablement_state.setter
105
+ def enablement_state(self, value: Optional[pulumi.Input[str]]):
106
+ pulumi.set(self, "enablement_state", value)
107
+
108
+ @property
109
+ @pulumi.getter
110
+ def location(self) -> Optional[pulumi.Input[str]]:
111
+ """
112
+ Location ID of the parent organization. If not provided, 'global' will be used as the default location.
113
+ """
114
+ return pulumi.get(self, "location")
115
+
116
+ @location.setter
117
+ def location(self, value: Optional[pulumi.Input[str]]):
118
+ pulumi.set(self, "location", value)
119
+
120
+
121
+ @pulumi.input_type
122
+ class _ManagementFolderSecurityHealthAnalyticsCustomModuleState:
123
+ def __init__(__self__, *,
124
+ ancestor_module: Optional[pulumi.Input[str]] = None,
125
+ custom_config: Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']] = None,
126
+ display_name: Optional[pulumi.Input[str]] = None,
127
+ enablement_state: Optional[pulumi.Input[str]] = None,
128
+ folder: Optional[pulumi.Input[str]] = None,
129
+ last_editor: Optional[pulumi.Input[str]] = None,
130
+ location: Optional[pulumi.Input[str]] = None,
131
+ name: Optional[pulumi.Input[str]] = None,
132
+ update_time: Optional[pulumi.Input[str]] = None):
133
+ """
134
+ Input properties used for looking up and filtering ManagementFolderSecurityHealthAnalyticsCustomModule resources.
135
+ :param pulumi.Input[str] ancestor_module: If empty, indicates that the custom module was created in the organization, folder,
136
+ or project in which you are viewing the custom module. Otherwise, ancestor_module
137
+ specifies the organization or folder from which the custom module is inherited.
138
+ :param pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs'] custom_config: The user specified custom configuration for the module.
139
+ Structure is documented below.
140
+ :param pulumi.Input[str] display_name: The display name of the Security Health Analytics custom module. This
141
+ display name becomes the finding category for all findings that are
142
+ returned by this custom module. The display name must be between 1 and
143
+ 128 characters, start with a lowercase letter, and contain alphanumeric
144
+ characters or underscores only.
145
+ :param pulumi.Input[str] enablement_state: The enablement state of the custom module.
146
+ Possible values are: `ENABLED`, `DISABLED`.
147
+ :param pulumi.Input[str] folder: Numerical ID of the parent folder.
148
+
149
+
150
+ - - -
151
+ :param pulumi.Input[str] last_editor: The editor that last updated the custom module.
152
+ :param pulumi.Input[str] location: Location ID of the parent organization. If not provided, 'global' will be used as the default location.
153
+ :param pulumi.Input[str] name: The resource name of the custom module. Its format is "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{securityHealthAnalyticsCustomModule}".
154
+ The id {securityHealthAnalyticsCustomModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
155
+ :param pulumi.Input[str] update_time: The time at which the custom module was last updated.
156
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and
157
+ up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
158
+ """
159
+ if ancestor_module is not None:
160
+ pulumi.set(__self__, "ancestor_module", ancestor_module)
161
+ if custom_config is not None:
162
+ pulumi.set(__self__, "custom_config", custom_config)
163
+ if display_name is not None:
164
+ pulumi.set(__self__, "display_name", display_name)
165
+ if enablement_state is not None:
166
+ pulumi.set(__self__, "enablement_state", enablement_state)
167
+ if folder is not None:
168
+ pulumi.set(__self__, "folder", folder)
169
+ if last_editor is not None:
170
+ pulumi.set(__self__, "last_editor", last_editor)
171
+ if location is not None:
172
+ pulumi.set(__self__, "location", location)
173
+ if name is not None:
174
+ pulumi.set(__self__, "name", name)
175
+ if update_time is not None:
176
+ pulumi.set(__self__, "update_time", update_time)
177
+
178
+ @property
179
+ @pulumi.getter(name="ancestorModule")
180
+ def ancestor_module(self) -> Optional[pulumi.Input[str]]:
181
+ """
182
+ If empty, indicates that the custom module was created in the organization, folder,
183
+ or project in which you are viewing the custom module. Otherwise, ancestor_module
184
+ specifies the organization or folder from which the custom module is inherited.
185
+ """
186
+ return pulumi.get(self, "ancestor_module")
187
+
188
+ @ancestor_module.setter
189
+ def ancestor_module(self, value: Optional[pulumi.Input[str]]):
190
+ pulumi.set(self, "ancestor_module", value)
191
+
192
+ @property
193
+ @pulumi.getter(name="customConfig")
194
+ def custom_config(self) -> Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]:
195
+ """
196
+ The user specified custom configuration for the module.
197
+ Structure is documented below.
198
+ """
199
+ return pulumi.get(self, "custom_config")
200
+
201
+ @custom_config.setter
202
+ def custom_config(self, value: Optional[pulumi.Input['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]):
203
+ pulumi.set(self, "custom_config", value)
204
+
205
+ @property
206
+ @pulumi.getter(name="displayName")
207
+ def display_name(self) -> Optional[pulumi.Input[str]]:
208
+ """
209
+ The display name of the Security Health Analytics custom module. This
210
+ display name becomes the finding category for all findings that are
211
+ returned by this custom module. The display name must be between 1 and
212
+ 128 characters, start with a lowercase letter, and contain alphanumeric
213
+ characters or underscores only.
214
+ """
215
+ return pulumi.get(self, "display_name")
216
+
217
+ @display_name.setter
218
+ def display_name(self, value: Optional[pulumi.Input[str]]):
219
+ pulumi.set(self, "display_name", value)
220
+
221
+ @property
222
+ @pulumi.getter(name="enablementState")
223
+ def enablement_state(self) -> Optional[pulumi.Input[str]]:
224
+ """
225
+ The enablement state of the custom module.
226
+ Possible values are: `ENABLED`, `DISABLED`.
227
+ """
228
+ return pulumi.get(self, "enablement_state")
229
+
230
+ @enablement_state.setter
231
+ def enablement_state(self, value: Optional[pulumi.Input[str]]):
232
+ pulumi.set(self, "enablement_state", value)
233
+
234
+ @property
235
+ @pulumi.getter
236
+ def folder(self) -> Optional[pulumi.Input[str]]:
237
+ """
238
+ Numerical ID of the parent folder.
239
+
240
+
241
+ - - -
242
+ """
243
+ return pulumi.get(self, "folder")
244
+
245
+ @folder.setter
246
+ def folder(self, value: Optional[pulumi.Input[str]]):
247
+ pulumi.set(self, "folder", value)
248
+
249
+ @property
250
+ @pulumi.getter(name="lastEditor")
251
+ def last_editor(self) -> Optional[pulumi.Input[str]]:
252
+ """
253
+ The editor that last updated the custom module.
254
+ """
255
+ return pulumi.get(self, "last_editor")
256
+
257
+ @last_editor.setter
258
+ def last_editor(self, value: Optional[pulumi.Input[str]]):
259
+ pulumi.set(self, "last_editor", value)
260
+
261
+ @property
262
+ @pulumi.getter
263
+ def location(self) -> Optional[pulumi.Input[str]]:
264
+ """
265
+ Location ID of the parent organization. If not provided, 'global' will be used as the default location.
266
+ """
267
+ return pulumi.get(self, "location")
268
+
269
+ @location.setter
270
+ def location(self, value: Optional[pulumi.Input[str]]):
271
+ pulumi.set(self, "location", value)
272
+
273
+ @property
274
+ @pulumi.getter
275
+ def name(self) -> Optional[pulumi.Input[str]]:
276
+ """
277
+ The resource name of the custom module. Its format is "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{securityHealthAnalyticsCustomModule}".
278
+ The id {securityHealthAnalyticsCustomModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
279
+ """
280
+ return pulumi.get(self, "name")
281
+
282
+ @name.setter
283
+ def name(self, value: Optional[pulumi.Input[str]]):
284
+ pulumi.set(self, "name", value)
285
+
286
+ @property
287
+ @pulumi.getter(name="updateTime")
288
+ def update_time(self) -> Optional[pulumi.Input[str]]:
289
+ """
290
+ The time at which the custom module was last updated.
291
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and
292
+ up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
293
+ """
294
+ return pulumi.get(self, "update_time")
295
+
296
+ @update_time.setter
297
+ def update_time(self, value: Optional[pulumi.Input[str]]):
298
+ pulumi.set(self, "update_time", value)
299
+
300
+
301
+ class ManagementFolderSecurityHealthAnalyticsCustomModule(pulumi.CustomResource):
302
+ @overload
303
+ def __init__(__self__,
304
+ resource_name: str,
305
+ opts: Optional[pulumi.ResourceOptions] = None,
306
+ custom_config: Optional[pulumi.Input[pulumi.InputType['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]] = None,
307
+ display_name: Optional[pulumi.Input[str]] = None,
308
+ enablement_state: Optional[pulumi.Input[str]] = None,
309
+ folder: Optional[pulumi.Input[str]] = None,
310
+ location: Optional[pulumi.Input[str]] = None,
311
+ __props__=None):
312
+ """
313
+ Represents an instance of a Security Health Analytics custom module, including
314
+ its full module name, display name, enablement state, and last updated time.
315
+ You can create a custom module at the organization, folder, or project level.
316
+ Custom modules that you create at the organization or folder level are inherited
317
+ by the child folders and projects.
318
+
319
+ To get more information about FolderSecurityHealthAnalyticsCustomModule, see:
320
+
321
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/folders.locations.securityHealthAnalyticsCustomModules)
322
+ * How-to Guides
323
+ * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)
324
+
325
+ ## Example Usage
326
+
327
+ ### Scc Management Folder Security Health Analytics Custom Module Basic
328
+
329
+ ```python
330
+ import pulumi
331
+ import pulumi_gcp as gcp
332
+
333
+ folder = gcp.organizations.Folder("folder",
334
+ parent="organizations/123456789",
335
+ display_name="folder-name")
336
+ example = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule("example",
337
+ folder=folder.folder_id,
338
+ location="global",
339
+ display_name="basic_custom_module",
340
+ enablement_state="ENABLED",
341
+ custom_config=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs(
342
+ predicate=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs(
343
+ expression="resource.rotationPeriod > duration(\\"2592000s\\")",
344
+ ),
345
+ resource_selector=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs(
346
+ resource_types=["cloudkms.googleapis.com/CryptoKey"],
347
+ ),
348
+ description="The rotation period of the identified cryptokey resource exceeds 30 days.",
349
+ recommendation="Set the rotation period to at most 30 days.",
350
+ severity="MEDIUM",
351
+ ))
352
+ ```
353
+ ### Scc Management Folder Security Health Analytics Custom Module Full
354
+
355
+ ```python
356
+ import pulumi
357
+ import pulumi_gcp as gcp
358
+
359
+ folder = gcp.organizations.Folder("folder",
360
+ parent="organizations/123456789",
361
+ display_name="folder-name")
362
+ example = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule("example",
363
+ folder=folder.folder_id,
364
+ location="global",
365
+ display_name="full_custom_module",
366
+ enablement_state="ENABLED",
367
+ custom_config=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs(
368
+ predicate=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs(
369
+ expression="resource.rotationPeriod > duration(\\"2592000s\\")",
370
+ title="Purpose of the expression",
371
+ description="description of the expression",
372
+ location="location of the expression",
373
+ ),
374
+ custom_output=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs(
375
+ properties=[gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs(
376
+ name="duration",
377
+ value_expression=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs(
378
+ expression="resource.rotationPeriod",
379
+ title="Purpose of the expression",
380
+ description="description of the expression",
381
+ location="location of the expression",
382
+ ),
383
+ )],
384
+ ),
385
+ resource_selector=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs(
386
+ resource_types=["cloudkms.googleapis.com/CryptoKey"],
387
+ ),
388
+ severity="LOW",
389
+ description="Description of the custom module",
390
+ recommendation="Steps to resolve violation",
391
+ ))
392
+ ```
393
+
394
+ ## Import
395
+
396
+ FolderSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:
397
+
398
+ * `folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`
399
+
400
+ * `{{folder}}/{{location}}/{{name}}`
401
+
402
+ When using the `pulumi import` command, FolderSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:
403
+
404
+ ```sh
405
+ $ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}
406
+ ```
407
+
408
+ ```sh
409
+ $ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default {{folder}}/{{location}}/{{name}}
410
+ ```
411
+
412
+ :param str resource_name: The name of the resource.
413
+ :param pulumi.ResourceOptions opts: Options for the resource.
414
+ :param pulumi.Input[pulumi.InputType['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']] custom_config: The user specified custom configuration for the module.
415
+ Structure is documented below.
416
+ :param pulumi.Input[str] display_name: The display name of the Security Health Analytics custom module. This
417
+ display name becomes the finding category for all findings that are
418
+ returned by this custom module. The display name must be between 1 and
419
+ 128 characters, start with a lowercase letter, and contain alphanumeric
420
+ characters or underscores only.
421
+ :param pulumi.Input[str] enablement_state: The enablement state of the custom module.
422
+ Possible values are: `ENABLED`, `DISABLED`.
423
+ :param pulumi.Input[str] folder: Numerical ID of the parent folder.
424
+
425
+
426
+ - - -
427
+ :param pulumi.Input[str] location: Location ID of the parent organization. If not provided, 'global' will be used as the default location.
428
+ """
429
+ ...
430
+ @overload
431
+ def __init__(__self__,
432
+ resource_name: str,
433
+ args: ManagementFolderSecurityHealthAnalyticsCustomModuleArgs,
434
+ opts: Optional[pulumi.ResourceOptions] = None):
435
+ """
436
+ Represents an instance of a Security Health Analytics custom module, including
437
+ its full module name, display name, enablement state, and last updated time.
438
+ You can create a custom module at the organization, folder, or project level.
439
+ Custom modules that you create at the organization or folder level are inherited
440
+ by the child folders and projects.
441
+
442
+ To get more information about FolderSecurityHealthAnalyticsCustomModule, see:
443
+
444
+ * [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/folders.locations.securityHealthAnalyticsCustomModules)
445
+ * How-to Guides
446
+ * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)
447
+
448
+ ## Example Usage
449
+
450
+ ### Scc Management Folder Security Health Analytics Custom Module Basic
451
+
452
+ ```python
453
+ import pulumi
454
+ import pulumi_gcp as gcp
455
+
456
+ folder = gcp.organizations.Folder("folder",
457
+ parent="organizations/123456789",
458
+ display_name="folder-name")
459
+ example = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule("example",
460
+ folder=folder.folder_id,
461
+ location="global",
462
+ display_name="basic_custom_module",
463
+ enablement_state="ENABLED",
464
+ custom_config=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs(
465
+ predicate=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs(
466
+ expression="resource.rotationPeriod > duration(\\"2592000s\\")",
467
+ ),
468
+ resource_selector=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs(
469
+ resource_types=["cloudkms.googleapis.com/CryptoKey"],
470
+ ),
471
+ description="The rotation period of the identified cryptokey resource exceeds 30 days.",
472
+ recommendation="Set the rotation period to at most 30 days.",
473
+ severity="MEDIUM",
474
+ ))
475
+ ```
476
+ ### Scc Management Folder Security Health Analytics Custom Module Full
477
+
478
+ ```python
479
+ import pulumi
480
+ import pulumi_gcp as gcp
481
+
482
+ folder = gcp.organizations.Folder("folder",
483
+ parent="organizations/123456789",
484
+ display_name="folder-name")
485
+ example = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule("example",
486
+ folder=folder.folder_id,
487
+ location="global",
488
+ display_name="full_custom_module",
489
+ enablement_state="ENABLED",
490
+ custom_config=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs(
491
+ predicate=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs(
492
+ expression="resource.rotationPeriod > duration(\\"2592000s\\")",
493
+ title="Purpose of the expression",
494
+ description="description of the expression",
495
+ location="location of the expression",
496
+ ),
497
+ custom_output=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs(
498
+ properties=[gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs(
499
+ name="duration",
500
+ value_expression=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs(
501
+ expression="resource.rotationPeriod",
502
+ title="Purpose of the expression",
503
+ description="description of the expression",
504
+ location="location of the expression",
505
+ ),
506
+ )],
507
+ ),
508
+ resource_selector=gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs(
509
+ resource_types=["cloudkms.googleapis.com/CryptoKey"],
510
+ ),
511
+ severity="LOW",
512
+ description="Description of the custom module",
513
+ recommendation="Steps to resolve violation",
514
+ ))
515
+ ```
516
+
517
+ ## Import
518
+
519
+ FolderSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:
520
+
521
+ * `folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`
522
+
523
+ * `{{folder}}/{{location}}/{{name}}`
524
+
525
+ When using the `pulumi import` command, FolderSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:
526
+
527
+ ```sh
528
+ $ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}
529
+ ```
530
+
531
+ ```sh
532
+ $ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default {{folder}}/{{location}}/{{name}}
533
+ ```
534
+
535
+ :param str resource_name: The name of the resource.
536
+ :param ManagementFolderSecurityHealthAnalyticsCustomModuleArgs args: The arguments to use to populate this resource's properties.
537
+ :param pulumi.ResourceOptions opts: Options for the resource.
538
+ """
539
+ ...
540
+ def __init__(__self__, resource_name: str, *args, **kwargs):
541
+ resource_args, opts = _utilities.get_resource_args_opts(ManagementFolderSecurityHealthAnalyticsCustomModuleArgs, pulumi.ResourceOptions, *args, **kwargs)
542
+ if resource_args is not None:
543
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
544
+ else:
545
+ __self__._internal_init(resource_name, *args, **kwargs)
546
+
547
+ def _internal_init(__self__,
548
+ resource_name: str,
549
+ opts: Optional[pulumi.ResourceOptions] = None,
550
+ custom_config: Optional[pulumi.Input[pulumi.InputType['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]] = None,
551
+ display_name: Optional[pulumi.Input[str]] = None,
552
+ enablement_state: Optional[pulumi.Input[str]] = None,
553
+ folder: Optional[pulumi.Input[str]] = None,
554
+ location: Optional[pulumi.Input[str]] = None,
555
+ __props__=None):
556
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
557
+ if not isinstance(opts, pulumi.ResourceOptions):
558
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
559
+ if opts.id is None:
560
+ if __props__ is not None:
561
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
562
+ __props__ = ManagementFolderSecurityHealthAnalyticsCustomModuleArgs.__new__(ManagementFolderSecurityHealthAnalyticsCustomModuleArgs)
563
+
564
+ __props__.__dict__["custom_config"] = custom_config
565
+ __props__.__dict__["display_name"] = display_name
566
+ __props__.__dict__["enablement_state"] = enablement_state
567
+ if folder is None and not opts.urn:
568
+ raise TypeError("Missing required property 'folder'")
569
+ __props__.__dict__["folder"] = folder
570
+ __props__.__dict__["location"] = location
571
+ __props__.__dict__["ancestor_module"] = None
572
+ __props__.__dict__["last_editor"] = None
573
+ __props__.__dict__["name"] = None
574
+ __props__.__dict__["update_time"] = None
575
+ super(ManagementFolderSecurityHealthAnalyticsCustomModule, __self__).__init__(
576
+ 'gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule',
577
+ resource_name,
578
+ __props__,
579
+ opts)
580
+
581
+ @staticmethod
582
+ def get(resource_name: str,
583
+ id: pulumi.Input[str],
584
+ opts: Optional[pulumi.ResourceOptions] = None,
585
+ ancestor_module: Optional[pulumi.Input[str]] = None,
586
+ custom_config: Optional[pulumi.Input[pulumi.InputType['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']]] = None,
587
+ display_name: Optional[pulumi.Input[str]] = None,
588
+ enablement_state: Optional[pulumi.Input[str]] = None,
589
+ folder: Optional[pulumi.Input[str]] = None,
590
+ last_editor: Optional[pulumi.Input[str]] = None,
591
+ location: Optional[pulumi.Input[str]] = None,
592
+ name: Optional[pulumi.Input[str]] = None,
593
+ update_time: Optional[pulumi.Input[str]] = None) -> 'ManagementFolderSecurityHealthAnalyticsCustomModule':
594
+ """
595
+ Get an existing ManagementFolderSecurityHealthAnalyticsCustomModule resource's state with the given name, id, and optional extra
596
+ properties used to qualify the lookup.
597
+
598
+ :param str resource_name: The unique name of the resulting resource.
599
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
600
+ :param pulumi.ResourceOptions opts: Options for the resource.
601
+ :param pulumi.Input[str] ancestor_module: If empty, indicates that the custom module was created in the organization, folder,
602
+ or project in which you are viewing the custom module. Otherwise, ancestor_module
603
+ specifies the organization or folder from which the custom module is inherited.
604
+ :param pulumi.Input[pulumi.InputType['ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs']] custom_config: The user specified custom configuration for the module.
605
+ Structure is documented below.
606
+ :param pulumi.Input[str] display_name: The display name of the Security Health Analytics custom module. This
607
+ display name becomes the finding category for all findings that are
608
+ returned by this custom module. The display name must be between 1 and
609
+ 128 characters, start with a lowercase letter, and contain alphanumeric
610
+ characters or underscores only.
611
+ :param pulumi.Input[str] enablement_state: The enablement state of the custom module.
612
+ Possible values are: `ENABLED`, `DISABLED`.
613
+ :param pulumi.Input[str] folder: Numerical ID of the parent folder.
614
+
615
+
616
+ - - -
617
+ :param pulumi.Input[str] last_editor: The editor that last updated the custom module.
618
+ :param pulumi.Input[str] location: Location ID of the parent organization. If not provided, 'global' will be used as the default location.
619
+ :param pulumi.Input[str] name: The resource name of the custom module. Its format is "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{securityHealthAnalyticsCustomModule}".
620
+ The id {securityHealthAnalyticsCustomModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
621
+ :param pulumi.Input[str] update_time: The time at which the custom module was last updated.
622
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and
623
+ up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
624
+ """
625
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
626
+
627
+ __props__ = _ManagementFolderSecurityHealthAnalyticsCustomModuleState.__new__(_ManagementFolderSecurityHealthAnalyticsCustomModuleState)
628
+
629
+ __props__.__dict__["ancestor_module"] = ancestor_module
630
+ __props__.__dict__["custom_config"] = custom_config
631
+ __props__.__dict__["display_name"] = display_name
632
+ __props__.__dict__["enablement_state"] = enablement_state
633
+ __props__.__dict__["folder"] = folder
634
+ __props__.__dict__["last_editor"] = last_editor
635
+ __props__.__dict__["location"] = location
636
+ __props__.__dict__["name"] = name
637
+ __props__.__dict__["update_time"] = update_time
638
+ return ManagementFolderSecurityHealthAnalyticsCustomModule(resource_name, opts=opts, __props__=__props__)
639
+
640
+ @property
641
+ @pulumi.getter(name="ancestorModule")
642
+ def ancestor_module(self) -> pulumi.Output[str]:
643
+ """
644
+ If empty, indicates that the custom module was created in the organization, folder,
645
+ or project in which you are viewing the custom module. Otherwise, ancestor_module
646
+ specifies the organization or folder from which the custom module is inherited.
647
+ """
648
+ return pulumi.get(self, "ancestor_module")
649
+
650
+ @property
651
+ @pulumi.getter(name="customConfig")
652
+ def custom_config(self) -> pulumi.Output[Optional['outputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfig']]:
653
+ """
654
+ The user specified custom configuration for the module.
655
+ Structure is documented below.
656
+ """
657
+ return pulumi.get(self, "custom_config")
658
+
659
+ @property
660
+ @pulumi.getter(name="displayName")
661
+ def display_name(self) -> pulumi.Output[Optional[str]]:
662
+ """
663
+ The display name of the Security Health Analytics custom module. This
664
+ display name becomes the finding category for all findings that are
665
+ returned by this custom module. The display name must be between 1 and
666
+ 128 characters, start with a lowercase letter, and contain alphanumeric
667
+ characters or underscores only.
668
+ """
669
+ return pulumi.get(self, "display_name")
670
+
671
+ @property
672
+ @pulumi.getter(name="enablementState")
673
+ def enablement_state(self) -> pulumi.Output[Optional[str]]:
674
+ """
675
+ The enablement state of the custom module.
676
+ Possible values are: `ENABLED`, `DISABLED`.
677
+ """
678
+ return pulumi.get(self, "enablement_state")
679
+
680
+ @property
681
+ @pulumi.getter
682
+ def folder(self) -> pulumi.Output[str]:
683
+ """
684
+ Numerical ID of the parent folder.
685
+
686
+
687
+ - - -
688
+ """
689
+ return pulumi.get(self, "folder")
690
+
691
+ @property
692
+ @pulumi.getter(name="lastEditor")
693
+ def last_editor(self) -> pulumi.Output[str]:
694
+ """
695
+ The editor that last updated the custom module.
696
+ """
697
+ return pulumi.get(self, "last_editor")
698
+
699
+ @property
700
+ @pulumi.getter
701
+ def location(self) -> pulumi.Output[Optional[str]]:
702
+ """
703
+ Location ID of the parent organization. If not provided, 'global' will be used as the default location.
704
+ """
705
+ return pulumi.get(self, "location")
706
+
707
+ @property
708
+ @pulumi.getter
709
+ def name(self) -> pulumi.Output[str]:
710
+ """
711
+ The resource name of the custom module. Its format is "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{securityHealthAnalyticsCustomModule}".
712
+ The id {securityHealthAnalyticsCustomModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
713
+ """
714
+ return pulumi.get(self, "name")
715
+
716
+ @property
717
+ @pulumi.getter(name="updateTime")
718
+ def update_time(self) -> pulumi.Output[str]:
719
+ """
720
+ The time at which the custom module was last updated.
721
+ A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and
722
+ up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
723
+ """
724
+ return pulumi.get(self, "update_time")
725
+