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