pulumi-gcp 8.18.0a1738650987__py3-none-any.whl → 8.19.0a1738736844__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 (69) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +28 -0
  3. pulumi_gcp/alloydb/user.py +10 -1
  4. pulumi_gcp/assuredworkloads/workload.py +7 -7
  5. pulumi_gcp/beyondcorp/__init__.py +4 -0
  6. pulumi_gcp/beyondcorp/_inputs.py +130 -0
  7. pulumi_gcp/beyondcorp/get_security_gateway_iam_policy.py +180 -0
  8. pulumi_gcp/beyondcorp/outputs.py +76 -0
  9. pulumi_gcp/beyondcorp/security_gateway.py +52 -25
  10. pulumi_gcp/beyondcorp/security_gateway_iam_binding.py +1075 -0
  11. pulumi_gcp/beyondcorp/security_gateway_iam_member.py +1075 -0
  12. pulumi_gcp/beyondcorp/security_gateway_iam_policy.py +894 -0
  13. pulumi_gcp/bigquery/_inputs.py +33 -0
  14. pulumi_gcp/bigquery/dataset.py +7 -7
  15. pulumi_gcp/bigquery/outputs.py +36 -0
  16. pulumi_gcp/bigquery/table.py +61 -7
  17. pulumi_gcp/chronicle/retrohunt.py +0 -16
  18. pulumi_gcp/cloudquota/s_quota_adjuster_settings.py +23 -23
  19. pulumi_gcp/compute/_inputs.py +9 -9
  20. pulumi_gcp/compute/get_network.py +3 -3
  21. pulumi_gcp/compute/network.py +7 -7
  22. pulumi_gcp/compute/outputs.py +6 -6
  23. pulumi_gcp/compute/router_peer.py +112 -0
  24. pulumi_gcp/container/_inputs.py +79 -20
  25. pulumi_gcp/container/outputs.py +75 -12
  26. pulumi_gcp/dataproc/_inputs.py +34 -0
  27. pulumi_gcp/dataproc/outputs.py +37 -0
  28. pulumi_gcp/dataproc/workflow_template.py +47 -0
  29. pulumi_gcp/firestore/field.py +60 -0
  30. pulumi_gcp/gkehub/_inputs.py +20 -0
  31. pulumi_gcp/gkehub/membership_binding.py +6 -6
  32. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  33. pulumi_gcp/gkehub/namespace.py +4 -4
  34. pulumi_gcp/gkehub/outputs.py +26 -1
  35. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  36. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  37. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  38. pulumi_gcp/netapp/storage_pool.py +1 -1
  39. pulumi_gcp/networkconnectivity/spoke.py +76 -14
  40. pulumi_gcp/orgpolicy/policy.py +2 -2
  41. pulumi_gcp/parametermanager/__init__.py +3 -0
  42. pulumi_gcp/parametermanager/get_parameter_version.py +216 -0
  43. pulumi_gcp/parametermanager/get_parameters.py +140 -0
  44. pulumi_gcp/parametermanager/get_regional_parameter_version.py +235 -0
  45. pulumi_gcp/parametermanager/outputs.py +156 -0
  46. pulumi_gcp/pubsub/_inputs.py +264 -0
  47. pulumi_gcp/pubsub/outputs.py +353 -0
  48. pulumi_gcp/pubsub/subscription.py +6 -6
  49. pulumi_gcp/pubsub/topic.py +70 -0
  50. pulumi_gcp/pulumi-plugin.json +1 -1
  51. pulumi_gcp/resourcemanager/lien.py +12 -0
  52. pulumi_gcp/secretmanager/regional_secret.py +4 -0
  53. pulumi_gcp/secretmanager/regional_secret_version.py +12 -0
  54. pulumi_gcp/secretmanager/secret.py +4 -0
  55. pulumi_gcp/secretmanager/secret_version.py +12 -0
  56. pulumi_gcp/securityposture/posture.py +4 -0
  57. pulumi_gcp/securityposture/posture_deployment.py +4 -0
  58. pulumi_gcp/serviceaccount/get_s.py +98 -8
  59. pulumi_gcp/spanner/_inputs.py +68 -0
  60. pulumi_gcp/spanner/backup_schedule.py +70 -4
  61. pulumi_gcp/spanner/outputs.py +60 -0
  62. pulumi_gcp/storage/get_bucket_object_content.py +4 -4
  63. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  64. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  65. pulumi_gcp/workflows/workflow.py +175 -0
  66. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.19.0a1738736844.dist-info}/METADATA +1 -1
  67. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.19.0a1738736844.dist-info}/RECORD +69 -62
  68. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.19.0a1738736844.dist-info}/WHEEL +0 -0
  69. {pulumi_gcp-8.18.0a1738650987.dist-info → pulumi_gcp-8.19.0a1738736844.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1075 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['SecurityGatewayIamMemberArgs', 'SecurityGatewayIamMember']
20
+
21
+ @pulumi.input_type
22
+ class SecurityGatewayIamMemberArgs:
23
+ def __init__(__self__, *,
24
+ member: pulumi.Input[str],
25
+ role: pulumi.Input[str],
26
+ security_gateway_id: pulumi.Input[str],
27
+ condition: Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']] = None,
28
+ location: Optional[pulumi.Input[str]] = None,
29
+ project: Optional[pulumi.Input[str]] = None):
30
+ """
31
+ The set of arguments for constructing a SecurityGatewayIamMember resource.
32
+ :param pulumi.Input[str] member: Identities that will be granted the privilege in `role`.
33
+ Each entry can have one of the following values:
34
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
35
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
36
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
37
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
38
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
39
+ * **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.
40
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
41
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
42
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
43
+ :param pulumi.Input[str] role: The role that should be applied. Only one
44
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
45
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
46
+ :param pulumi.Input['SecurityGatewayIamMemberConditionArgs'] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
47
+ Structure is documented below.
48
+ :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
49
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
50
+ location is specified, it is taken from the provider configuration.
51
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
52
+ 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.
53
+ """
54
+ pulumi.set(__self__, "member", member)
55
+ pulumi.set(__self__, "role", role)
56
+ pulumi.set(__self__, "security_gateway_id", security_gateway_id)
57
+ if condition is not None:
58
+ pulumi.set(__self__, "condition", condition)
59
+ if location is not None:
60
+ pulumi.set(__self__, "location", location)
61
+ if project is not None:
62
+ pulumi.set(__self__, "project", project)
63
+
64
+ @property
65
+ @pulumi.getter
66
+ def member(self) -> pulumi.Input[str]:
67
+ """
68
+ Identities that will be granted the privilege in `role`.
69
+ Each entry can have one of the following values:
70
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
71
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
72
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
73
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
74
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
75
+ * **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.
76
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
77
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
78
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
79
+ """
80
+ return pulumi.get(self, "member")
81
+
82
+ @member.setter
83
+ def member(self, value: pulumi.Input[str]):
84
+ pulumi.set(self, "member", value)
85
+
86
+ @property
87
+ @pulumi.getter
88
+ def role(self) -> pulumi.Input[str]:
89
+ """
90
+ The role that should be applied. Only one
91
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
92
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
93
+ """
94
+ return pulumi.get(self, "role")
95
+
96
+ @role.setter
97
+ def role(self, value: pulumi.Input[str]):
98
+ pulumi.set(self, "role", value)
99
+
100
+ @property
101
+ @pulumi.getter(name="securityGatewayId")
102
+ def security_gateway_id(self) -> pulumi.Input[str]:
103
+ return pulumi.get(self, "security_gateway_id")
104
+
105
+ @security_gateway_id.setter
106
+ def security_gateway_id(self, value: pulumi.Input[str]):
107
+ pulumi.set(self, "security_gateway_id", value)
108
+
109
+ @property
110
+ @pulumi.getter
111
+ def condition(self) -> Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']]:
112
+ """
113
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
114
+ Structure is documented below.
115
+ """
116
+ return pulumi.get(self, "condition")
117
+
118
+ @condition.setter
119
+ def condition(self, value: Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']]):
120
+ pulumi.set(self, "condition", value)
121
+
122
+ @property
123
+ @pulumi.getter
124
+ def location(self) -> Optional[pulumi.Input[str]]:
125
+ """
126
+ Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
127
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
128
+ location is specified, it is taken from the provider configuration.
129
+ """
130
+ return pulumi.get(self, "location")
131
+
132
+ @location.setter
133
+ def location(self, value: Optional[pulumi.Input[str]]):
134
+ pulumi.set(self, "location", value)
135
+
136
+ @property
137
+ @pulumi.getter
138
+ def project(self) -> Optional[pulumi.Input[str]]:
139
+ """
140
+ The ID of the project in which the resource belongs.
141
+ 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.
142
+ """
143
+ return pulumi.get(self, "project")
144
+
145
+ @project.setter
146
+ def project(self, value: Optional[pulumi.Input[str]]):
147
+ pulumi.set(self, "project", value)
148
+
149
+
150
+ @pulumi.input_type
151
+ class _SecurityGatewayIamMemberState:
152
+ def __init__(__self__, *,
153
+ condition: Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']] = None,
154
+ etag: Optional[pulumi.Input[str]] = None,
155
+ location: Optional[pulumi.Input[str]] = None,
156
+ member: Optional[pulumi.Input[str]] = None,
157
+ project: Optional[pulumi.Input[str]] = None,
158
+ role: Optional[pulumi.Input[str]] = None,
159
+ security_gateway_id: Optional[pulumi.Input[str]] = None):
160
+ """
161
+ Input properties used for looking up and filtering SecurityGatewayIamMember resources.
162
+ :param pulumi.Input['SecurityGatewayIamMemberConditionArgs'] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
163
+ Structure is documented below.
164
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
165
+ :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
166
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
167
+ location is specified, it is taken from the provider configuration.
168
+ :param pulumi.Input[str] member: Identities that will be granted the privilege in `role`.
169
+ Each entry can have one of the following values:
170
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
171
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
172
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
173
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
174
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
175
+ * **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.
176
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
177
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
178
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
179
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
180
+ 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.
181
+ :param pulumi.Input[str] role: The role that should be applied. Only one
182
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
183
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
184
+ """
185
+ if condition is not None:
186
+ pulumi.set(__self__, "condition", condition)
187
+ if etag is not None:
188
+ pulumi.set(__self__, "etag", etag)
189
+ if location is not None:
190
+ pulumi.set(__self__, "location", location)
191
+ if member is not None:
192
+ pulumi.set(__self__, "member", member)
193
+ if project is not None:
194
+ pulumi.set(__self__, "project", project)
195
+ if role is not None:
196
+ pulumi.set(__self__, "role", role)
197
+ if security_gateway_id is not None:
198
+ pulumi.set(__self__, "security_gateway_id", security_gateway_id)
199
+
200
+ @property
201
+ @pulumi.getter
202
+ def condition(self) -> Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']]:
203
+ """
204
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
205
+ Structure is documented below.
206
+ """
207
+ return pulumi.get(self, "condition")
208
+
209
+ @condition.setter
210
+ def condition(self, value: Optional[pulumi.Input['SecurityGatewayIamMemberConditionArgs']]):
211
+ pulumi.set(self, "condition", value)
212
+
213
+ @property
214
+ @pulumi.getter
215
+ def etag(self) -> Optional[pulumi.Input[str]]:
216
+ """
217
+ (Computed) The etag of the IAM policy.
218
+ """
219
+ return pulumi.get(self, "etag")
220
+
221
+ @etag.setter
222
+ def etag(self, value: Optional[pulumi.Input[str]]):
223
+ pulumi.set(self, "etag", value)
224
+
225
+ @property
226
+ @pulumi.getter
227
+ def location(self) -> Optional[pulumi.Input[str]]:
228
+ """
229
+ Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
230
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
231
+ location is specified, it is taken from the provider configuration.
232
+ """
233
+ return pulumi.get(self, "location")
234
+
235
+ @location.setter
236
+ def location(self, value: Optional[pulumi.Input[str]]):
237
+ pulumi.set(self, "location", value)
238
+
239
+ @property
240
+ @pulumi.getter
241
+ def member(self) -> Optional[pulumi.Input[str]]:
242
+ """
243
+ Identities that will be granted the privilege in `role`.
244
+ Each entry can have one of the following values:
245
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
246
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
247
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
248
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
249
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
250
+ * **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.
251
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
252
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
253
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
254
+ """
255
+ return pulumi.get(self, "member")
256
+
257
+ @member.setter
258
+ def member(self, value: Optional[pulumi.Input[str]]):
259
+ pulumi.set(self, "member", value)
260
+
261
+ @property
262
+ @pulumi.getter
263
+ def project(self) -> Optional[pulumi.Input[str]]:
264
+ """
265
+ The ID of the project in which the resource belongs.
266
+ 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.
267
+ """
268
+ return pulumi.get(self, "project")
269
+
270
+ @project.setter
271
+ def project(self, value: Optional[pulumi.Input[str]]):
272
+ pulumi.set(self, "project", value)
273
+
274
+ @property
275
+ @pulumi.getter
276
+ def role(self) -> Optional[pulumi.Input[str]]:
277
+ """
278
+ The role that should be applied. Only one
279
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
280
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
281
+ """
282
+ return pulumi.get(self, "role")
283
+
284
+ @role.setter
285
+ def role(self, value: Optional[pulumi.Input[str]]):
286
+ pulumi.set(self, "role", value)
287
+
288
+ @property
289
+ @pulumi.getter(name="securityGatewayId")
290
+ def security_gateway_id(self) -> Optional[pulumi.Input[str]]:
291
+ return pulumi.get(self, "security_gateway_id")
292
+
293
+ @security_gateway_id.setter
294
+ def security_gateway_id(self, value: Optional[pulumi.Input[str]]):
295
+ pulumi.set(self, "security_gateway_id", value)
296
+
297
+
298
+ class SecurityGatewayIamMember(pulumi.CustomResource):
299
+ @overload
300
+ def __init__(__self__,
301
+ resource_name: str,
302
+ opts: Optional[pulumi.ResourceOptions] = None,
303
+ condition: Optional[pulumi.Input[Union['SecurityGatewayIamMemberConditionArgs', 'SecurityGatewayIamMemberConditionArgsDict']]] = None,
304
+ location: Optional[pulumi.Input[str]] = None,
305
+ member: Optional[pulumi.Input[str]] = None,
306
+ project: Optional[pulumi.Input[str]] = None,
307
+ role: Optional[pulumi.Input[str]] = None,
308
+ security_gateway_id: Optional[pulumi.Input[str]] = None,
309
+ __props__=None):
310
+ """
311
+ Three different resources help you manage your IAM policy for BeyondCorp SecurityGateway. Each of these resources serves a different use case:
312
+
313
+ * `beyondcorp.SecurityGatewayIamPolicy`: Authoritative. Sets the IAM policy for the securitygateway and replaces any existing policy already attached.
314
+ * `beyondcorp.SecurityGatewayIamBinding`: 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 securitygateway are preserved.
315
+ * `beyondcorp.SecurityGatewayIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the securitygateway are preserved.
316
+
317
+ A data source can be used to retrieve policy data in advent you do not need creation
318
+
319
+ * `beyondcorp.SecurityGatewayIamPolicy`: Retrieves the IAM policy for the securitygateway
320
+
321
+ > **Note:** `beyondcorp.SecurityGatewayIamPolicy` **cannot** be used in conjunction with `beyondcorp.SecurityGatewayIamBinding` and `beyondcorp.SecurityGatewayIamMember` or they will fight over what your policy should be.
322
+
323
+ > **Note:** `beyondcorp.SecurityGatewayIamBinding` resources **can be** used in conjunction with `beyondcorp.SecurityGatewayIamMember` resources **only if** they do not grant privilege to the same role.
324
+
325
+ > **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.
326
+
327
+ ## beyondcorp.SecurityGatewayIamPolicy
328
+
329
+ ```python
330
+ import pulumi
331
+ import pulumi_gcp as gcp
332
+
333
+ admin = gcp.organizations.get_iam_policy(bindings=[{
334
+ "role": "roles/beyondcorp.securityGatewayUser",
335
+ "members": ["user:jane@example.com"],
336
+ }])
337
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
338
+ project=example["project"],
339
+ location=example["location"],
340
+ security_gateway_id=example["securityGatewayId"],
341
+ policy_data=admin.policy_data)
342
+ ```
343
+
344
+ With IAM Conditions:
345
+
346
+ ```python
347
+ import pulumi
348
+ import pulumi_gcp as gcp
349
+
350
+ admin = gcp.organizations.get_iam_policy(bindings=[{
351
+ "role": "roles/beyondcorp.securityGatewayUser",
352
+ "members": ["user:jane@example.com"],
353
+ "condition": {
354
+ "title": "expires_after_2019_12_31",
355
+ "description": "Expiring at midnight of 2019-12-31",
356
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
357
+ },
358
+ }])
359
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
360
+ project=example["project"],
361
+ location=example["location"],
362
+ security_gateway_id=example["securityGatewayId"],
363
+ policy_data=admin.policy_data)
364
+ ```
365
+ ## beyondcorp.SecurityGatewayIamBinding
366
+
367
+ ```python
368
+ import pulumi
369
+ import pulumi_gcp as gcp
370
+
371
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
372
+ project=example["project"],
373
+ location=example["location"],
374
+ security_gateway_id=example["securityGatewayId"],
375
+ role="roles/beyondcorp.securityGatewayUser",
376
+ members=["user:jane@example.com"])
377
+ ```
378
+
379
+ With IAM Conditions:
380
+
381
+ ```python
382
+ import pulumi
383
+ import pulumi_gcp as gcp
384
+
385
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
386
+ project=example["project"],
387
+ location=example["location"],
388
+ security_gateway_id=example["securityGatewayId"],
389
+ role="roles/beyondcorp.securityGatewayUser",
390
+ members=["user:jane@example.com"],
391
+ condition={
392
+ "title": "expires_after_2019_12_31",
393
+ "description": "Expiring at midnight of 2019-12-31",
394
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
395
+ })
396
+ ```
397
+ ## beyondcorp.SecurityGatewayIamMember
398
+
399
+ ```python
400
+ import pulumi
401
+ import pulumi_gcp as gcp
402
+
403
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
404
+ project=example["project"],
405
+ location=example["location"],
406
+ security_gateway_id=example["securityGatewayId"],
407
+ role="roles/beyondcorp.securityGatewayUser",
408
+ member="user:jane@example.com")
409
+ ```
410
+
411
+ With IAM Conditions:
412
+
413
+ ```python
414
+ import pulumi
415
+ import pulumi_gcp as gcp
416
+
417
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
418
+ project=example["project"],
419
+ location=example["location"],
420
+ security_gateway_id=example["securityGatewayId"],
421
+ role="roles/beyondcorp.securityGatewayUser",
422
+ member="user:jane@example.com",
423
+ condition={
424
+ "title": "expires_after_2019_12_31",
425
+ "description": "Expiring at midnight of 2019-12-31",
426
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
427
+ })
428
+ ```
429
+
430
+ ## This resource supports User Project Overrides.
431
+
432
+ -
433
+
434
+ # IAM policy for BeyondCorp SecurityGateway
435
+ Three different resources help you manage your IAM policy for BeyondCorp SecurityGateway. Each of these resources serves a different use case:
436
+
437
+ * `beyondcorp.SecurityGatewayIamPolicy`: Authoritative. Sets the IAM policy for the securitygateway and replaces any existing policy already attached.
438
+ * `beyondcorp.SecurityGatewayIamBinding`: 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 securitygateway are preserved.
439
+ * `beyondcorp.SecurityGatewayIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the securitygateway are preserved.
440
+
441
+ A data source can be used to retrieve policy data in advent you do not need creation
442
+
443
+ * `beyondcorp.SecurityGatewayIamPolicy`: Retrieves the IAM policy for the securitygateway
444
+
445
+ > **Note:** `beyondcorp.SecurityGatewayIamPolicy` **cannot** be used in conjunction with `beyondcorp.SecurityGatewayIamBinding` and `beyondcorp.SecurityGatewayIamMember` or they will fight over what your policy should be.
446
+
447
+ > **Note:** `beyondcorp.SecurityGatewayIamBinding` resources **can be** used in conjunction with `beyondcorp.SecurityGatewayIamMember` resources **only if** they do not grant privilege to the same role.
448
+
449
+ > **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.
450
+
451
+ ## beyondcorp.SecurityGatewayIamPolicy
452
+
453
+ ```python
454
+ import pulumi
455
+ import pulumi_gcp as gcp
456
+
457
+ admin = gcp.organizations.get_iam_policy(bindings=[{
458
+ "role": "roles/beyondcorp.securityGatewayUser",
459
+ "members": ["user:jane@example.com"],
460
+ }])
461
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
462
+ project=example["project"],
463
+ location=example["location"],
464
+ security_gateway_id=example["securityGatewayId"],
465
+ policy_data=admin.policy_data)
466
+ ```
467
+
468
+ With IAM Conditions:
469
+
470
+ ```python
471
+ import pulumi
472
+ import pulumi_gcp as gcp
473
+
474
+ admin = gcp.organizations.get_iam_policy(bindings=[{
475
+ "role": "roles/beyondcorp.securityGatewayUser",
476
+ "members": ["user:jane@example.com"],
477
+ "condition": {
478
+ "title": "expires_after_2019_12_31",
479
+ "description": "Expiring at midnight of 2019-12-31",
480
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
481
+ },
482
+ }])
483
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
484
+ project=example["project"],
485
+ location=example["location"],
486
+ security_gateway_id=example["securityGatewayId"],
487
+ policy_data=admin.policy_data)
488
+ ```
489
+ ## beyondcorp.SecurityGatewayIamBinding
490
+
491
+ ```python
492
+ import pulumi
493
+ import pulumi_gcp as gcp
494
+
495
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
496
+ project=example["project"],
497
+ location=example["location"],
498
+ security_gateway_id=example["securityGatewayId"],
499
+ role="roles/beyondcorp.securityGatewayUser",
500
+ members=["user:jane@example.com"])
501
+ ```
502
+
503
+ With IAM Conditions:
504
+
505
+ ```python
506
+ import pulumi
507
+ import pulumi_gcp as gcp
508
+
509
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
510
+ project=example["project"],
511
+ location=example["location"],
512
+ security_gateway_id=example["securityGatewayId"],
513
+ role="roles/beyondcorp.securityGatewayUser",
514
+ members=["user:jane@example.com"],
515
+ condition={
516
+ "title": "expires_after_2019_12_31",
517
+ "description": "Expiring at midnight of 2019-12-31",
518
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
519
+ })
520
+ ```
521
+ ## beyondcorp.SecurityGatewayIamMember
522
+
523
+ ```python
524
+ import pulumi
525
+ import pulumi_gcp as gcp
526
+
527
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
528
+ project=example["project"],
529
+ location=example["location"],
530
+ security_gateway_id=example["securityGatewayId"],
531
+ role="roles/beyondcorp.securityGatewayUser",
532
+ member="user:jane@example.com")
533
+ ```
534
+
535
+ With IAM Conditions:
536
+
537
+ ```python
538
+ import pulumi
539
+ import pulumi_gcp as gcp
540
+
541
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
542
+ project=example["project"],
543
+ location=example["location"],
544
+ security_gateway_id=example["securityGatewayId"],
545
+ role="roles/beyondcorp.securityGatewayUser",
546
+ member="user:jane@example.com",
547
+ condition={
548
+ "title": "expires_after_2019_12_31",
549
+ "description": "Expiring at midnight of 2019-12-31",
550
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
551
+ })
552
+ ```
553
+
554
+ ## Import
555
+
556
+ For all import syntaxes, the "resource in question" can take any of the following forms:
557
+
558
+ * projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}
559
+
560
+ * {{project}}/{{location}}/{{security_gateway_id}}
561
+
562
+ * {{location}}/{{security_gateway_id}}
563
+
564
+ * {{security_gateway_id}}
565
+
566
+ Any variables not passed in the import command will be taken from the provider configuration.
567
+
568
+ BeyondCorp securitygateway IAM resources can be imported using the resource identifiers, role, and member.
569
+
570
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
571
+
572
+ ```sh
573
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor "projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} roles/beyondcorp.securityGatewayUser user:jane@example.com"
574
+ ```
575
+
576
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
577
+
578
+ ```sh
579
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor "projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} roles/beyondcorp.securityGatewayUser"
580
+ ```
581
+
582
+ IAM policy imports use the identifier of the resource in question, e.g.
583
+
584
+ ```sh
585
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}
586
+ ```
587
+
588
+ -> **Custom Roles** If you're importing a IAM resource with a custom role, make sure to use the
589
+
590
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
591
+
592
+ :param str resource_name: The name of the resource.
593
+ :param pulumi.ResourceOptions opts: Options for the resource.
594
+ :param pulumi.Input[Union['SecurityGatewayIamMemberConditionArgs', 'SecurityGatewayIamMemberConditionArgsDict']] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
595
+ Structure is documented below.
596
+ :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
597
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
598
+ location is specified, it is taken from the provider configuration.
599
+ :param pulumi.Input[str] member: Identities that will be granted the privilege in `role`.
600
+ Each entry can have one of the following values:
601
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
602
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
603
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
604
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
605
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
606
+ * **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.
607
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
608
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
609
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
610
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
611
+ 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.
612
+ :param pulumi.Input[str] role: The role that should be applied. Only one
613
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
614
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
615
+ """
616
+ ...
617
+ @overload
618
+ def __init__(__self__,
619
+ resource_name: str,
620
+ args: SecurityGatewayIamMemberArgs,
621
+ opts: Optional[pulumi.ResourceOptions] = None):
622
+ """
623
+ Three different resources help you manage your IAM policy for BeyondCorp SecurityGateway. Each of these resources serves a different use case:
624
+
625
+ * `beyondcorp.SecurityGatewayIamPolicy`: Authoritative. Sets the IAM policy for the securitygateway and replaces any existing policy already attached.
626
+ * `beyondcorp.SecurityGatewayIamBinding`: 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 securitygateway are preserved.
627
+ * `beyondcorp.SecurityGatewayIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the securitygateway are preserved.
628
+
629
+ A data source can be used to retrieve policy data in advent you do not need creation
630
+
631
+ * `beyondcorp.SecurityGatewayIamPolicy`: Retrieves the IAM policy for the securitygateway
632
+
633
+ > **Note:** `beyondcorp.SecurityGatewayIamPolicy` **cannot** be used in conjunction with `beyondcorp.SecurityGatewayIamBinding` and `beyondcorp.SecurityGatewayIamMember` or they will fight over what your policy should be.
634
+
635
+ > **Note:** `beyondcorp.SecurityGatewayIamBinding` resources **can be** used in conjunction with `beyondcorp.SecurityGatewayIamMember` resources **only if** they do not grant privilege to the same role.
636
+
637
+ > **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.
638
+
639
+ ## beyondcorp.SecurityGatewayIamPolicy
640
+
641
+ ```python
642
+ import pulumi
643
+ import pulumi_gcp as gcp
644
+
645
+ admin = gcp.organizations.get_iam_policy(bindings=[{
646
+ "role": "roles/beyondcorp.securityGatewayUser",
647
+ "members": ["user:jane@example.com"],
648
+ }])
649
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
650
+ project=example["project"],
651
+ location=example["location"],
652
+ security_gateway_id=example["securityGatewayId"],
653
+ policy_data=admin.policy_data)
654
+ ```
655
+
656
+ With IAM Conditions:
657
+
658
+ ```python
659
+ import pulumi
660
+ import pulumi_gcp as gcp
661
+
662
+ admin = gcp.organizations.get_iam_policy(bindings=[{
663
+ "role": "roles/beyondcorp.securityGatewayUser",
664
+ "members": ["user:jane@example.com"],
665
+ "condition": {
666
+ "title": "expires_after_2019_12_31",
667
+ "description": "Expiring at midnight of 2019-12-31",
668
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
669
+ },
670
+ }])
671
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
672
+ project=example["project"],
673
+ location=example["location"],
674
+ security_gateway_id=example["securityGatewayId"],
675
+ policy_data=admin.policy_data)
676
+ ```
677
+ ## beyondcorp.SecurityGatewayIamBinding
678
+
679
+ ```python
680
+ import pulumi
681
+ import pulumi_gcp as gcp
682
+
683
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
684
+ project=example["project"],
685
+ location=example["location"],
686
+ security_gateway_id=example["securityGatewayId"],
687
+ role="roles/beyondcorp.securityGatewayUser",
688
+ members=["user:jane@example.com"])
689
+ ```
690
+
691
+ With IAM Conditions:
692
+
693
+ ```python
694
+ import pulumi
695
+ import pulumi_gcp as gcp
696
+
697
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
698
+ project=example["project"],
699
+ location=example["location"],
700
+ security_gateway_id=example["securityGatewayId"],
701
+ role="roles/beyondcorp.securityGatewayUser",
702
+ members=["user:jane@example.com"],
703
+ condition={
704
+ "title": "expires_after_2019_12_31",
705
+ "description": "Expiring at midnight of 2019-12-31",
706
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
707
+ })
708
+ ```
709
+ ## beyondcorp.SecurityGatewayIamMember
710
+
711
+ ```python
712
+ import pulumi
713
+ import pulumi_gcp as gcp
714
+
715
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
716
+ project=example["project"],
717
+ location=example["location"],
718
+ security_gateway_id=example["securityGatewayId"],
719
+ role="roles/beyondcorp.securityGatewayUser",
720
+ member="user:jane@example.com")
721
+ ```
722
+
723
+ With IAM Conditions:
724
+
725
+ ```python
726
+ import pulumi
727
+ import pulumi_gcp as gcp
728
+
729
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
730
+ project=example["project"],
731
+ location=example["location"],
732
+ security_gateway_id=example["securityGatewayId"],
733
+ role="roles/beyondcorp.securityGatewayUser",
734
+ member="user:jane@example.com",
735
+ condition={
736
+ "title": "expires_after_2019_12_31",
737
+ "description": "Expiring at midnight of 2019-12-31",
738
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
739
+ })
740
+ ```
741
+
742
+ ## This resource supports User Project Overrides.
743
+
744
+ -
745
+
746
+ # IAM policy for BeyondCorp SecurityGateway
747
+ Three different resources help you manage your IAM policy for BeyondCorp SecurityGateway. Each of these resources serves a different use case:
748
+
749
+ * `beyondcorp.SecurityGatewayIamPolicy`: Authoritative. Sets the IAM policy for the securitygateway and replaces any existing policy already attached.
750
+ * `beyondcorp.SecurityGatewayIamBinding`: 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 securitygateway are preserved.
751
+ * `beyondcorp.SecurityGatewayIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the securitygateway are preserved.
752
+
753
+ A data source can be used to retrieve policy data in advent you do not need creation
754
+
755
+ * `beyondcorp.SecurityGatewayIamPolicy`: Retrieves the IAM policy for the securitygateway
756
+
757
+ > **Note:** `beyondcorp.SecurityGatewayIamPolicy` **cannot** be used in conjunction with `beyondcorp.SecurityGatewayIamBinding` and `beyondcorp.SecurityGatewayIamMember` or they will fight over what your policy should be.
758
+
759
+ > **Note:** `beyondcorp.SecurityGatewayIamBinding` resources **can be** used in conjunction with `beyondcorp.SecurityGatewayIamMember` resources **only if** they do not grant privilege to the same role.
760
+
761
+ > **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.
762
+
763
+ ## beyondcorp.SecurityGatewayIamPolicy
764
+
765
+ ```python
766
+ import pulumi
767
+ import pulumi_gcp as gcp
768
+
769
+ admin = gcp.organizations.get_iam_policy(bindings=[{
770
+ "role": "roles/beyondcorp.securityGatewayUser",
771
+ "members": ["user:jane@example.com"],
772
+ }])
773
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
774
+ project=example["project"],
775
+ location=example["location"],
776
+ security_gateway_id=example["securityGatewayId"],
777
+ policy_data=admin.policy_data)
778
+ ```
779
+
780
+ With IAM Conditions:
781
+
782
+ ```python
783
+ import pulumi
784
+ import pulumi_gcp as gcp
785
+
786
+ admin = gcp.organizations.get_iam_policy(bindings=[{
787
+ "role": "roles/beyondcorp.securityGatewayUser",
788
+ "members": ["user:jane@example.com"],
789
+ "condition": {
790
+ "title": "expires_after_2019_12_31",
791
+ "description": "Expiring at midnight of 2019-12-31",
792
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
793
+ },
794
+ }])
795
+ policy = gcp.beyondcorp.SecurityGatewayIamPolicy("policy",
796
+ project=example["project"],
797
+ location=example["location"],
798
+ security_gateway_id=example["securityGatewayId"],
799
+ policy_data=admin.policy_data)
800
+ ```
801
+ ## beyondcorp.SecurityGatewayIamBinding
802
+
803
+ ```python
804
+ import pulumi
805
+ import pulumi_gcp as gcp
806
+
807
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
808
+ project=example["project"],
809
+ location=example["location"],
810
+ security_gateway_id=example["securityGatewayId"],
811
+ role="roles/beyondcorp.securityGatewayUser",
812
+ members=["user:jane@example.com"])
813
+ ```
814
+
815
+ With IAM Conditions:
816
+
817
+ ```python
818
+ import pulumi
819
+ import pulumi_gcp as gcp
820
+
821
+ binding = gcp.beyondcorp.SecurityGatewayIamBinding("binding",
822
+ project=example["project"],
823
+ location=example["location"],
824
+ security_gateway_id=example["securityGatewayId"],
825
+ role="roles/beyondcorp.securityGatewayUser",
826
+ members=["user:jane@example.com"],
827
+ condition={
828
+ "title": "expires_after_2019_12_31",
829
+ "description": "Expiring at midnight of 2019-12-31",
830
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
831
+ })
832
+ ```
833
+ ## beyondcorp.SecurityGatewayIamMember
834
+
835
+ ```python
836
+ import pulumi
837
+ import pulumi_gcp as gcp
838
+
839
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
840
+ project=example["project"],
841
+ location=example["location"],
842
+ security_gateway_id=example["securityGatewayId"],
843
+ role="roles/beyondcorp.securityGatewayUser",
844
+ member="user:jane@example.com")
845
+ ```
846
+
847
+ With IAM Conditions:
848
+
849
+ ```python
850
+ import pulumi
851
+ import pulumi_gcp as gcp
852
+
853
+ member = gcp.beyondcorp.SecurityGatewayIamMember("member",
854
+ project=example["project"],
855
+ location=example["location"],
856
+ security_gateway_id=example["securityGatewayId"],
857
+ role="roles/beyondcorp.securityGatewayUser",
858
+ member="user:jane@example.com",
859
+ condition={
860
+ "title": "expires_after_2019_12_31",
861
+ "description": "Expiring at midnight of 2019-12-31",
862
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
863
+ })
864
+ ```
865
+
866
+ ## Import
867
+
868
+ For all import syntaxes, the "resource in question" can take any of the following forms:
869
+
870
+ * projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}
871
+
872
+ * {{project}}/{{location}}/{{security_gateway_id}}
873
+
874
+ * {{location}}/{{security_gateway_id}}
875
+
876
+ * {{security_gateway_id}}
877
+
878
+ Any variables not passed in the import command will be taken from the provider configuration.
879
+
880
+ BeyondCorp securitygateway IAM resources can be imported using the resource identifiers, role, and member.
881
+
882
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
883
+
884
+ ```sh
885
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor "projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} roles/beyondcorp.securityGatewayUser user:jane@example.com"
886
+ ```
887
+
888
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
889
+
890
+ ```sh
891
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor "projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} roles/beyondcorp.securityGatewayUser"
892
+ ```
893
+
894
+ IAM policy imports use the identifier of the resource in question, e.g.
895
+
896
+ ```sh
897
+ $ pulumi import gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember editor projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}
898
+ ```
899
+
900
+ -> **Custom Roles** If you're importing a IAM resource with a custom role, make sure to use the
901
+
902
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
903
+
904
+ :param str resource_name: The name of the resource.
905
+ :param SecurityGatewayIamMemberArgs args: The arguments to use to populate this resource's properties.
906
+ :param pulumi.ResourceOptions opts: Options for the resource.
907
+ """
908
+ ...
909
+ def __init__(__self__, resource_name: str, *args, **kwargs):
910
+ resource_args, opts = _utilities.get_resource_args_opts(SecurityGatewayIamMemberArgs, pulumi.ResourceOptions, *args, **kwargs)
911
+ if resource_args is not None:
912
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
913
+ else:
914
+ __self__._internal_init(resource_name, *args, **kwargs)
915
+
916
+ def _internal_init(__self__,
917
+ resource_name: str,
918
+ opts: Optional[pulumi.ResourceOptions] = None,
919
+ condition: Optional[pulumi.Input[Union['SecurityGatewayIamMemberConditionArgs', 'SecurityGatewayIamMemberConditionArgsDict']]] = None,
920
+ location: Optional[pulumi.Input[str]] = None,
921
+ member: Optional[pulumi.Input[str]] = None,
922
+ project: Optional[pulumi.Input[str]] = None,
923
+ role: Optional[pulumi.Input[str]] = None,
924
+ security_gateway_id: Optional[pulumi.Input[str]] = None,
925
+ __props__=None):
926
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
927
+ if not isinstance(opts, pulumi.ResourceOptions):
928
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
929
+ if opts.id is None:
930
+ if __props__ is not None:
931
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
932
+ __props__ = SecurityGatewayIamMemberArgs.__new__(SecurityGatewayIamMemberArgs)
933
+
934
+ __props__.__dict__["condition"] = condition
935
+ __props__.__dict__["location"] = location
936
+ if member is None and not opts.urn:
937
+ raise TypeError("Missing required property 'member'")
938
+ __props__.__dict__["member"] = member
939
+ __props__.__dict__["project"] = project
940
+ if role is None and not opts.urn:
941
+ raise TypeError("Missing required property 'role'")
942
+ __props__.__dict__["role"] = role
943
+ if security_gateway_id is None and not opts.urn:
944
+ raise TypeError("Missing required property 'security_gateway_id'")
945
+ __props__.__dict__["security_gateway_id"] = security_gateway_id
946
+ __props__.__dict__["etag"] = None
947
+ super(SecurityGatewayIamMember, __self__).__init__(
948
+ 'gcp:beyondcorp/securityGatewayIamMember:SecurityGatewayIamMember',
949
+ resource_name,
950
+ __props__,
951
+ opts)
952
+
953
+ @staticmethod
954
+ def get(resource_name: str,
955
+ id: pulumi.Input[str],
956
+ opts: Optional[pulumi.ResourceOptions] = None,
957
+ condition: Optional[pulumi.Input[Union['SecurityGatewayIamMemberConditionArgs', 'SecurityGatewayIamMemberConditionArgsDict']]] = None,
958
+ etag: Optional[pulumi.Input[str]] = None,
959
+ location: Optional[pulumi.Input[str]] = None,
960
+ member: Optional[pulumi.Input[str]] = None,
961
+ project: Optional[pulumi.Input[str]] = None,
962
+ role: Optional[pulumi.Input[str]] = None,
963
+ security_gateway_id: Optional[pulumi.Input[str]] = None) -> 'SecurityGatewayIamMember':
964
+ """
965
+ Get an existing SecurityGatewayIamMember resource's state with the given name, id, and optional extra
966
+ properties used to qualify the lookup.
967
+
968
+ :param str resource_name: The unique name of the resulting resource.
969
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
970
+ :param pulumi.ResourceOptions opts: Options for the resource.
971
+ :param pulumi.Input[Union['SecurityGatewayIamMemberConditionArgs', 'SecurityGatewayIamMemberConditionArgsDict']] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
972
+ Structure is documented below.
973
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
974
+ :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
975
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
976
+ location is specified, it is taken from the provider configuration.
977
+ :param pulumi.Input[str] member: Identities that will be granted the privilege in `role`.
978
+ Each entry can have one of the following values:
979
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
980
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
981
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
982
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
983
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
984
+ * **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.
985
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
986
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
987
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
988
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
989
+ 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.
990
+ :param pulumi.Input[str] role: The role that should be applied. Only one
991
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
992
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
993
+ """
994
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
995
+
996
+ __props__ = _SecurityGatewayIamMemberState.__new__(_SecurityGatewayIamMemberState)
997
+
998
+ __props__.__dict__["condition"] = condition
999
+ __props__.__dict__["etag"] = etag
1000
+ __props__.__dict__["location"] = location
1001
+ __props__.__dict__["member"] = member
1002
+ __props__.__dict__["project"] = project
1003
+ __props__.__dict__["role"] = role
1004
+ __props__.__dict__["security_gateway_id"] = security_gateway_id
1005
+ return SecurityGatewayIamMember(resource_name, opts=opts, __props__=__props__)
1006
+
1007
+ @property
1008
+ @pulumi.getter
1009
+ def condition(self) -> pulumi.Output[Optional['outputs.SecurityGatewayIamMemberCondition']]:
1010
+ """
1011
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
1012
+ Structure is documented below.
1013
+ """
1014
+ return pulumi.get(self, "condition")
1015
+
1016
+ @property
1017
+ @pulumi.getter
1018
+ def etag(self) -> pulumi.Output[str]:
1019
+ """
1020
+ (Computed) The etag of the IAM policy.
1021
+ """
1022
+ return pulumi.get(self, "etag")
1023
+
1024
+ @property
1025
+ @pulumi.getter
1026
+ def location(self) -> pulumi.Output[str]:
1027
+ """
1028
+ Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Must be omitted or set to `global`. Used to find the parent resource to bind the IAM policy to. If not specified,
1029
+ the value will be parsed from the identifier of the parent resource. If no location is provided in the parent identifier and no
1030
+ location is specified, it is taken from the provider configuration.
1031
+ """
1032
+ return pulumi.get(self, "location")
1033
+
1034
+ @property
1035
+ @pulumi.getter
1036
+ def member(self) -> pulumi.Output[str]:
1037
+ """
1038
+ Identities that will be granted the privilege in `role`.
1039
+ Each entry can have one of the following values:
1040
+ * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
1041
+ * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
1042
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
1043
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
1044
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
1045
+ * **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.
1046
+ * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
1047
+ * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
1048
+ * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
1049
+ """
1050
+ return pulumi.get(self, "member")
1051
+
1052
+ @property
1053
+ @pulumi.getter
1054
+ def project(self) -> pulumi.Output[str]:
1055
+ """
1056
+ The ID of the project in which the resource belongs.
1057
+ 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.
1058
+ """
1059
+ return pulumi.get(self, "project")
1060
+
1061
+ @property
1062
+ @pulumi.getter
1063
+ def role(self) -> pulumi.Output[str]:
1064
+ """
1065
+ The role that should be applied. Only one
1066
+ `beyondcorp.SecurityGatewayIamBinding` can be used per role. Note that custom roles must be of the format
1067
+ `[projects|organizations]/{parent-name}/roles/{role-name}`.
1068
+ """
1069
+ return pulumi.get(self, "role")
1070
+
1071
+ @property
1072
+ @pulumi.getter(name="securityGatewayId")
1073
+ def security_gateway_id(self) -> pulumi.Output[str]:
1074
+ return pulumi.get(self, "security_gateway_id")
1075
+