pulumi-gcp 7.15.0a1711038061__py3-none-any.whl → 7.16.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 (83) hide show
  1. pulumi_gcp/__init__.py +102 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +1 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +74 -58
  4. pulumi_gcp/accesscontextmanager/outputs.py +74 -58
  5. pulumi_gcp/accesscontextmanager/service_perimeter.py +0 -2
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +345 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +80 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +86 -0
  9. pulumi_gcp/accesscontextmanager/service_perimeter_resource.py +4 -2
  10. pulumi_gcp/apphub/__init__.py +15 -0
  11. pulumi_gcp/apphub/_inputs.py +1016 -0
  12. pulumi_gcp/apphub/application.py +775 -0
  13. pulumi_gcp/apphub/get_discovered_service.py +180 -0
  14. pulumi_gcp/apphub/get_discovered_workload.py +180 -0
  15. pulumi_gcp/apphub/outputs.py +1206 -0
  16. pulumi_gcp/apphub/service.py +1121 -0
  17. pulumi_gcp/apphub/service_project_attachment.py +516 -0
  18. pulumi_gcp/apphub/workload.py +1197 -0
  19. pulumi_gcp/cloudquota/__init__.py +10 -0
  20. pulumi_gcp/cloudquota/get_s_quota_info.py +322 -0
  21. pulumi_gcp/cloudquota/get_s_quota_infos.py +136 -0
  22. pulumi_gcp/cloudquota/outputs.py +375 -0
  23. pulumi_gcp/cloudrunv2/_inputs.py +85 -4
  24. pulumi_gcp/cloudrunv2/get_service.py +11 -1
  25. pulumi_gcp/cloudrunv2/outputs.py +165 -6
  26. pulumi_gcp/cloudrunv2/service.py +60 -6
  27. pulumi_gcp/composer/_inputs.py +16 -0
  28. pulumi_gcp/composer/outputs.py +23 -0
  29. pulumi_gcp/compute/_inputs.py +109 -11
  30. pulumi_gcp/compute/outputs.py +144 -13
  31. pulumi_gcp/compute/region_network_endpoint_group.py +30 -0
  32. pulumi_gcp/compute/region_url_map.py +152 -0
  33. pulumi_gcp/config/__init__.pyi +4 -0
  34. pulumi_gcp/config/vars.py +8 -0
  35. pulumi_gcp/dataform/repository.py +4 -74
  36. pulumi_gcp/firebase/__init__.py +1 -0
  37. pulumi_gcp/firebase/android_app.py +41 -40
  38. pulumi_gcp/firebase/app_check_device_check_config.py +572 -0
  39. pulumi_gcp/firestore/_inputs.py +69 -0
  40. pulumi_gcp/firestore/database.py +206 -0
  41. pulumi_gcp/firestore/index.py +34 -48
  42. pulumi_gcp/firestore/outputs.py +80 -0
  43. pulumi_gcp/gkeonprem/_inputs.py +1 -3
  44. pulumi_gcp/gkeonprem/outputs.py +1 -3
  45. pulumi_gcp/gkeonprem/v_mware_cluster.py +2 -0
  46. pulumi_gcp/iap/__init__.py +5 -0
  47. pulumi_gcp/iap/_inputs.py +100 -0
  48. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +172 -0
  49. pulumi_gcp/iap/outputs.py +76 -0
  50. pulumi_gcp/iap/tunnel_dest_group.py +524 -0
  51. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +858 -0
  52. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +858 -0
  53. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +760 -0
  54. pulumi_gcp/kms/__init__.py +1 -0
  55. pulumi_gcp/kms/_inputs.py +246 -0
  56. pulumi_gcp/kms/ekm_connection.py +610 -0
  57. pulumi_gcp/kms/outputs.py +242 -0
  58. pulumi_gcp/monitoring/_inputs.py +2 -0
  59. pulumi_gcp/monitoring/outputs.py +2 -0
  60. pulumi_gcp/networksecurity/__init__.py +1 -0
  61. pulumi_gcp/networksecurity/firewall_endpoint.py +48 -0
  62. pulumi_gcp/networksecurity/firewall_endpoint_association.py +753 -0
  63. pulumi_gcp/notebooks/instance.py +8 -0
  64. pulumi_gcp/orgpolicy/policy.py +2 -2
  65. pulumi_gcp/provider.py +40 -0
  66. pulumi_gcp/pubsub/_inputs.py +108 -0
  67. pulumi_gcp/pubsub/get_topic.py +11 -1
  68. pulumi_gcp/pubsub/outputs.py +213 -0
  69. pulumi_gcp/pubsub/subscription.py +4 -4
  70. pulumi_gcp/pubsub/topic.py +92 -0
  71. pulumi_gcp/securityposture/posture.py +2 -2
  72. pulumi_gcp/securityposture/posture_deployment.py +2 -2
  73. pulumi_gcp/storage/_inputs.py +72 -15
  74. pulumi_gcp/storage/bucket.py +54 -0
  75. pulumi_gcp/storage/get_bucket.py +11 -1
  76. pulumi_gcp/storage/outputs.py +110 -14
  77. pulumi_gcp/workstations/_inputs.py +247 -4
  78. pulumi_gcp/workstations/outputs.py +261 -5
  79. pulumi_gcp/workstations/workstation_config.py +160 -0
  80. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/METADATA +1 -1
  81. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/RECORD +83 -61
  82. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/WHEEL +0 -0
  83. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,760 @@
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__ = ['TunnelDestGroupIamPolicyArgs', 'TunnelDestGroupIamPolicy']
13
+
14
+ @pulumi.input_type
15
+ class TunnelDestGroupIamPolicyArgs:
16
+ def __init__(__self__, *,
17
+ dest_group: pulumi.Input[str],
18
+ policy_data: pulumi.Input[str],
19
+ project: Optional[pulumi.Input[str]] = None,
20
+ region: Optional[pulumi.Input[str]] = None):
21
+ """
22
+ The set of arguments for constructing a TunnelDestGroupIamPolicy resource.
23
+ :param pulumi.Input[str] policy_data: The policy data generated by
24
+ a `organizations_get_iam_policy` data source.
25
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
26
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
27
+
28
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
29
+ Each entry can have one of the following values:
30
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
31
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
32
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
33
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
34
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
35
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
36
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
37
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
38
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
39
+ :param pulumi.Input[str] region: The region of the tunnel group. Must be the same as the network resources in the group.
40
+ Used to find the parent resource to bind the IAM policy to. If not specified,
41
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
42
+ region is specified, it is taken from the provider configuration.
43
+ """
44
+ pulumi.set(__self__, "dest_group", dest_group)
45
+ pulumi.set(__self__, "policy_data", policy_data)
46
+ if project is not None:
47
+ pulumi.set(__self__, "project", project)
48
+ if region is not None:
49
+ pulumi.set(__self__, "region", region)
50
+
51
+ @property
52
+ @pulumi.getter(name="destGroup")
53
+ def dest_group(self) -> pulumi.Input[str]:
54
+ return pulumi.get(self, "dest_group")
55
+
56
+ @dest_group.setter
57
+ def dest_group(self, value: pulumi.Input[str]):
58
+ pulumi.set(self, "dest_group", value)
59
+
60
+ @property
61
+ @pulumi.getter(name="policyData")
62
+ def policy_data(self) -> pulumi.Input[str]:
63
+ """
64
+ The policy data generated by
65
+ a `organizations_get_iam_policy` data source.
66
+ """
67
+ return pulumi.get(self, "policy_data")
68
+
69
+ @policy_data.setter
70
+ def policy_data(self, value: pulumi.Input[str]):
71
+ pulumi.set(self, "policy_data", value)
72
+
73
+ @property
74
+ @pulumi.getter
75
+ def project(self) -> Optional[pulumi.Input[str]]:
76
+ """
77
+ The ID of the project in which the resource belongs.
78
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
79
+
80
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
81
+ Each entry can have one of the following values:
82
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
83
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
84
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
85
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
86
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
87
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
88
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
89
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
90
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
91
+ """
92
+ return pulumi.get(self, "project")
93
+
94
+ @project.setter
95
+ def project(self, value: Optional[pulumi.Input[str]]):
96
+ pulumi.set(self, "project", value)
97
+
98
+ @property
99
+ @pulumi.getter
100
+ def region(self) -> Optional[pulumi.Input[str]]:
101
+ """
102
+ The region of the tunnel group. Must be the same as the network resources in the group.
103
+ Used to find the parent resource to bind the IAM policy to. If not specified,
104
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
105
+ region is specified, it is taken from the provider configuration.
106
+ """
107
+ return pulumi.get(self, "region")
108
+
109
+ @region.setter
110
+ def region(self, value: Optional[pulumi.Input[str]]):
111
+ pulumi.set(self, "region", value)
112
+
113
+
114
+ @pulumi.input_type
115
+ class _TunnelDestGroupIamPolicyState:
116
+ def __init__(__self__, *,
117
+ dest_group: Optional[pulumi.Input[str]] = None,
118
+ etag: Optional[pulumi.Input[str]] = None,
119
+ policy_data: Optional[pulumi.Input[str]] = None,
120
+ project: Optional[pulumi.Input[str]] = None,
121
+ region: Optional[pulumi.Input[str]] = None):
122
+ """
123
+ Input properties used for looking up and filtering TunnelDestGroupIamPolicy resources.
124
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
125
+ :param pulumi.Input[str] policy_data: The policy data generated by
126
+ a `organizations_get_iam_policy` data source.
127
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
128
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
129
+
130
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
131
+ Each entry can have one of the following values:
132
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
133
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
134
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
135
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
136
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
137
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
138
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
139
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
140
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
141
+ :param pulumi.Input[str] region: The region of the tunnel group. Must be the same as the network resources in the group.
142
+ Used to find the parent resource to bind the IAM policy to. If not specified,
143
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
144
+ region is specified, it is taken from the provider configuration.
145
+ """
146
+ if dest_group is not None:
147
+ pulumi.set(__self__, "dest_group", dest_group)
148
+ if etag is not None:
149
+ pulumi.set(__self__, "etag", etag)
150
+ if policy_data is not None:
151
+ pulumi.set(__self__, "policy_data", policy_data)
152
+ if project is not None:
153
+ pulumi.set(__self__, "project", project)
154
+ if region is not None:
155
+ pulumi.set(__self__, "region", region)
156
+
157
+ @property
158
+ @pulumi.getter(name="destGroup")
159
+ def dest_group(self) -> Optional[pulumi.Input[str]]:
160
+ return pulumi.get(self, "dest_group")
161
+
162
+ @dest_group.setter
163
+ def dest_group(self, value: Optional[pulumi.Input[str]]):
164
+ pulumi.set(self, "dest_group", value)
165
+
166
+ @property
167
+ @pulumi.getter
168
+ def etag(self) -> Optional[pulumi.Input[str]]:
169
+ """
170
+ (Computed) The etag of the IAM policy.
171
+ """
172
+ return pulumi.get(self, "etag")
173
+
174
+ @etag.setter
175
+ def etag(self, value: Optional[pulumi.Input[str]]):
176
+ pulumi.set(self, "etag", value)
177
+
178
+ @property
179
+ @pulumi.getter(name="policyData")
180
+ def policy_data(self) -> Optional[pulumi.Input[str]]:
181
+ """
182
+ The policy data generated by
183
+ a `organizations_get_iam_policy` data source.
184
+ """
185
+ return pulumi.get(self, "policy_data")
186
+
187
+ @policy_data.setter
188
+ def policy_data(self, value: Optional[pulumi.Input[str]]):
189
+ pulumi.set(self, "policy_data", value)
190
+
191
+ @property
192
+ @pulumi.getter
193
+ def project(self) -> Optional[pulumi.Input[str]]:
194
+ """
195
+ The ID of the project in which the resource belongs.
196
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
197
+
198
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
199
+ Each entry can have one of the following values:
200
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
201
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
202
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
203
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
204
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
205
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
206
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
207
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
208
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
209
+ """
210
+ return pulumi.get(self, "project")
211
+
212
+ @project.setter
213
+ def project(self, value: Optional[pulumi.Input[str]]):
214
+ pulumi.set(self, "project", value)
215
+
216
+ @property
217
+ @pulumi.getter
218
+ def region(self) -> Optional[pulumi.Input[str]]:
219
+ """
220
+ The region of the tunnel group. Must be the same as the network resources in the group.
221
+ Used to find the parent resource to bind the IAM policy to. If not specified,
222
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
223
+ region is specified, it is taken from the provider configuration.
224
+ """
225
+ return pulumi.get(self, "region")
226
+
227
+ @region.setter
228
+ def region(self, value: Optional[pulumi.Input[str]]):
229
+ pulumi.set(self, "region", value)
230
+
231
+
232
+ class TunnelDestGroupIamPolicy(pulumi.CustomResource):
233
+ @overload
234
+ def __init__(__self__,
235
+ resource_name: str,
236
+ opts: Optional[pulumi.ResourceOptions] = None,
237
+ dest_group: Optional[pulumi.Input[str]] = None,
238
+ policy_data: Optional[pulumi.Input[str]] = None,
239
+ project: Optional[pulumi.Input[str]] = None,
240
+ region: Optional[pulumi.Input[str]] = None,
241
+ __props__=None):
242
+ """
243
+ Three different resources help you manage your IAM policy for Identity-Aware Proxy TunnelDestGroup. Each of these resources serves a different use case:
244
+
245
+ * `iap.TunnelDestGroupIamPolicy`: Authoritative. Sets the IAM policy for the tunneldestgroup and replaces any existing policy already attached.
246
+ * `iap.TunnelDestGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the tunneldestgroup are preserved.
247
+ * `iap.TunnelDestGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the tunneldestgroup are preserved.
248
+
249
+ A data source can be used to retrieve policy data in advent you do not need creation
250
+
251
+ * `iap.TunnelDestGroupIamPolicy`: Retrieves the IAM policy for the tunneldestgroup
252
+
253
+ > **Note:** `iap.TunnelDestGroupIamPolicy` **cannot** be used in conjunction with `iap.TunnelDestGroupIamBinding` and `iap.TunnelDestGroupIamMember` or they will fight over what your policy should be.
254
+
255
+ > **Note:** `iap.TunnelDestGroupIamBinding` resources **can be** used in conjunction with `iap.TunnelDestGroupIamMember` resources **only if** they do not grant privilege to the same role.
256
+
257
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
258
+
259
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_policy
260
+
261
+ <!--Start PulumiCodeChooser -->
262
+ ```python
263
+ import pulumi
264
+ import pulumi_gcp as gcp
265
+
266
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
267
+ role="roles/iap.tunnelResourceAccessor",
268
+ members=["user:jane@example.com"],
269
+ )])
270
+ policy = gcp.iap.TunnelDestGroupIamPolicy("policy",
271
+ project=dest_group["project"],
272
+ region=dest_group["region"],
273
+ dest_group=dest_group["groupName"],
274
+ policy_data=admin.policy_data)
275
+ ```
276
+ <!--End PulumiCodeChooser -->
277
+
278
+ With IAM Conditions:
279
+
280
+ <!--Start PulumiCodeChooser -->
281
+ ```python
282
+ import pulumi
283
+ import pulumi_gcp as gcp
284
+
285
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
286
+ role="roles/iap.tunnelResourceAccessor",
287
+ members=["user:jane@example.com"],
288
+ condition=gcp.organizations.GetIAMPolicyBindingConditionArgs(
289
+ title="expires_after_2019_12_31",
290
+ description="Expiring at midnight of 2019-12-31",
291
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
292
+ ),
293
+ )])
294
+ policy = gcp.iap.TunnelDestGroupIamPolicy("policy",
295
+ project=dest_group["project"],
296
+ region=dest_group["region"],
297
+ dest_group=dest_group["groupName"],
298
+ policy_data=admin.policy_data)
299
+ ```
300
+ <!--End PulumiCodeChooser -->
301
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_binding
302
+
303
+ <!--Start PulumiCodeChooser -->
304
+ ```python
305
+ import pulumi
306
+ import pulumi_gcp as gcp
307
+
308
+ binding = gcp.iap.TunnelDestGroupIamBinding("binding",
309
+ project=dest_group["project"],
310
+ region=dest_group["region"],
311
+ dest_group=dest_group["groupName"],
312
+ role="roles/iap.tunnelResourceAccessor",
313
+ members=["user:jane@example.com"])
314
+ ```
315
+ <!--End PulumiCodeChooser -->
316
+
317
+ With IAM Conditions:
318
+
319
+ <!--Start PulumiCodeChooser -->
320
+ ```python
321
+ import pulumi
322
+ import pulumi_gcp as gcp
323
+
324
+ binding = gcp.iap.TunnelDestGroupIamBinding("binding",
325
+ project=dest_group["project"],
326
+ region=dest_group["region"],
327
+ dest_group=dest_group["groupName"],
328
+ role="roles/iap.tunnelResourceAccessor",
329
+ members=["user:jane@example.com"],
330
+ condition=gcp.iap.TunnelDestGroupIamBindingConditionArgs(
331
+ title="expires_after_2019_12_31",
332
+ description="Expiring at midnight of 2019-12-31",
333
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
334
+ ))
335
+ ```
336
+ <!--End PulumiCodeChooser -->
337
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_member
338
+
339
+ <!--Start PulumiCodeChooser -->
340
+ ```python
341
+ import pulumi
342
+ import pulumi_gcp as gcp
343
+
344
+ member = gcp.iap.TunnelDestGroupIamMember("member",
345
+ project=dest_group["project"],
346
+ region=dest_group["region"],
347
+ dest_group=dest_group["groupName"],
348
+ role="roles/iap.tunnelResourceAccessor",
349
+ member="user:jane@example.com")
350
+ ```
351
+ <!--End PulumiCodeChooser -->
352
+
353
+ With IAM Conditions:
354
+
355
+ <!--Start PulumiCodeChooser -->
356
+ ```python
357
+ import pulumi
358
+ import pulumi_gcp as gcp
359
+
360
+ member = gcp.iap.TunnelDestGroupIamMember("member",
361
+ project=dest_group["project"],
362
+ region=dest_group["region"],
363
+ dest_group=dest_group["groupName"],
364
+ role="roles/iap.tunnelResourceAccessor",
365
+ member="user:jane@example.com",
366
+ condition=gcp.iap.TunnelDestGroupIamMemberConditionArgs(
367
+ title="expires_after_2019_12_31",
368
+ description="Expiring at midnight of 2019-12-31",
369
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
370
+ ))
371
+ ```
372
+ <!--End PulumiCodeChooser -->
373
+
374
+ ## Import
375
+
376
+ For all import syntaxes, the "resource in question" can take any of the following forms:
377
+
378
+ * projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
379
+
380
+ * {{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
381
+
382
+ * {{project}}/{{region}}/{{dest_group}}
383
+
384
+ * {{region}}/{{dest_group}}
385
+
386
+ * {{dest_group}}
387
+
388
+ Any variables not passed in the import command will be taken from the provider configuration.
389
+
390
+ Identity-Aware Proxy tunneldestgroup IAM resources can be imported using the resource identifiers, role, and member.
391
+
392
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
393
+
394
+ ```sh
395
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor "projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}} roles/iap.tunnelResourceAccessor user:jane@example.com"
396
+ ```
397
+
398
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
399
+
400
+ ```sh
401
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor "projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}} roles/iap.tunnelResourceAccessor"
402
+ ```
403
+
404
+ IAM policy imports use the identifier of the resource in question, e.g.
405
+
406
+ ```sh
407
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
408
+ ```
409
+
410
+ -> **Custom Roles**: If you're importing a IAM resource with a custom role, make sure to use the
411
+
412
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
413
+
414
+ :param str resource_name: The name of the resource.
415
+ :param pulumi.ResourceOptions opts: Options for the resource.
416
+ :param pulumi.Input[str] policy_data: The policy data generated by
417
+ a `organizations_get_iam_policy` data source.
418
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
419
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
420
+
421
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
422
+ Each entry can have one of the following values:
423
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
424
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
425
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
426
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
427
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
428
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
429
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
430
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
431
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
432
+ :param pulumi.Input[str] region: The region of the tunnel group. Must be the same as the network resources in the group.
433
+ Used to find the parent resource to bind the IAM policy to. If not specified,
434
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
435
+ region is specified, it is taken from the provider configuration.
436
+ """
437
+ ...
438
+ @overload
439
+ def __init__(__self__,
440
+ resource_name: str,
441
+ args: TunnelDestGroupIamPolicyArgs,
442
+ opts: Optional[pulumi.ResourceOptions] = None):
443
+ """
444
+ Three different resources help you manage your IAM policy for Identity-Aware Proxy TunnelDestGroup. Each of these resources serves a different use case:
445
+
446
+ * `iap.TunnelDestGroupIamPolicy`: Authoritative. Sets the IAM policy for the tunneldestgroup and replaces any existing policy already attached.
447
+ * `iap.TunnelDestGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the tunneldestgroup are preserved.
448
+ * `iap.TunnelDestGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the tunneldestgroup are preserved.
449
+
450
+ A data source can be used to retrieve policy data in advent you do not need creation
451
+
452
+ * `iap.TunnelDestGroupIamPolicy`: Retrieves the IAM policy for the tunneldestgroup
453
+
454
+ > **Note:** `iap.TunnelDestGroupIamPolicy` **cannot** be used in conjunction with `iap.TunnelDestGroupIamBinding` and `iap.TunnelDestGroupIamMember` or they will fight over what your policy should be.
455
+
456
+ > **Note:** `iap.TunnelDestGroupIamBinding` resources **can be** used in conjunction with `iap.TunnelDestGroupIamMember` resources **only if** they do not grant privilege to the same role.
457
+
458
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
459
+
460
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_policy
461
+
462
+ <!--Start PulumiCodeChooser -->
463
+ ```python
464
+ import pulumi
465
+ import pulumi_gcp as gcp
466
+
467
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
468
+ role="roles/iap.tunnelResourceAccessor",
469
+ members=["user:jane@example.com"],
470
+ )])
471
+ policy = gcp.iap.TunnelDestGroupIamPolicy("policy",
472
+ project=dest_group["project"],
473
+ region=dest_group["region"],
474
+ dest_group=dest_group["groupName"],
475
+ policy_data=admin.policy_data)
476
+ ```
477
+ <!--End PulumiCodeChooser -->
478
+
479
+ With IAM Conditions:
480
+
481
+ <!--Start PulumiCodeChooser -->
482
+ ```python
483
+ import pulumi
484
+ import pulumi_gcp as gcp
485
+
486
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
487
+ role="roles/iap.tunnelResourceAccessor",
488
+ members=["user:jane@example.com"],
489
+ condition=gcp.organizations.GetIAMPolicyBindingConditionArgs(
490
+ title="expires_after_2019_12_31",
491
+ description="Expiring at midnight of 2019-12-31",
492
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
493
+ ),
494
+ )])
495
+ policy = gcp.iap.TunnelDestGroupIamPolicy("policy",
496
+ project=dest_group["project"],
497
+ region=dest_group["region"],
498
+ dest_group=dest_group["groupName"],
499
+ policy_data=admin.policy_data)
500
+ ```
501
+ <!--End PulumiCodeChooser -->
502
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_binding
503
+
504
+ <!--Start PulumiCodeChooser -->
505
+ ```python
506
+ import pulumi
507
+ import pulumi_gcp as gcp
508
+
509
+ binding = gcp.iap.TunnelDestGroupIamBinding("binding",
510
+ project=dest_group["project"],
511
+ region=dest_group["region"],
512
+ dest_group=dest_group["groupName"],
513
+ role="roles/iap.tunnelResourceAccessor",
514
+ members=["user:jane@example.com"])
515
+ ```
516
+ <!--End PulumiCodeChooser -->
517
+
518
+ With IAM Conditions:
519
+
520
+ <!--Start PulumiCodeChooser -->
521
+ ```python
522
+ import pulumi
523
+ import pulumi_gcp as gcp
524
+
525
+ binding = gcp.iap.TunnelDestGroupIamBinding("binding",
526
+ project=dest_group["project"],
527
+ region=dest_group["region"],
528
+ dest_group=dest_group["groupName"],
529
+ role="roles/iap.tunnelResourceAccessor",
530
+ members=["user:jane@example.com"],
531
+ condition=gcp.iap.TunnelDestGroupIamBindingConditionArgs(
532
+ title="expires_after_2019_12_31",
533
+ description="Expiring at midnight of 2019-12-31",
534
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
535
+ ))
536
+ ```
537
+ <!--End PulumiCodeChooser -->
538
+ ## google\\_iap\\_tunnel\\_dest\\_group\\_iam\\_member
539
+
540
+ <!--Start PulumiCodeChooser -->
541
+ ```python
542
+ import pulumi
543
+ import pulumi_gcp as gcp
544
+
545
+ member = gcp.iap.TunnelDestGroupIamMember("member",
546
+ project=dest_group["project"],
547
+ region=dest_group["region"],
548
+ dest_group=dest_group["groupName"],
549
+ role="roles/iap.tunnelResourceAccessor",
550
+ member="user:jane@example.com")
551
+ ```
552
+ <!--End PulumiCodeChooser -->
553
+
554
+ With IAM Conditions:
555
+
556
+ <!--Start PulumiCodeChooser -->
557
+ ```python
558
+ import pulumi
559
+ import pulumi_gcp as gcp
560
+
561
+ member = gcp.iap.TunnelDestGroupIamMember("member",
562
+ project=dest_group["project"],
563
+ region=dest_group["region"],
564
+ dest_group=dest_group["groupName"],
565
+ role="roles/iap.tunnelResourceAccessor",
566
+ member="user:jane@example.com",
567
+ condition=gcp.iap.TunnelDestGroupIamMemberConditionArgs(
568
+ title="expires_after_2019_12_31",
569
+ description="Expiring at midnight of 2019-12-31",
570
+ expression="request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
571
+ ))
572
+ ```
573
+ <!--End PulumiCodeChooser -->
574
+
575
+ ## Import
576
+
577
+ For all import syntaxes, the "resource in question" can take any of the following forms:
578
+
579
+ * projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
580
+
581
+ * {{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
582
+
583
+ * {{project}}/{{region}}/{{dest_group}}
584
+
585
+ * {{region}}/{{dest_group}}
586
+
587
+ * {{dest_group}}
588
+
589
+ Any variables not passed in the import command will be taken from the provider configuration.
590
+
591
+ Identity-Aware Proxy tunneldestgroup IAM resources can be imported using the resource identifiers, role, and member.
592
+
593
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
594
+
595
+ ```sh
596
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor "projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}} roles/iap.tunnelResourceAccessor user:jane@example.com"
597
+ ```
598
+
599
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
600
+
601
+ ```sh
602
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor "projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}} roles/iap.tunnelResourceAccessor"
603
+ ```
604
+
605
+ IAM policy imports use the identifier of the resource in question, e.g.
606
+
607
+ ```sh
608
+ $ pulumi import gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy editor projects/{{project}}/iap_tunnel/locations/{{region}}/destGroups/{{dest_group}}
609
+ ```
610
+
611
+ -> **Custom Roles**: If you're importing a IAM resource with a custom role, make sure to use the
612
+
613
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
614
+
615
+ :param str resource_name: The name of the resource.
616
+ :param TunnelDestGroupIamPolicyArgs args: The arguments to use to populate this resource's properties.
617
+ :param pulumi.ResourceOptions opts: Options for the resource.
618
+ """
619
+ ...
620
+ def __init__(__self__, resource_name: str, *args, **kwargs):
621
+ resource_args, opts = _utilities.get_resource_args_opts(TunnelDestGroupIamPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
622
+ if resource_args is not None:
623
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
624
+ else:
625
+ __self__._internal_init(resource_name, *args, **kwargs)
626
+
627
+ def _internal_init(__self__,
628
+ resource_name: str,
629
+ opts: Optional[pulumi.ResourceOptions] = None,
630
+ dest_group: Optional[pulumi.Input[str]] = None,
631
+ policy_data: Optional[pulumi.Input[str]] = None,
632
+ project: Optional[pulumi.Input[str]] = None,
633
+ region: Optional[pulumi.Input[str]] = None,
634
+ __props__=None):
635
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
636
+ if not isinstance(opts, pulumi.ResourceOptions):
637
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
638
+ if opts.id is None:
639
+ if __props__ is not None:
640
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
641
+ __props__ = TunnelDestGroupIamPolicyArgs.__new__(TunnelDestGroupIamPolicyArgs)
642
+
643
+ if dest_group is None and not opts.urn:
644
+ raise TypeError("Missing required property 'dest_group'")
645
+ __props__.__dict__["dest_group"] = dest_group
646
+ if policy_data is None and not opts.urn:
647
+ raise TypeError("Missing required property 'policy_data'")
648
+ __props__.__dict__["policy_data"] = policy_data
649
+ __props__.__dict__["project"] = project
650
+ __props__.__dict__["region"] = region
651
+ __props__.__dict__["etag"] = None
652
+ super(TunnelDestGroupIamPolicy, __self__).__init__(
653
+ 'gcp:iap/tunnelDestGroupIamPolicy:TunnelDestGroupIamPolicy',
654
+ resource_name,
655
+ __props__,
656
+ opts)
657
+
658
+ @staticmethod
659
+ def get(resource_name: str,
660
+ id: pulumi.Input[str],
661
+ opts: Optional[pulumi.ResourceOptions] = None,
662
+ dest_group: Optional[pulumi.Input[str]] = None,
663
+ etag: Optional[pulumi.Input[str]] = None,
664
+ policy_data: Optional[pulumi.Input[str]] = None,
665
+ project: Optional[pulumi.Input[str]] = None,
666
+ region: Optional[pulumi.Input[str]] = None) -> 'TunnelDestGroupIamPolicy':
667
+ """
668
+ Get an existing TunnelDestGroupIamPolicy resource's state with the given name, id, and optional extra
669
+ properties used to qualify the lookup.
670
+
671
+ :param str resource_name: The unique name of the resulting resource.
672
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
673
+ :param pulumi.ResourceOptions opts: Options for the resource.
674
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
675
+ :param pulumi.Input[str] policy_data: The policy data generated by
676
+ a `organizations_get_iam_policy` data source.
677
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
678
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
679
+
680
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
681
+ Each entry can have one of the following values:
682
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
683
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
684
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
685
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
686
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
687
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
688
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
689
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
690
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
691
+ :param pulumi.Input[str] region: The region of the tunnel group. Must be the same as the network resources in the group.
692
+ Used to find the parent resource to bind the IAM policy to. If not specified,
693
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
694
+ region is specified, it is taken from the provider configuration.
695
+ """
696
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
697
+
698
+ __props__ = _TunnelDestGroupIamPolicyState.__new__(_TunnelDestGroupIamPolicyState)
699
+
700
+ __props__.__dict__["dest_group"] = dest_group
701
+ __props__.__dict__["etag"] = etag
702
+ __props__.__dict__["policy_data"] = policy_data
703
+ __props__.__dict__["project"] = project
704
+ __props__.__dict__["region"] = region
705
+ return TunnelDestGroupIamPolicy(resource_name, opts=opts, __props__=__props__)
706
+
707
+ @property
708
+ @pulumi.getter(name="destGroup")
709
+ def dest_group(self) -> pulumi.Output[str]:
710
+ return pulumi.get(self, "dest_group")
711
+
712
+ @property
713
+ @pulumi.getter
714
+ def etag(self) -> pulumi.Output[str]:
715
+ """
716
+ (Computed) The etag of the IAM policy.
717
+ """
718
+ return pulumi.get(self, "etag")
719
+
720
+ @property
721
+ @pulumi.getter(name="policyData")
722
+ def policy_data(self) -> pulumi.Output[str]:
723
+ """
724
+ The policy data generated by
725
+ a `organizations_get_iam_policy` data source.
726
+ """
727
+ return pulumi.get(self, "policy_data")
728
+
729
+ @property
730
+ @pulumi.getter
731
+ def project(self) -> pulumi.Output[str]:
732
+ """
733
+ The ID of the project in which the resource belongs.
734
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
735
+
736
+ * `member/members` - (Required) Identities that will be granted the privilege in `role`.
737
+ Each entry can have one of the following values:
738
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
739
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
740
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
741
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
742
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
743
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
744
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
745
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
746
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
747
+ """
748
+ return pulumi.get(self, "project")
749
+
750
+ @property
751
+ @pulumi.getter
752
+ def region(self) -> pulumi.Output[str]:
753
+ """
754
+ The region of the tunnel group. Must be the same as the network resources in the group.
755
+ Used to find the parent resource to bind the IAM policy to. If not specified,
756
+ the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no
757
+ region is specified, it is taken from the provider configuration.
758
+ """
759
+ return pulumi.get(self, "region")
760
+