pulumi-gcp 7.36.0a1723631483__py3-none-any.whl → 7.37.0a1723638212__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 (53) hide show
  1. pulumi_gcp/__init__.py +72 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +2 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +780 -0
  4. pulumi_gcp/accesscontextmanager/outputs.py +601 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +323 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +332 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +2 -24
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +2 -24
  9. pulumi_gcp/applicationintegration/client.py +2 -2
  10. pulumi_gcp/clouddeploy/_inputs.py +21 -1
  11. pulumi_gcp/clouddeploy/outputs.py +15 -1
  12. pulumi_gcp/cloudrunv2/_inputs.py +40 -0
  13. pulumi_gcp/cloudrunv2/outputs.py +46 -0
  14. pulumi_gcp/compute/region_target_https_proxy.py +28 -0
  15. pulumi_gcp/container/_inputs.py +26 -0
  16. pulumi_gcp/container/outputs.py +29 -0
  17. pulumi_gcp/dataform/repository.py +80 -2
  18. pulumi_gcp/discoveryengine/data_store.py +93 -2
  19. pulumi_gcp/gkehub/_inputs.py +63 -0
  20. pulumi_gcp/gkehub/outputs.py +38 -0
  21. pulumi_gcp/logging/get_log_view_iam_policy.py +28 -2
  22. pulumi_gcp/logging/log_view_iam_binding.py +512 -0
  23. pulumi_gcp/logging/log_view_iam_member.py +512 -0
  24. pulumi_gcp/logging/log_view_iam_policy.py +512 -0
  25. pulumi_gcp/netapp/_inputs.py +6 -6
  26. pulumi_gcp/netapp/outputs.py +4 -4
  27. pulumi_gcp/networkconnectivity/regional_endpoint.py +6 -6
  28. pulumi_gcp/organizations/get_project.py +11 -1
  29. pulumi_gcp/organizations/project.py +76 -21
  30. pulumi_gcp/pulumi-plugin.json +1 -1
  31. pulumi_gcp/securitycenter/__init__.py +8 -0
  32. pulumi_gcp/securitycenter/_inputs.py +191 -0
  33. pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py +146 -0
  34. pulumi_gcp/securitycenter/outputs.py +115 -0
  35. pulumi_gcp/securitycenter/v2_folder_mute_config.py +679 -0
  36. pulumi_gcp/securitycenter/v2_organization_source.py +416 -0
  37. pulumi_gcp/securitycenter/v2_organization_source_iam_binding.py +722 -0
  38. pulumi_gcp/securitycenter/v2_organization_source_iam_member.py +722 -0
  39. pulumi_gcp/securitycenter/v2_organization_source_iam_policy.py +561 -0
  40. pulumi_gcp/securitycenter/v2_project_mute_config.py +684 -0
  41. pulumi_gcp/securitycenter/v2_project_notification_config.py +559 -0
  42. pulumi_gcp/spanner/instance.py +0 -7
  43. pulumi_gcp/sql/_inputs.py +3 -3
  44. pulumi_gcp/sql/outputs.py +6 -6
  45. pulumi_gcp/storage/bucket_object.py +28 -0
  46. pulumi_gcp/storage/get_bucket_object.py +14 -1
  47. pulumi_gcp/storage/get_bucket_object_content.py +11 -1
  48. pulumi_gcp/storage/managed_folder.py +72 -2
  49. pulumi_gcp/vmwareengine/network_policy.py +6 -6
  50. {pulumi_gcp-7.36.0a1723631483.dist-info → pulumi_gcp-7.37.0a1723638212.dist-info}/METADATA +1 -1
  51. {pulumi_gcp-7.36.0a1723631483.dist-info → pulumi_gcp-7.37.0a1723638212.dist-info}/RECORD +53 -43
  52. {pulumi_gcp-7.36.0a1723631483.dist-info → pulumi_gcp-7.37.0a1723638212.dist-info}/WHEEL +0 -0
  53. {pulumi_gcp-7.36.0a1723631483.dist-info → pulumi_gcp-7.37.0a1723638212.dist-info}/top_level.txt +0 -0
@@ -61,6 +61,26 @@ __all__ = [
61
61
  'AccessPolicyIamBindingConditionArgsDict',
62
62
  'AccessPolicyIamMemberConditionArgs',
63
63
  'AccessPolicyIamMemberConditionArgsDict',
64
+ 'ServicePerimeterDryRunEgressPolicyEgressFromArgs',
65
+ 'ServicePerimeterDryRunEgressPolicyEgressFromArgsDict',
66
+ 'ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs',
67
+ 'ServicePerimeterDryRunEgressPolicyEgressFromSourceArgsDict',
68
+ 'ServicePerimeterDryRunEgressPolicyEgressToArgs',
69
+ 'ServicePerimeterDryRunEgressPolicyEgressToArgsDict',
70
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperationArgs',
71
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperationArgsDict',
72
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs',
73
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgsDict',
74
+ 'ServicePerimeterDryRunIngressPolicyIngressFromArgs',
75
+ 'ServicePerimeterDryRunIngressPolicyIngressFromArgsDict',
76
+ 'ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs',
77
+ 'ServicePerimeterDryRunIngressPolicyIngressFromSourceArgsDict',
78
+ 'ServicePerimeterDryRunIngressPolicyIngressToArgs',
79
+ 'ServicePerimeterDryRunIngressPolicyIngressToArgsDict',
80
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperationArgs',
81
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperationArgsDict',
82
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs',
83
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgsDict',
64
84
  'ServicePerimeterEgressPolicyEgressFromArgs',
65
85
  'ServicePerimeterEgressPolicyEgressFromArgsDict',
66
86
  'ServicePerimeterEgressPolicyEgressFromSourceArgs',
@@ -2207,6 +2227,766 @@ class AccessPolicyIamMemberConditionArgs:
2207
2227
  pulumi.set(self, "description", value)
2208
2228
 
2209
2229
 
2230
+ if not MYPY:
2231
+ class ServicePerimeterDryRunEgressPolicyEgressFromArgsDict(TypedDict):
2232
+ identities: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
2233
+ """
2234
+ A list of identities that are allowed access through this `EgressPolicy`.
2235
+ Should be in the format of email address. The email address should
2236
+ represent individual user or service account only.
2237
+ """
2238
+ identity_type: NotRequired[pulumi.Input[str]]
2239
+ """
2240
+ Specifies the type of identities that are allowed access to outside the
2241
+ perimeter. If left unspecified, then members of `identities` field will
2242
+ be allowed access.
2243
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2244
+ """
2245
+ source_restriction: NotRequired[pulumi.Input[str]]
2246
+ """
2247
+ Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
2248
+ Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
2249
+ """
2250
+ sources: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgsDict']]]]
2251
+ """
2252
+ Sources that this EgressPolicy authorizes access from.
2253
+ Structure is documented below.
2254
+ """
2255
+ elif False:
2256
+ ServicePerimeterDryRunEgressPolicyEgressFromArgsDict: TypeAlias = Mapping[str, Any]
2257
+
2258
+ @pulumi.input_type
2259
+ class ServicePerimeterDryRunEgressPolicyEgressFromArgs:
2260
+ def __init__(__self__, *,
2261
+ identities: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
2262
+ identity_type: Optional[pulumi.Input[str]] = None,
2263
+ source_restriction: Optional[pulumi.Input[str]] = None,
2264
+ sources: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs']]]] = None):
2265
+ """
2266
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] identities: A list of identities that are allowed access through this `EgressPolicy`.
2267
+ Should be in the format of email address. The email address should
2268
+ represent individual user or service account only.
2269
+ :param pulumi.Input[str] identity_type: Specifies the type of identities that are allowed access to outside the
2270
+ perimeter. If left unspecified, then members of `identities` field will
2271
+ be allowed access.
2272
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2273
+ :param pulumi.Input[str] source_restriction: Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
2274
+ Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
2275
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs']]] sources: Sources that this EgressPolicy authorizes access from.
2276
+ Structure is documented below.
2277
+ """
2278
+ if identities is not None:
2279
+ pulumi.set(__self__, "identities", identities)
2280
+ if identity_type is not None:
2281
+ pulumi.set(__self__, "identity_type", identity_type)
2282
+ if source_restriction is not None:
2283
+ pulumi.set(__self__, "source_restriction", source_restriction)
2284
+ if sources is not None:
2285
+ pulumi.set(__self__, "sources", sources)
2286
+
2287
+ @property
2288
+ @pulumi.getter
2289
+ def identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
2290
+ """
2291
+ A list of identities that are allowed access through this `EgressPolicy`.
2292
+ Should be in the format of email address. The email address should
2293
+ represent individual user or service account only.
2294
+ """
2295
+ return pulumi.get(self, "identities")
2296
+
2297
+ @identities.setter
2298
+ def identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
2299
+ pulumi.set(self, "identities", value)
2300
+
2301
+ @property
2302
+ @pulumi.getter(name="identityType")
2303
+ def identity_type(self) -> Optional[pulumi.Input[str]]:
2304
+ """
2305
+ Specifies the type of identities that are allowed access to outside the
2306
+ perimeter. If left unspecified, then members of `identities` field will
2307
+ be allowed access.
2308
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2309
+ """
2310
+ return pulumi.get(self, "identity_type")
2311
+
2312
+ @identity_type.setter
2313
+ def identity_type(self, value: Optional[pulumi.Input[str]]):
2314
+ pulumi.set(self, "identity_type", value)
2315
+
2316
+ @property
2317
+ @pulumi.getter(name="sourceRestriction")
2318
+ def source_restriction(self) -> Optional[pulumi.Input[str]]:
2319
+ """
2320
+ Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
2321
+ Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
2322
+ """
2323
+ return pulumi.get(self, "source_restriction")
2324
+
2325
+ @source_restriction.setter
2326
+ def source_restriction(self, value: Optional[pulumi.Input[str]]):
2327
+ pulumi.set(self, "source_restriction", value)
2328
+
2329
+ @property
2330
+ @pulumi.getter
2331
+ def sources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs']]]]:
2332
+ """
2333
+ Sources that this EgressPolicy authorizes access from.
2334
+ Structure is documented below.
2335
+ """
2336
+ return pulumi.get(self, "sources")
2337
+
2338
+ @sources.setter
2339
+ def sources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs']]]]):
2340
+ pulumi.set(self, "sources", value)
2341
+
2342
+
2343
+ if not MYPY:
2344
+ class ServicePerimeterDryRunEgressPolicyEgressFromSourceArgsDict(TypedDict):
2345
+ access_level: NotRequired[pulumi.Input[str]]
2346
+ """
2347
+ An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
2348
+ """
2349
+ elif False:
2350
+ ServicePerimeterDryRunEgressPolicyEgressFromSourceArgsDict: TypeAlias = Mapping[str, Any]
2351
+
2352
+ @pulumi.input_type
2353
+ class ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs:
2354
+ def __init__(__self__, *,
2355
+ access_level: Optional[pulumi.Input[str]] = None):
2356
+ """
2357
+ :param pulumi.Input[str] access_level: An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
2358
+ """
2359
+ if access_level is not None:
2360
+ pulumi.set(__self__, "access_level", access_level)
2361
+
2362
+ @property
2363
+ @pulumi.getter(name="accessLevel")
2364
+ def access_level(self) -> Optional[pulumi.Input[str]]:
2365
+ """
2366
+ An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
2367
+ """
2368
+ return pulumi.get(self, "access_level")
2369
+
2370
+ @access_level.setter
2371
+ def access_level(self, value: Optional[pulumi.Input[str]]):
2372
+ pulumi.set(self, "access_level", value)
2373
+
2374
+
2375
+ if not MYPY:
2376
+ class ServicePerimeterDryRunEgressPolicyEgressToArgsDict(TypedDict):
2377
+ external_resources: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
2378
+ """
2379
+ A list of external resources that are allowed to be accessed. A request
2380
+ matches if it contains an external resource in this list (Example:
2381
+ s3://bucket/path). Currently '*' is not allowed.
2382
+ """
2383
+ operations: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationArgsDict']]]]
2384
+ """
2385
+ A list of `ApiOperations` that this egress rule applies to. A request matches
2386
+ if it contains an operation/service in this list.
2387
+ Structure is documented below.
2388
+ """
2389
+ resources: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
2390
+ """
2391
+ A list of resources, currently only projects in the form
2392
+ `projects/<projectnumber>`, that match this to stanza. A request matches
2393
+ if it contains a resource in this list. If * is specified for resources,
2394
+ then this `EgressTo` rule will authorize access to all resources outside
2395
+ the perimeter.
2396
+ """
2397
+ elif False:
2398
+ ServicePerimeterDryRunEgressPolicyEgressToArgsDict: TypeAlias = Mapping[str, Any]
2399
+
2400
+ @pulumi.input_type
2401
+ class ServicePerimeterDryRunEgressPolicyEgressToArgs:
2402
+ def __init__(__self__, *,
2403
+ external_resources: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
2404
+ operations: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationArgs']]]] = None,
2405
+ resources: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
2406
+ """
2407
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] external_resources: A list of external resources that are allowed to be accessed. A request
2408
+ matches if it contains an external resource in this list (Example:
2409
+ s3://bucket/path). Currently '*' is not allowed.
2410
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationArgs']]] operations: A list of `ApiOperations` that this egress rule applies to. A request matches
2411
+ if it contains an operation/service in this list.
2412
+ Structure is documented below.
2413
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] resources: A list of resources, currently only projects in the form
2414
+ `projects/<projectnumber>`, that match this to stanza. A request matches
2415
+ if it contains a resource in this list. If * is specified for resources,
2416
+ then this `EgressTo` rule will authorize access to all resources outside
2417
+ the perimeter.
2418
+ """
2419
+ if external_resources is not None:
2420
+ pulumi.set(__self__, "external_resources", external_resources)
2421
+ if operations is not None:
2422
+ pulumi.set(__self__, "operations", operations)
2423
+ if resources is not None:
2424
+ pulumi.set(__self__, "resources", resources)
2425
+
2426
+ @property
2427
+ @pulumi.getter(name="externalResources")
2428
+ def external_resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
2429
+ """
2430
+ A list of external resources that are allowed to be accessed. A request
2431
+ matches if it contains an external resource in this list (Example:
2432
+ s3://bucket/path). Currently '*' is not allowed.
2433
+ """
2434
+ return pulumi.get(self, "external_resources")
2435
+
2436
+ @external_resources.setter
2437
+ def external_resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
2438
+ pulumi.set(self, "external_resources", value)
2439
+
2440
+ @property
2441
+ @pulumi.getter
2442
+ def operations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationArgs']]]]:
2443
+ """
2444
+ A list of `ApiOperations` that this egress rule applies to. A request matches
2445
+ if it contains an operation/service in this list.
2446
+ Structure is documented below.
2447
+ """
2448
+ return pulumi.get(self, "operations")
2449
+
2450
+ @operations.setter
2451
+ def operations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationArgs']]]]):
2452
+ pulumi.set(self, "operations", value)
2453
+
2454
+ @property
2455
+ @pulumi.getter
2456
+ def resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
2457
+ """
2458
+ A list of resources, currently only projects in the form
2459
+ `projects/<projectnumber>`, that match this to stanza. A request matches
2460
+ if it contains a resource in this list. If * is specified for resources,
2461
+ then this `EgressTo` rule will authorize access to all resources outside
2462
+ the perimeter.
2463
+ """
2464
+ return pulumi.get(self, "resources")
2465
+
2466
+ @resources.setter
2467
+ def resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
2468
+ pulumi.set(self, "resources", value)
2469
+
2470
+
2471
+ if not MYPY:
2472
+ class ServicePerimeterDryRunEgressPolicyEgressToOperationArgsDict(TypedDict):
2473
+ method_selectors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgsDict']]]]
2474
+ """
2475
+ API methods or permissions to allow. Method or permission must belong
2476
+ to the service specified by `serviceName` field. A single MethodSelector
2477
+ entry with `*` specified for the `method` field will allow all methods
2478
+ AND permissions for the service specified in `serviceName`.
2479
+ Structure is documented below.
2480
+ """
2481
+ service_name: NotRequired[pulumi.Input[str]]
2482
+ """
2483
+ The name of the API whose methods or permissions the `IngressPolicy` or
2484
+ `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
2485
+ field set to `*` will allow all methods AND permissions for all services.
2486
+ """
2487
+ elif False:
2488
+ ServicePerimeterDryRunEgressPolicyEgressToOperationArgsDict: TypeAlias = Mapping[str, Any]
2489
+
2490
+ @pulumi.input_type
2491
+ class ServicePerimeterDryRunEgressPolicyEgressToOperationArgs:
2492
+ def __init__(__self__, *,
2493
+ method_selectors: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs']]]] = None,
2494
+ service_name: Optional[pulumi.Input[str]] = None):
2495
+ """
2496
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs']]] method_selectors: API methods or permissions to allow. Method or permission must belong
2497
+ to the service specified by `serviceName` field. A single MethodSelector
2498
+ entry with `*` specified for the `method` field will allow all methods
2499
+ AND permissions for the service specified in `serviceName`.
2500
+ Structure is documented below.
2501
+ :param pulumi.Input[str] service_name: The name of the API whose methods or permissions the `IngressPolicy` or
2502
+ `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
2503
+ field set to `*` will allow all methods AND permissions for all services.
2504
+ """
2505
+ if method_selectors is not None:
2506
+ pulumi.set(__self__, "method_selectors", method_selectors)
2507
+ if service_name is not None:
2508
+ pulumi.set(__self__, "service_name", service_name)
2509
+
2510
+ @property
2511
+ @pulumi.getter(name="methodSelectors")
2512
+ def method_selectors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs']]]]:
2513
+ """
2514
+ API methods or permissions to allow. Method or permission must belong
2515
+ to the service specified by `serviceName` field. A single MethodSelector
2516
+ entry with `*` specified for the `method` field will allow all methods
2517
+ AND permissions for the service specified in `serviceName`.
2518
+ Structure is documented below.
2519
+ """
2520
+ return pulumi.get(self, "method_selectors")
2521
+
2522
+ @method_selectors.setter
2523
+ def method_selectors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs']]]]):
2524
+ pulumi.set(self, "method_selectors", value)
2525
+
2526
+ @property
2527
+ @pulumi.getter(name="serviceName")
2528
+ def service_name(self) -> Optional[pulumi.Input[str]]:
2529
+ """
2530
+ The name of the API whose methods or permissions the `IngressPolicy` or
2531
+ `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
2532
+ field set to `*` will allow all methods AND permissions for all services.
2533
+ """
2534
+ return pulumi.get(self, "service_name")
2535
+
2536
+ @service_name.setter
2537
+ def service_name(self, value: Optional[pulumi.Input[str]]):
2538
+ pulumi.set(self, "service_name", value)
2539
+
2540
+
2541
+ if not MYPY:
2542
+ class ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgsDict(TypedDict):
2543
+ method: NotRequired[pulumi.Input[str]]
2544
+ """
2545
+ Value for `method` should be a valid method name for the corresponding
2546
+ `serviceName` in `ApiOperation`. If `*` used as value for method,
2547
+ then ALL methods and permissions are allowed.
2548
+ """
2549
+ permission: NotRequired[pulumi.Input[str]]
2550
+ """
2551
+ Value for permission should be a valid Cloud IAM permission for the
2552
+ corresponding `serviceName` in `ApiOperation`.
2553
+ """
2554
+ elif False:
2555
+ ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgsDict: TypeAlias = Mapping[str, Any]
2556
+
2557
+ @pulumi.input_type
2558
+ class ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs:
2559
+ def __init__(__self__, *,
2560
+ method: Optional[pulumi.Input[str]] = None,
2561
+ permission: Optional[pulumi.Input[str]] = None):
2562
+ """
2563
+ :param pulumi.Input[str] method: Value for `method` should be a valid method name for the corresponding
2564
+ `serviceName` in `ApiOperation`. If `*` used as value for method,
2565
+ then ALL methods and permissions are allowed.
2566
+ :param pulumi.Input[str] permission: Value for permission should be a valid Cloud IAM permission for the
2567
+ corresponding `serviceName` in `ApiOperation`.
2568
+ """
2569
+ if method is not None:
2570
+ pulumi.set(__self__, "method", method)
2571
+ if permission is not None:
2572
+ pulumi.set(__self__, "permission", permission)
2573
+
2574
+ @property
2575
+ @pulumi.getter
2576
+ def method(self) -> Optional[pulumi.Input[str]]:
2577
+ """
2578
+ Value for `method` should be a valid method name for the corresponding
2579
+ `serviceName` in `ApiOperation`. If `*` used as value for method,
2580
+ then ALL methods and permissions are allowed.
2581
+ """
2582
+ return pulumi.get(self, "method")
2583
+
2584
+ @method.setter
2585
+ def method(self, value: Optional[pulumi.Input[str]]):
2586
+ pulumi.set(self, "method", value)
2587
+
2588
+ @property
2589
+ @pulumi.getter
2590
+ def permission(self) -> Optional[pulumi.Input[str]]:
2591
+ """
2592
+ Value for permission should be a valid Cloud IAM permission for the
2593
+ corresponding `serviceName` in `ApiOperation`.
2594
+ """
2595
+ return pulumi.get(self, "permission")
2596
+
2597
+ @permission.setter
2598
+ def permission(self, value: Optional[pulumi.Input[str]]):
2599
+ pulumi.set(self, "permission", value)
2600
+
2601
+
2602
+ if not MYPY:
2603
+ class ServicePerimeterDryRunIngressPolicyIngressFromArgsDict(TypedDict):
2604
+ identities: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
2605
+ """
2606
+ A list of identities that are allowed access through this ingress policy.
2607
+ Should be in the format of email address. The email address should represent
2608
+ individual user or service account only.
2609
+ """
2610
+ identity_type: NotRequired[pulumi.Input[str]]
2611
+ """
2612
+ Specifies the type of identities that are allowed access from outside the
2613
+ perimeter. If left unspecified, then members of `identities` field will be
2614
+ allowed access.
2615
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2616
+ """
2617
+ sources: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgsDict']]]]
2618
+ """
2619
+ Sources that this `IngressPolicy` authorizes access from.
2620
+ Structure is documented below.
2621
+ """
2622
+ elif False:
2623
+ ServicePerimeterDryRunIngressPolicyIngressFromArgsDict: TypeAlias = Mapping[str, Any]
2624
+
2625
+ @pulumi.input_type
2626
+ class ServicePerimeterDryRunIngressPolicyIngressFromArgs:
2627
+ def __init__(__self__, *,
2628
+ identities: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
2629
+ identity_type: Optional[pulumi.Input[str]] = None,
2630
+ sources: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs']]]] = None):
2631
+ """
2632
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] identities: A list of identities that are allowed access through this ingress policy.
2633
+ Should be in the format of email address. The email address should represent
2634
+ individual user or service account only.
2635
+ :param pulumi.Input[str] identity_type: Specifies the type of identities that are allowed access from outside the
2636
+ perimeter. If left unspecified, then members of `identities` field will be
2637
+ allowed access.
2638
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2639
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs']]] sources: Sources that this `IngressPolicy` authorizes access from.
2640
+ Structure is documented below.
2641
+ """
2642
+ if identities is not None:
2643
+ pulumi.set(__self__, "identities", identities)
2644
+ if identity_type is not None:
2645
+ pulumi.set(__self__, "identity_type", identity_type)
2646
+ if sources is not None:
2647
+ pulumi.set(__self__, "sources", sources)
2648
+
2649
+ @property
2650
+ @pulumi.getter
2651
+ def identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
2652
+ """
2653
+ A list of identities that are allowed access through this ingress policy.
2654
+ Should be in the format of email address. The email address should represent
2655
+ individual user or service account only.
2656
+ """
2657
+ return pulumi.get(self, "identities")
2658
+
2659
+ @identities.setter
2660
+ def identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
2661
+ pulumi.set(self, "identities", value)
2662
+
2663
+ @property
2664
+ @pulumi.getter(name="identityType")
2665
+ def identity_type(self) -> Optional[pulumi.Input[str]]:
2666
+ """
2667
+ Specifies the type of identities that are allowed access from outside the
2668
+ perimeter. If left unspecified, then members of `identities` field will be
2669
+ allowed access.
2670
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2671
+ """
2672
+ return pulumi.get(self, "identity_type")
2673
+
2674
+ @identity_type.setter
2675
+ def identity_type(self, value: Optional[pulumi.Input[str]]):
2676
+ pulumi.set(self, "identity_type", value)
2677
+
2678
+ @property
2679
+ @pulumi.getter
2680
+ def sources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs']]]]:
2681
+ """
2682
+ Sources that this `IngressPolicy` authorizes access from.
2683
+ Structure is documented below.
2684
+ """
2685
+ return pulumi.get(self, "sources")
2686
+
2687
+ @sources.setter
2688
+ def sources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs']]]]):
2689
+ pulumi.set(self, "sources", value)
2690
+
2691
+
2692
+ if not MYPY:
2693
+ class ServicePerimeterDryRunIngressPolicyIngressFromSourceArgsDict(TypedDict):
2694
+ access_level: NotRequired[pulumi.Input[str]]
2695
+ """
2696
+ An `AccessLevel` resource name that allow resources within the
2697
+ `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
2698
+ must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
2699
+ `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
2700
+ resources within the perimeter can only be accessed via Google Cloud calls
2701
+ with request origins within the perimeter.
2702
+ Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
2703
+ If * is specified, then all IngressSources will be allowed.
2704
+ """
2705
+ resource: NotRequired[pulumi.Input[str]]
2706
+ """
2707
+ A Google Cloud resource that is allowed to ingress the perimeter.
2708
+ Requests from these resources will be allowed to access perimeter data.
2709
+ Currently only projects are allowed. Format `projects/{project_number}`
2710
+ The project may be in any Google Cloud organization, not just the
2711
+ organization that the perimeter is defined in. `*` is not allowed, the case
2712
+ of allowing all Google Cloud resources only is not supported.
2713
+ """
2714
+ elif False:
2715
+ ServicePerimeterDryRunIngressPolicyIngressFromSourceArgsDict: TypeAlias = Mapping[str, Any]
2716
+
2717
+ @pulumi.input_type
2718
+ class ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs:
2719
+ def __init__(__self__, *,
2720
+ access_level: Optional[pulumi.Input[str]] = None,
2721
+ resource: Optional[pulumi.Input[str]] = None):
2722
+ """
2723
+ :param pulumi.Input[str] access_level: An `AccessLevel` resource name that allow resources within the
2724
+ `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
2725
+ must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
2726
+ `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
2727
+ resources within the perimeter can only be accessed via Google Cloud calls
2728
+ with request origins within the perimeter.
2729
+ Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
2730
+ If * is specified, then all IngressSources will be allowed.
2731
+ :param pulumi.Input[str] resource: A Google Cloud resource that is allowed to ingress the perimeter.
2732
+ Requests from these resources will be allowed to access perimeter data.
2733
+ Currently only projects are allowed. Format `projects/{project_number}`
2734
+ The project may be in any Google Cloud organization, not just the
2735
+ organization that the perimeter is defined in. `*` is not allowed, the case
2736
+ of allowing all Google Cloud resources only is not supported.
2737
+ """
2738
+ if access_level is not None:
2739
+ pulumi.set(__self__, "access_level", access_level)
2740
+ if resource is not None:
2741
+ pulumi.set(__self__, "resource", resource)
2742
+
2743
+ @property
2744
+ @pulumi.getter(name="accessLevel")
2745
+ def access_level(self) -> Optional[pulumi.Input[str]]:
2746
+ """
2747
+ An `AccessLevel` resource name that allow resources within the
2748
+ `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
2749
+ must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
2750
+ `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
2751
+ resources within the perimeter can only be accessed via Google Cloud calls
2752
+ with request origins within the perimeter.
2753
+ Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
2754
+ If * is specified, then all IngressSources will be allowed.
2755
+ """
2756
+ return pulumi.get(self, "access_level")
2757
+
2758
+ @access_level.setter
2759
+ def access_level(self, value: Optional[pulumi.Input[str]]):
2760
+ pulumi.set(self, "access_level", value)
2761
+
2762
+ @property
2763
+ @pulumi.getter
2764
+ def resource(self) -> Optional[pulumi.Input[str]]:
2765
+ """
2766
+ A Google Cloud resource that is allowed to ingress the perimeter.
2767
+ Requests from these resources will be allowed to access perimeter data.
2768
+ Currently only projects are allowed. Format `projects/{project_number}`
2769
+ The project may be in any Google Cloud organization, not just the
2770
+ organization that the perimeter is defined in. `*` is not allowed, the case
2771
+ of allowing all Google Cloud resources only is not supported.
2772
+ """
2773
+ return pulumi.get(self, "resource")
2774
+
2775
+ @resource.setter
2776
+ def resource(self, value: Optional[pulumi.Input[str]]):
2777
+ pulumi.set(self, "resource", value)
2778
+
2779
+
2780
+ if not MYPY:
2781
+ class ServicePerimeterDryRunIngressPolicyIngressToArgsDict(TypedDict):
2782
+ operations: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationArgsDict']]]]
2783
+ """
2784
+ A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
2785
+ are allowed to perform in this `ServicePerimeter`.
2786
+ Structure is documented below.
2787
+ """
2788
+ resources: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
2789
+ """
2790
+ A list of resources, currently only projects in the form
2791
+ `projects/<projectnumber>`, protected by this `ServicePerimeter`
2792
+ that are allowed to be accessed by sources defined in the
2793
+ corresponding `IngressFrom`. A request matches if it contains
2794
+ a resource in this list. If `*` is specified for resources,
2795
+ then this `IngressTo` rule will authorize access to all
2796
+ resources inside the perimeter, provided that the request
2797
+ also matches the `operations` field.
2798
+ """
2799
+ elif False:
2800
+ ServicePerimeterDryRunIngressPolicyIngressToArgsDict: TypeAlias = Mapping[str, Any]
2801
+
2802
+ @pulumi.input_type
2803
+ class ServicePerimeterDryRunIngressPolicyIngressToArgs:
2804
+ def __init__(__self__, *,
2805
+ operations: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationArgs']]]] = None,
2806
+ resources: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
2807
+ """
2808
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationArgs']]] operations: A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
2809
+ are allowed to perform in this `ServicePerimeter`.
2810
+ Structure is documented below.
2811
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] resources: A list of resources, currently only projects in the form
2812
+ `projects/<projectnumber>`, protected by this `ServicePerimeter`
2813
+ that are allowed to be accessed by sources defined in the
2814
+ corresponding `IngressFrom`. A request matches if it contains
2815
+ a resource in this list. If `*` is specified for resources,
2816
+ then this `IngressTo` rule will authorize access to all
2817
+ resources inside the perimeter, provided that the request
2818
+ also matches the `operations` field.
2819
+ """
2820
+ if operations is not None:
2821
+ pulumi.set(__self__, "operations", operations)
2822
+ if resources is not None:
2823
+ pulumi.set(__self__, "resources", resources)
2824
+
2825
+ @property
2826
+ @pulumi.getter
2827
+ def operations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationArgs']]]]:
2828
+ """
2829
+ A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
2830
+ are allowed to perform in this `ServicePerimeter`.
2831
+ Structure is documented below.
2832
+ """
2833
+ return pulumi.get(self, "operations")
2834
+
2835
+ @operations.setter
2836
+ def operations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationArgs']]]]):
2837
+ pulumi.set(self, "operations", value)
2838
+
2839
+ @property
2840
+ @pulumi.getter
2841
+ def resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
2842
+ """
2843
+ A list of resources, currently only projects in the form
2844
+ `projects/<projectnumber>`, protected by this `ServicePerimeter`
2845
+ that are allowed to be accessed by sources defined in the
2846
+ corresponding `IngressFrom`. A request matches if it contains
2847
+ a resource in this list. If `*` is specified for resources,
2848
+ then this `IngressTo` rule will authorize access to all
2849
+ resources inside the perimeter, provided that the request
2850
+ also matches the `operations` field.
2851
+ """
2852
+ return pulumi.get(self, "resources")
2853
+
2854
+ @resources.setter
2855
+ def resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
2856
+ pulumi.set(self, "resources", value)
2857
+
2858
+
2859
+ if not MYPY:
2860
+ class ServicePerimeterDryRunIngressPolicyIngressToOperationArgsDict(TypedDict):
2861
+ method_selectors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgsDict']]]]
2862
+ """
2863
+ API methods or permissions to allow. Method or permission must belong to
2864
+ the service specified by serviceName field. A single `MethodSelector` entry
2865
+ with `*` specified for the method field will allow all methods AND
2866
+ permissions for the service specified in `serviceName`.
2867
+ Structure is documented below.
2868
+ """
2869
+ service_name: NotRequired[pulumi.Input[str]]
2870
+ """
2871
+ The name of the API whose methods or permissions the `IngressPolicy` or
2872
+ `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
2873
+ field set to `*` will allow all methods AND permissions for all services.
2874
+ """
2875
+ elif False:
2876
+ ServicePerimeterDryRunIngressPolicyIngressToOperationArgsDict: TypeAlias = Mapping[str, Any]
2877
+
2878
+ @pulumi.input_type
2879
+ class ServicePerimeterDryRunIngressPolicyIngressToOperationArgs:
2880
+ def __init__(__self__, *,
2881
+ method_selectors: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs']]]] = None,
2882
+ service_name: Optional[pulumi.Input[str]] = None):
2883
+ """
2884
+ :param pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs']]] method_selectors: API methods or permissions to allow. Method or permission must belong to
2885
+ the service specified by serviceName field. A single `MethodSelector` entry
2886
+ with `*` specified for the method field will allow all methods AND
2887
+ permissions for the service specified in `serviceName`.
2888
+ Structure is documented below.
2889
+ :param pulumi.Input[str] service_name: The name of the API whose methods or permissions the `IngressPolicy` or
2890
+ `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
2891
+ field set to `*` will allow all methods AND permissions for all services.
2892
+ """
2893
+ if method_selectors is not None:
2894
+ pulumi.set(__self__, "method_selectors", method_selectors)
2895
+ if service_name is not None:
2896
+ pulumi.set(__self__, "service_name", service_name)
2897
+
2898
+ @property
2899
+ @pulumi.getter(name="methodSelectors")
2900
+ def method_selectors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs']]]]:
2901
+ """
2902
+ API methods or permissions to allow. Method or permission must belong to
2903
+ the service specified by serviceName field. A single `MethodSelector` entry
2904
+ with `*` specified for the method field will allow all methods AND
2905
+ permissions for the service specified in `serviceName`.
2906
+ Structure is documented below.
2907
+ """
2908
+ return pulumi.get(self, "method_selectors")
2909
+
2910
+ @method_selectors.setter
2911
+ def method_selectors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs']]]]):
2912
+ pulumi.set(self, "method_selectors", value)
2913
+
2914
+ @property
2915
+ @pulumi.getter(name="serviceName")
2916
+ def service_name(self) -> Optional[pulumi.Input[str]]:
2917
+ """
2918
+ The name of the API whose methods or permissions the `IngressPolicy` or
2919
+ `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
2920
+ field set to `*` will allow all methods AND permissions for all services.
2921
+ """
2922
+ return pulumi.get(self, "service_name")
2923
+
2924
+ @service_name.setter
2925
+ def service_name(self, value: Optional[pulumi.Input[str]]):
2926
+ pulumi.set(self, "service_name", value)
2927
+
2928
+
2929
+ if not MYPY:
2930
+ class ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgsDict(TypedDict):
2931
+ method: NotRequired[pulumi.Input[str]]
2932
+ """
2933
+ Value for method should be a valid method name for the corresponding
2934
+ serviceName in `ApiOperation`. If `*` used as value for `method`, then
2935
+ ALL methods and permissions are allowed.
2936
+ """
2937
+ permission: NotRequired[pulumi.Input[str]]
2938
+ """
2939
+ Value for permission should be a valid Cloud IAM permission for the
2940
+ corresponding `serviceName` in `ApiOperation`.
2941
+ """
2942
+ elif False:
2943
+ ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgsDict: TypeAlias = Mapping[str, Any]
2944
+
2945
+ @pulumi.input_type
2946
+ class ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs:
2947
+ def __init__(__self__, *,
2948
+ method: Optional[pulumi.Input[str]] = None,
2949
+ permission: Optional[pulumi.Input[str]] = None):
2950
+ """
2951
+ :param pulumi.Input[str] method: Value for method should be a valid method name for the corresponding
2952
+ serviceName in `ApiOperation`. If `*` used as value for `method`, then
2953
+ ALL methods and permissions are allowed.
2954
+ :param pulumi.Input[str] permission: Value for permission should be a valid Cloud IAM permission for the
2955
+ corresponding `serviceName` in `ApiOperation`.
2956
+ """
2957
+ if method is not None:
2958
+ pulumi.set(__self__, "method", method)
2959
+ if permission is not None:
2960
+ pulumi.set(__self__, "permission", permission)
2961
+
2962
+ @property
2963
+ @pulumi.getter
2964
+ def method(self) -> Optional[pulumi.Input[str]]:
2965
+ """
2966
+ Value for method should be a valid method name for the corresponding
2967
+ serviceName in `ApiOperation`. If `*` used as value for `method`, then
2968
+ ALL methods and permissions are allowed.
2969
+ """
2970
+ return pulumi.get(self, "method")
2971
+
2972
+ @method.setter
2973
+ def method(self, value: Optional[pulumi.Input[str]]):
2974
+ pulumi.set(self, "method", value)
2975
+
2976
+ @property
2977
+ @pulumi.getter
2978
+ def permission(self) -> Optional[pulumi.Input[str]]:
2979
+ """
2980
+ Value for permission should be a valid Cloud IAM permission for the
2981
+ corresponding `serviceName` in `ApiOperation`.
2982
+ """
2983
+ return pulumi.get(self, "permission")
2984
+
2985
+ @permission.setter
2986
+ def permission(self, value: Optional[pulumi.Input[str]]):
2987
+ pulumi.set(self, "permission", value)
2988
+
2989
+
2210
2990
  if not MYPY:
2211
2991
  class ServicePerimeterEgressPolicyEgressFromArgsDict(TypedDict):
2212
2992
  identities: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]