pulumi-gcp 8.11.0a1734348982__py3-none-any.whl → 8.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pulumi_gcp/__init__.py +123 -0
- pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +6 -0
- pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +6 -0
- pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +6 -0
- pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +6 -0
- pulumi_gcp/apigee/app_group.py +7 -7
- pulumi_gcp/applicationintegration/client.py +8 -6
- pulumi_gcp/artifactregistry/_inputs.py +24 -15
- pulumi_gcp/artifactregistry/get_repository_iam_policy.py +12 -4
- pulumi_gcp/artifactregistry/outputs.py +32 -20
- pulumi_gcp/artifactregistry/repository.py +214 -39
- pulumi_gcp/artifactregistry/repository_iam_binding.py +42 -14
- pulumi_gcp/artifactregistry/repository_iam_member.py +42 -14
- pulumi_gcp/artifactregistry/repository_iam_policy.py +42 -14
- pulumi_gcp/assuredworkloads/workload.py +7 -7
- pulumi_gcp/backupdisasterrecovery/__init__.py +2 -0
- pulumi_gcp/backupdisasterrecovery/backup_plan.py +2 -2
- pulumi_gcp/backupdisasterrecovery/backup_vault.py +12 -8
- pulumi_gcp/backupdisasterrecovery/get_backup.py +153 -0
- pulumi_gcp/backupdisasterrecovery/get_backup_vault.py +415 -0
- pulumi_gcp/backupdisasterrecovery/outputs.py +63 -0
- pulumi_gcp/bigquery/app_profile.py +75 -0
- pulumi_gcp/billing/_inputs.py +6 -6
- pulumi_gcp/billing/outputs.py +4 -4
- pulumi_gcp/certificateauthority/_inputs.py +9 -9
- pulumi_gcp/certificateauthority/outputs.py +8 -8
- pulumi_gcp/cloudbuild/_inputs.py +53 -0
- pulumi_gcp/cloudbuild/outputs.py +50 -0
- pulumi_gcp/cloudbuild/worker_pool.py +47 -0
- pulumi_gcp/clouddeploy/_inputs.py +254 -0
- pulumi_gcp/clouddeploy/outputs.py +211 -0
- pulumi_gcp/clouddeploy/target.py +47 -0
- pulumi_gcp/cloudfunctionsv2/_inputs.py +6 -6
- pulumi_gcp/cloudfunctionsv2/outputs.py +8 -8
- pulumi_gcp/cloudrunv2/job.py +4 -4
- pulumi_gcp/cloudrunv2/service.py +4 -4
- pulumi_gcp/composer/get_user_workloads_config_map.py +4 -0
- pulumi_gcp/composer/get_user_workloads_secret.py +4 -0
- pulumi_gcp/composer/user_workloads_config_map.py +14 -0
- pulumi_gcp/composer/user_workloads_secret.py +6 -0
- pulumi_gcp/compute/_inputs.py +566 -25
- pulumi_gcp/compute/disk.py +21 -7
- pulumi_gcp/compute/firewall_policy_rule.py +12 -0
- pulumi_gcp/compute/get_forwarding_rules.py +2 -2
- pulumi_gcp/compute/get_global_forwarding_rule.py +23 -1
- pulumi_gcp/compute/get_instance_group_manager.py +12 -1
- pulumi_gcp/compute/get_network.py +35 -1
- pulumi_gcp/compute/get_region_instance_group_manager.py +12 -1
- pulumi_gcp/compute/get_region_network_endpoint_group.py +12 -1
- pulumi_gcp/compute/global_forwarding_rule.py +142 -2
- pulumi_gcp/compute/instance_group_manager.py +28 -0
- pulumi_gcp/compute/network.py +75 -0
- pulumi_gcp/compute/outputs.py +655 -26
- pulumi_gcp/compute/project_cloud_armor_tier.py +7 -7
- pulumi_gcp/compute/region_health_check.py +28 -0
- pulumi_gcp/compute/region_instance_group_manager.py +28 -0
- pulumi_gcp/compute/region_network_endpoint.py +28 -0
- pulumi_gcp/compute/region_network_endpoint_group.py +70 -2
- pulumi_gcp/compute/subnetwork.py +30 -2
- pulumi_gcp/compute/url_map.py +7 -7
- pulumi_gcp/config/__init__.pyi +2 -0
- pulumi_gcp/config/vars.py +4 -0
- pulumi_gcp/container/_inputs.py +201 -3
- pulumi_gcp/container/cluster.py +68 -14
- pulumi_gcp/container/get_cluster.py +12 -1
- pulumi_gcp/container/outputs.py +249 -3
- pulumi_gcp/dataproc/_inputs.py +209 -1
- pulumi_gcp/dataproc/batch.py +76 -0
- pulumi_gcp/dataproc/outputs.py +169 -3
- pulumi_gcp/diagflow/_inputs.py +3 -3
- pulumi_gcp/diagflow/outputs.py +2 -2
- pulumi_gcp/discoveryengine/search_engine.py +7 -7
- pulumi_gcp/firebase/_inputs.py +99 -0
- pulumi_gcp/firebase/database_instance.py +24 -6
- pulumi_gcp/firebase/hosting_version.py +96 -0
- pulumi_gcp/firebase/outputs.py +59 -0
- pulumi_gcp/firebase/project.py +6 -6
- pulumi_gcp/firebaserules/release.py +76 -0
- pulumi_gcp/firestore/field.py +4 -4
- pulumi_gcp/gemini/__init__.py +15 -0
- pulumi_gcp/gemini/_inputs.py +183 -0
- pulumi_gcp/gemini/code_repository_index.py +659 -0
- pulumi_gcp/gemini/get_repository_group_iam_policy.py +171 -0
- pulumi_gcp/gemini/outputs.py +130 -0
- pulumi_gcp/gemini/repository_group.py +586 -0
- pulumi_gcp/gemini/repository_group_iam_binding.py +604 -0
- pulumi_gcp/gemini/repository_group_iam_member.py +604 -0
- pulumi_gcp/gemini/repository_group_iam_policy.py +443 -0
- pulumi_gcp/gkehub/_inputs.py +30 -10
- pulumi_gcp/gkehub/membership_binding.py +6 -6
- pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
- pulumi_gcp/gkehub/namespace.py +4 -4
- pulumi_gcp/gkehub/outputs.py +21 -7
- pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
- pulumi_gcp/iam/__init__.py +1 -0
- pulumi_gcp/iam/_inputs.py +137 -0
- pulumi_gcp/iam/folders_policy_binding.py +16 -0
- pulumi_gcp/iam/organizations_policy_binding.py +16 -0
- pulumi_gcp/iam/outputs.py +99 -0
- pulumi_gcp/iam/principal_access_boundary_policy.py +16 -0
- pulumi_gcp/iam/projects_policy_binding.py +917 -0
- pulumi_gcp/iap/tunnel_dest_group.py +2 -2
- pulumi_gcp/identityplatform/_inputs.py +6 -6
- pulumi_gcp/identityplatform/config.py +2 -2
- pulumi_gcp/identityplatform/outputs.py +4 -4
- pulumi_gcp/integrationconnectors/_inputs.py +15 -15
- pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
- pulumi_gcp/integrationconnectors/outputs.py +10 -10
- pulumi_gcp/looker/instance.py +35 -14
- pulumi_gcp/monitoring/_inputs.py +13 -6
- pulumi_gcp/monitoring/outputs.py +10 -4
- pulumi_gcp/netapp/_inputs.py +3 -3
- pulumi_gcp/netapp/active_directory.py +7 -7
- pulumi_gcp/netapp/outputs.py +2 -2
- pulumi_gcp/netapp/volume.py +11 -11
- pulumi_gcp/networkconnectivity/_inputs.py +10 -12
- pulumi_gcp/networkconnectivity/outputs.py +6 -8
- pulumi_gcp/networkconnectivity/spoke.py +10 -10
- pulumi_gcp/networksecurity/__init__.py +7 -0
- pulumi_gcp/networksecurity/_inputs.py +2018 -0
- pulumi_gcp/networksecurity/authz_policy.py +1008 -0
- pulumi_gcp/networksecurity/intercept_deployment.py +846 -0
- pulumi_gcp/networksecurity/intercept_deployment_group.py +752 -0
- pulumi_gcp/networksecurity/mirroring_deployment.py +848 -0
- pulumi_gcp/networksecurity/mirroring_deployment_group.py +752 -0
- pulumi_gcp/networksecurity/mirroring_endpoint_group.py +737 -0
- pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +840 -0
- pulumi_gcp/networksecurity/outputs.py +1463 -0
- pulumi_gcp/networkservices/__init__.py +1 -0
- pulumi_gcp/networkservices/authz_extension.py +1080 -0
- pulumi_gcp/oracledatabase/autonomous_database.py +46 -8
- pulumi_gcp/oracledatabase/cloud_exadata_infrastructure.py +42 -4
- pulumi_gcp/oracledatabase/cloud_vm_cluster.py +50 -8
- pulumi_gcp/oracledatabase/get_autonomous_database.py +12 -1
- pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructure.py +12 -1
- pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +12 -1
- pulumi_gcp/oracledatabase/outputs.py +21 -0
- pulumi_gcp/orgpolicy/_inputs.py +40 -0
- pulumi_gcp/orgpolicy/outputs.py +24 -0
- pulumi_gcp/orgpolicy/policy.py +66 -10
- pulumi_gcp/parallelstore/instance.py +4 -0
- pulumi_gcp/provider.py +20 -0
- pulumi_gcp/pubsub/subscription.py +6 -6
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/redis/_inputs.py +435 -3
- pulumi_gcp/redis/cluster.py +287 -16
- pulumi_gcp/redis/outputs.py +304 -2
- pulumi_gcp/serviceaccount/get_account_id_token.py +2 -2
- pulumi_gcp/serviceaccount/get_account_key.py +2 -2
- pulumi_gcp/sql/_inputs.py +3 -3
- pulumi_gcp/sql/database_instance.py +14 -14
- pulumi_gcp/sql/outputs.py +2 -2
- pulumi_gcp/storage/_inputs.py +53 -6
- pulumi_gcp/storage/get_bucket.py +2 -2
- pulumi_gcp/storage/get_bucket_object_content.py +2 -2
- pulumi_gcp/storage/outputs.py +33 -4
- pulumi_gcp/tpu/__init__.py +1 -0
- pulumi_gcp/tpu/_inputs.py +214 -24
- pulumi_gcp/tpu/outputs.py +182 -16
- pulumi_gcp/tpu/v2_queued_resource.py +434 -0
- pulumi_gcp/tpu/v2_vm.py +63 -0
- pulumi_gcp/vertex/ai_endpoint.py +4 -4
- pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
- pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
- {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/METADATA +1 -1
- {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/RECORD +168 -147
- {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/WHEEL +0 -0
- {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,917 @@
|
|
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__ = ['ProjectsPolicyBindingArgs', 'ProjectsPolicyBinding']
|
20
|
+
|
21
|
+
@pulumi.input_type
|
22
|
+
class ProjectsPolicyBindingArgs:
|
23
|
+
def __init__(__self__, *,
|
24
|
+
location: pulumi.Input[str],
|
25
|
+
policy: pulumi.Input[str],
|
26
|
+
policy_binding_id: pulumi.Input[str],
|
27
|
+
target: pulumi.Input['ProjectsPolicyBindingTargetArgs'],
|
28
|
+
annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
29
|
+
condition: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']] = None,
|
30
|
+
display_name: Optional[pulumi.Input[str]] = None,
|
31
|
+
policy_kind: Optional[pulumi.Input[str]] = None,
|
32
|
+
project: Optional[pulumi.Input[str]] = None):
|
33
|
+
"""
|
34
|
+
The set of arguments for constructing a ProjectsPolicyBinding resource.
|
35
|
+
:param pulumi.Input[str] location: The location of the Policy Binding
|
36
|
+
:param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
37
|
+
:param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
|
38
|
+
:param pulumi.Input['ProjectsPolicyBindingTargetArgs'] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
39
|
+
Structure is documented below.
|
40
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
41
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
42
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
43
|
+
:param pulumi.Input['ProjectsPolicyBindingConditionArgs'] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
44
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
45
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
46
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
47
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
48
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
49
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
50
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
51
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
52
|
+
documentation for additional information.
|
53
|
+
:param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
54
|
+
:param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
55
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
56
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
57
|
+
"""
|
58
|
+
pulumi.set(__self__, "location", location)
|
59
|
+
pulumi.set(__self__, "policy", policy)
|
60
|
+
pulumi.set(__self__, "policy_binding_id", policy_binding_id)
|
61
|
+
pulumi.set(__self__, "target", target)
|
62
|
+
if annotations is not None:
|
63
|
+
pulumi.set(__self__, "annotations", annotations)
|
64
|
+
if condition is not None:
|
65
|
+
pulumi.set(__self__, "condition", condition)
|
66
|
+
if display_name is not None:
|
67
|
+
pulumi.set(__self__, "display_name", display_name)
|
68
|
+
if policy_kind is not None:
|
69
|
+
pulumi.set(__self__, "policy_kind", policy_kind)
|
70
|
+
if project is not None:
|
71
|
+
pulumi.set(__self__, "project", project)
|
72
|
+
|
73
|
+
@property
|
74
|
+
@pulumi.getter
|
75
|
+
def location(self) -> pulumi.Input[str]:
|
76
|
+
"""
|
77
|
+
The location of the Policy Binding
|
78
|
+
"""
|
79
|
+
return pulumi.get(self, "location")
|
80
|
+
|
81
|
+
@location.setter
|
82
|
+
def location(self, value: pulumi.Input[str]):
|
83
|
+
pulumi.set(self, "location", value)
|
84
|
+
|
85
|
+
@property
|
86
|
+
@pulumi.getter
|
87
|
+
def policy(self) -> pulumi.Input[str]:
|
88
|
+
"""
|
89
|
+
Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
90
|
+
"""
|
91
|
+
return pulumi.get(self, "policy")
|
92
|
+
|
93
|
+
@policy.setter
|
94
|
+
def policy(self, value: pulumi.Input[str]):
|
95
|
+
pulumi.set(self, "policy", value)
|
96
|
+
|
97
|
+
@property
|
98
|
+
@pulumi.getter(name="policyBindingId")
|
99
|
+
def policy_binding_id(self) -> pulumi.Input[str]:
|
100
|
+
"""
|
101
|
+
The Policy Binding ID.
|
102
|
+
"""
|
103
|
+
return pulumi.get(self, "policy_binding_id")
|
104
|
+
|
105
|
+
@policy_binding_id.setter
|
106
|
+
def policy_binding_id(self, value: pulumi.Input[str]):
|
107
|
+
pulumi.set(self, "policy_binding_id", value)
|
108
|
+
|
109
|
+
@property
|
110
|
+
@pulumi.getter
|
111
|
+
def target(self) -> pulumi.Input['ProjectsPolicyBindingTargetArgs']:
|
112
|
+
"""
|
113
|
+
Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
114
|
+
Structure is documented below.
|
115
|
+
"""
|
116
|
+
return pulumi.get(self, "target")
|
117
|
+
|
118
|
+
@target.setter
|
119
|
+
def target(self, value: pulumi.Input['ProjectsPolicyBindingTargetArgs']):
|
120
|
+
pulumi.set(self, "target", value)
|
121
|
+
|
122
|
+
@property
|
123
|
+
@pulumi.getter
|
124
|
+
def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
125
|
+
"""
|
126
|
+
Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
127
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
128
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
129
|
+
"""
|
130
|
+
return pulumi.get(self, "annotations")
|
131
|
+
|
132
|
+
@annotations.setter
|
133
|
+
def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
134
|
+
pulumi.set(self, "annotations", value)
|
135
|
+
|
136
|
+
@property
|
137
|
+
@pulumi.getter
|
138
|
+
def condition(self) -> Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]:
|
139
|
+
"""
|
140
|
+
Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
141
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
142
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
143
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
144
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
145
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
146
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
147
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
148
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
149
|
+
documentation for additional information.
|
150
|
+
"""
|
151
|
+
return pulumi.get(self, "condition")
|
152
|
+
|
153
|
+
@condition.setter
|
154
|
+
def condition(self, value: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]):
|
155
|
+
pulumi.set(self, "condition", value)
|
156
|
+
|
157
|
+
@property
|
158
|
+
@pulumi.getter(name="displayName")
|
159
|
+
def display_name(self) -> Optional[pulumi.Input[str]]:
|
160
|
+
"""
|
161
|
+
Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
162
|
+
"""
|
163
|
+
return pulumi.get(self, "display_name")
|
164
|
+
|
165
|
+
@display_name.setter
|
166
|
+
def display_name(self, value: Optional[pulumi.Input[str]]):
|
167
|
+
pulumi.set(self, "display_name", value)
|
168
|
+
|
169
|
+
@property
|
170
|
+
@pulumi.getter(name="policyKind")
|
171
|
+
def policy_kind(self) -> Optional[pulumi.Input[str]]:
|
172
|
+
"""
|
173
|
+
Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
174
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
175
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
176
|
+
"""
|
177
|
+
return pulumi.get(self, "policy_kind")
|
178
|
+
|
179
|
+
@policy_kind.setter
|
180
|
+
def policy_kind(self, value: Optional[pulumi.Input[str]]):
|
181
|
+
pulumi.set(self, "policy_kind", value)
|
182
|
+
|
183
|
+
@property
|
184
|
+
@pulumi.getter
|
185
|
+
def project(self) -> Optional[pulumi.Input[str]]:
|
186
|
+
return pulumi.get(self, "project")
|
187
|
+
|
188
|
+
@project.setter
|
189
|
+
def project(self, value: Optional[pulumi.Input[str]]):
|
190
|
+
pulumi.set(self, "project", value)
|
191
|
+
|
192
|
+
|
193
|
+
@pulumi.input_type
|
194
|
+
class _ProjectsPolicyBindingState:
|
195
|
+
def __init__(__self__, *,
|
196
|
+
annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
197
|
+
condition: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']] = None,
|
198
|
+
create_time: Optional[pulumi.Input[str]] = None,
|
199
|
+
display_name: Optional[pulumi.Input[str]] = None,
|
200
|
+
effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
201
|
+
etag: Optional[pulumi.Input[str]] = None,
|
202
|
+
location: Optional[pulumi.Input[str]] = None,
|
203
|
+
name: Optional[pulumi.Input[str]] = None,
|
204
|
+
policy: Optional[pulumi.Input[str]] = None,
|
205
|
+
policy_binding_id: Optional[pulumi.Input[str]] = None,
|
206
|
+
policy_kind: Optional[pulumi.Input[str]] = None,
|
207
|
+
policy_uid: Optional[pulumi.Input[str]] = None,
|
208
|
+
project: Optional[pulumi.Input[str]] = None,
|
209
|
+
target: Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']] = None,
|
210
|
+
uid: Optional[pulumi.Input[str]] = None,
|
211
|
+
update_time: Optional[pulumi.Input[str]] = None):
|
212
|
+
"""
|
213
|
+
Input properties used for looking up and filtering ProjectsPolicyBinding resources.
|
214
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
215
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
216
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
217
|
+
:param pulumi.Input['ProjectsPolicyBindingConditionArgs'] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
218
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
219
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
220
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
221
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
222
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
223
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
224
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
225
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
226
|
+
documentation for additional information.
|
227
|
+
:param pulumi.Input[str] create_time: Output only. The time when the policy binding was created.
|
228
|
+
:param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
229
|
+
:param pulumi.Input[str] etag: Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
|
230
|
+
:param pulumi.Input[str] location: The location of the Policy Binding
|
231
|
+
:param pulumi.Input[str] name: The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
|
232
|
+
:param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
233
|
+
:param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
|
234
|
+
:param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
235
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
236
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
237
|
+
:param pulumi.Input[str] policy_uid: Output only. The globally unique ID of the policy to be bound.
|
238
|
+
:param pulumi.Input['ProjectsPolicyBindingTargetArgs'] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
239
|
+
Structure is documented below.
|
240
|
+
:param pulumi.Input[str] uid: Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
|
241
|
+
:param pulumi.Input[str] update_time: Output only. The time when the policy binding was most recently updated.
|
242
|
+
"""
|
243
|
+
if annotations is not None:
|
244
|
+
pulumi.set(__self__, "annotations", annotations)
|
245
|
+
if condition is not None:
|
246
|
+
pulumi.set(__self__, "condition", condition)
|
247
|
+
if create_time is not None:
|
248
|
+
pulumi.set(__self__, "create_time", create_time)
|
249
|
+
if display_name is not None:
|
250
|
+
pulumi.set(__self__, "display_name", display_name)
|
251
|
+
if effective_annotations is not None:
|
252
|
+
pulumi.set(__self__, "effective_annotations", effective_annotations)
|
253
|
+
if etag is not None:
|
254
|
+
pulumi.set(__self__, "etag", etag)
|
255
|
+
if location is not None:
|
256
|
+
pulumi.set(__self__, "location", location)
|
257
|
+
if name is not None:
|
258
|
+
pulumi.set(__self__, "name", name)
|
259
|
+
if policy is not None:
|
260
|
+
pulumi.set(__self__, "policy", policy)
|
261
|
+
if policy_binding_id is not None:
|
262
|
+
pulumi.set(__self__, "policy_binding_id", policy_binding_id)
|
263
|
+
if policy_kind is not None:
|
264
|
+
pulumi.set(__self__, "policy_kind", policy_kind)
|
265
|
+
if policy_uid is not None:
|
266
|
+
pulumi.set(__self__, "policy_uid", policy_uid)
|
267
|
+
if project is not None:
|
268
|
+
pulumi.set(__self__, "project", project)
|
269
|
+
if target is not None:
|
270
|
+
pulumi.set(__self__, "target", target)
|
271
|
+
if uid is not None:
|
272
|
+
pulumi.set(__self__, "uid", uid)
|
273
|
+
if update_time is not None:
|
274
|
+
pulumi.set(__self__, "update_time", update_time)
|
275
|
+
|
276
|
+
@property
|
277
|
+
@pulumi.getter
|
278
|
+
def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
279
|
+
"""
|
280
|
+
Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
281
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
282
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
283
|
+
"""
|
284
|
+
return pulumi.get(self, "annotations")
|
285
|
+
|
286
|
+
@annotations.setter
|
287
|
+
def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
288
|
+
pulumi.set(self, "annotations", value)
|
289
|
+
|
290
|
+
@property
|
291
|
+
@pulumi.getter
|
292
|
+
def condition(self) -> Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]:
|
293
|
+
"""
|
294
|
+
Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
295
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
296
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
297
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
298
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
299
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
300
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
301
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
302
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
303
|
+
documentation for additional information.
|
304
|
+
"""
|
305
|
+
return pulumi.get(self, "condition")
|
306
|
+
|
307
|
+
@condition.setter
|
308
|
+
def condition(self, value: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]):
|
309
|
+
pulumi.set(self, "condition", value)
|
310
|
+
|
311
|
+
@property
|
312
|
+
@pulumi.getter(name="createTime")
|
313
|
+
def create_time(self) -> Optional[pulumi.Input[str]]:
|
314
|
+
"""
|
315
|
+
Output only. The time when the policy binding was created.
|
316
|
+
"""
|
317
|
+
return pulumi.get(self, "create_time")
|
318
|
+
|
319
|
+
@create_time.setter
|
320
|
+
def create_time(self, value: Optional[pulumi.Input[str]]):
|
321
|
+
pulumi.set(self, "create_time", value)
|
322
|
+
|
323
|
+
@property
|
324
|
+
@pulumi.getter(name="displayName")
|
325
|
+
def display_name(self) -> Optional[pulumi.Input[str]]:
|
326
|
+
"""
|
327
|
+
Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
328
|
+
"""
|
329
|
+
return pulumi.get(self, "display_name")
|
330
|
+
|
331
|
+
@display_name.setter
|
332
|
+
def display_name(self, value: Optional[pulumi.Input[str]]):
|
333
|
+
pulumi.set(self, "display_name", value)
|
334
|
+
|
335
|
+
@property
|
336
|
+
@pulumi.getter(name="effectiveAnnotations")
|
337
|
+
def effective_annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
338
|
+
return pulumi.get(self, "effective_annotations")
|
339
|
+
|
340
|
+
@effective_annotations.setter
|
341
|
+
def effective_annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
342
|
+
pulumi.set(self, "effective_annotations", value)
|
343
|
+
|
344
|
+
@property
|
345
|
+
@pulumi.getter
|
346
|
+
def etag(self) -> Optional[pulumi.Input[str]]:
|
347
|
+
"""
|
348
|
+
Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
|
349
|
+
"""
|
350
|
+
return pulumi.get(self, "etag")
|
351
|
+
|
352
|
+
@etag.setter
|
353
|
+
def etag(self, value: Optional[pulumi.Input[str]]):
|
354
|
+
pulumi.set(self, "etag", value)
|
355
|
+
|
356
|
+
@property
|
357
|
+
@pulumi.getter
|
358
|
+
def location(self) -> Optional[pulumi.Input[str]]:
|
359
|
+
"""
|
360
|
+
The location of the Policy Binding
|
361
|
+
"""
|
362
|
+
return pulumi.get(self, "location")
|
363
|
+
|
364
|
+
@location.setter
|
365
|
+
def location(self, value: Optional[pulumi.Input[str]]):
|
366
|
+
pulumi.set(self, "location", value)
|
367
|
+
|
368
|
+
@property
|
369
|
+
@pulumi.getter
|
370
|
+
def name(self) -> Optional[pulumi.Input[str]]:
|
371
|
+
"""
|
372
|
+
The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
|
373
|
+
"""
|
374
|
+
return pulumi.get(self, "name")
|
375
|
+
|
376
|
+
@name.setter
|
377
|
+
def name(self, value: Optional[pulumi.Input[str]]):
|
378
|
+
pulumi.set(self, "name", value)
|
379
|
+
|
380
|
+
@property
|
381
|
+
@pulumi.getter
|
382
|
+
def policy(self) -> Optional[pulumi.Input[str]]:
|
383
|
+
"""
|
384
|
+
Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
385
|
+
"""
|
386
|
+
return pulumi.get(self, "policy")
|
387
|
+
|
388
|
+
@policy.setter
|
389
|
+
def policy(self, value: Optional[pulumi.Input[str]]):
|
390
|
+
pulumi.set(self, "policy", value)
|
391
|
+
|
392
|
+
@property
|
393
|
+
@pulumi.getter(name="policyBindingId")
|
394
|
+
def policy_binding_id(self) -> Optional[pulumi.Input[str]]:
|
395
|
+
"""
|
396
|
+
The Policy Binding ID.
|
397
|
+
"""
|
398
|
+
return pulumi.get(self, "policy_binding_id")
|
399
|
+
|
400
|
+
@policy_binding_id.setter
|
401
|
+
def policy_binding_id(self, value: Optional[pulumi.Input[str]]):
|
402
|
+
pulumi.set(self, "policy_binding_id", value)
|
403
|
+
|
404
|
+
@property
|
405
|
+
@pulumi.getter(name="policyKind")
|
406
|
+
def policy_kind(self) -> Optional[pulumi.Input[str]]:
|
407
|
+
"""
|
408
|
+
Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
409
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
410
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
411
|
+
"""
|
412
|
+
return pulumi.get(self, "policy_kind")
|
413
|
+
|
414
|
+
@policy_kind.setter
|
415
|
+
def policy_kind(self, value: Optional[pulumi.Input[str]]):
|
416
|
+
pulumi.set(self, "policy_kind", value)
|
417
|
+
|
418
|
+
@property
|
419
|
+
@pulumi.getter(name="policyUid")
|
420
|
+
def policy_uid(self) -> Optional[pulumi.Input[str]]:
|
421
|
+
"""
|
422
|
+
Output only. The globally unique ID of the policy to be bound.
|
423
|
+
"""
|
424
|
+
return pulumi.get(self, "policy_uid")
|
425
|
+
|
426
|
+
@policy_uid.setter
|
427
|
+
def policy_uid(self, value: Optional[pulumi.Input[str]]):
|
428
|
+
pulumi.set(self, "policy_uid", value)
|
429
|
+
|
430
|
+
@property
|
431
|
+
@pulumi.getter
|
432
|
+
def project(self) -> Optional[pulumi.Input[str]]:
|
433
|
+
return pulumi.get(self, "project")
|
434
|
+
|
435
|
+
@project.setter
|
436
|
+
def project(self, value: Optional[pulumi.Input[str]]):
|
437
|
+
pulumi.set(self, "project", value)
|
438
|
+
|
439
|
+
@property
|
440
|
+
@pulumi.getter
|
441
|
+
def target(self) -> Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']]:
|
442
|
+
"""
|
443
|
+
Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
444
|
+
Structure is documented below.
|
445
|
+
"""
|
446
|
+
return pulumi.get(self, "target")
|
447
|
+
|
448
|
+
@target.setter
|
449
|
+
def target(self, value: Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']]):
|
450
|
+
pulumi.set(self, "target", value)
|
451
|
+
|
452
|
+
@property
|
453
|
+
@pulumi.getter
|
454
|
+
def uid(self) -> Optional[pulumi.Input[str]]:
|
455
|
+
"""
|
456
|
+
Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
|
457
|
+
"""
|
458
|
+
return pulumi.get(self, "uid")
|
459
|
+
|
460
|
+
@uid.setter
|
461
|
+
def uid(self, value: Optional[pulumi.Input[str]]):
|
462
|
+
pulumi.set(self, "uid", value)
|
463
|
+
|
464
|
+
@property
|
465
|
+
@pulumi.getter(name="updateTime")
|
466
|
+
def update_time(self) -> Optional[pulumi.Input[str]]:
|
467
|
+
"""
|
468
|
+
Output only. The time when the policy binding was most recently updated.
|
469
|
+
"""
|
470
|
+
return pulumi.get(self, "update_time")
|
471
|
+
|
472
|
+
@update_time.setter
|
473
|
+
def update_time(self, value: Optional[pulumi.Input[str]]):
|
474
|
+
pulumi.set(self, "update_time", value)
|
475
|
+
|
476
|
+
|
477
|
+
class ProjectsPolicyBinding(pulumi.CustomResource):
|
478
|
+
@overload
|
479
|
+
def __init__(__self__,
|
480
|
+
resource_name: str,
|
481
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
482
|
+
annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
483
|
+
condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
|
484
|
+
display_name: Optional[pulumi.Input[str]] = None,
|
485
|
+
location: Optional[pulumi.Input[str]] = None,
|
486
|
+
policy: Optional[pulumi.Input[str]] = None,
|
487
|
+
policy_binding_id: Optional[pulumi.Input[str]] = None,
|
488
|
+
policy_kind: Optional[pulumi.Input[str]] = None,
|
489
|
+
project: Optional[pulumi.Input[str]] = None,
|
490
|
+
target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
|
491
|
+
__props__=None):
|
492
|
+
"""
|
493
|
+
A policy binding to a Project
|
494
|
+
|
495
|
+
To get more information about ProjectsPolicyBinding, see:
|
496
|
+
|
497
|
+
* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v3/projects.locations.policyBindings)
|
498
|
+
* How-to Guides
|
499
|
+
* [Apply a policy binding](https://cloud.google.com/iam/docs/principal-access-boundary-policies-create#create_binding)
|
500
|
+
|
501
|
+
## Example Usage
|
502
|
+
|
503
|
+
### Iam Projects Policy Binding
|
504
|
+
|
505
|
+
```python
|
506
|
+
import pulumi
|
507
|
+
import pulumi_gcp as gcp
|
508
|
+
|
509
|
+
project = gcp.organizations.get_project()
|
510
|
+
pab_policy = gcp.iam.PrincipalAccessBoundaryPolicy("pab_policy",
|
511
|
+
organization="123456789",
|
512
|
+
location="global",
|
513
|
+
display_name="test project binding",
|
514
|
+
principal_access_boundary_policy_id="my-pab-policy")
|
515
|
+
my_project_binding = gcp.iam.ProjectsPolicyBinding("my-project-binding",
|
516
|
+
project=project.project_id,
|
517
|
+
location="global",
|
518
|
+
display_name="test project binding",
|
519
|
+
policy_kind="PRINCIPAL_ACCESS_BOUNDARY",
|
520
|
+
policy_binding_id="test-project-binding",
|
521
|
+
policy=pab_policy.principal_access_boundary_policy_id.apply(lambda principal_access_boundary_policy_id: f"organizations/123456789/locations/global/principalAccessBoundaryPolicies/{principal_access_boundary_policy_id}"),
|
522
|
+
target={
|
523
|
+
"principal_set": f"//cloudresourcemanager.googleapis.com/projects/{project.project_id}",
|
524
|
+
})
|
525
|
+
```
|
526
|
+
|
527
|
+
## Import
|
528
|
+
|
529
|
+
ProjectsPolicyBinding can be imported using any of these accepted formats:
|
530
|
+
|
531
|
+
* `projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}`
|
532
|
+
|
533
|
+
* `{{project}}/{{location}}/{{policy_binding_id}}`
|
534
|
+
|
535
|
+
* `{{location}}/{{policy_binding_id}}`
|
536
|
+
|
537
|
+
When using the `pulumi import` command, ProjectsPolicyBinding can be imported using one of the formats above. For example:
|
538
|
+
|
539
|
+
```sh
|
540
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}
|
541
|
+
```
|
542
|
+
|
543
|
+
```sh
|
544
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{project}}/{{location}}/{{policy_binding_id}}
|
545
|
+
```
|
546
|
+
|
547
|
+
```sh
|
548
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{location}}/{{policy_binding_id}}
|
549
|
+
```
|
550
|
+
|
551
|
+
:param str resource_name: The name of the resource.
|
552
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
553
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
554
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
555
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
556
|
+
:param pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
557
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
558
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
559
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
560
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
561
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
562
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
563
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
564
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
565
|
+
documentation for additional information.
|
566
|
+
:param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
567
|
+
:param pulumi.Input[str] location: The location of the Policy Binding
|
568
|
+
:param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
569
|
+
:param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
|
570
|
+
:param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
571
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
572
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
573
|
+
:param pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
574
|
+
Structure is documented below.
|
575
|
+
"""
|
576
|
+
...
|
577
|
+
@overload
|
578
|
+
def __init__(__self__,
|
579
|
+
resource_name: str,
|
580
|
+
args: ProjectsPolicyBindingArgs,
|
581
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
582
|
+
"""
|
583
|
+
A policy binding to a Project
|
584
|
+
|
585
|
+
To get more information about ProjectsPolicyBinding, see:
|
586
|
+
|
587
|
+
* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v3/projects.locations.policyBindings)
|
588
|
+
* How-to Guides
|
589
|
+
* [Apply a policy binding](https://cloud.google.com/iam/docs/principal-access-boundary-policies-create#create_binding)
|
590
|
+
|
591
|
+
## Example Usage
|
592
|
+
|
593
|
+
### Iam Projects Policy Binding
|
594
|
+
|
595
|
+
```python
|
596
|
+
import pulumi
|
597
|
+
import pulumi_gcp as gcp
|
598
|
+
|
599
|
+
project = gcp.organizations.get_project()
|
600
|
+
pab_policy = gcp.iam.PrincipalAccessBoundaryPolicy("pab_policy",
|
601
|
+
organization="123456789",
|
602
|
+
location="global",
|
603
|
+
display_name="test project binding",
|
604
|
+
principal_access_boundary_policy_id="my-pab-policy")
|
605
|
+
my_project_binding = gcp.iam.ProjectsPolicyBinding("my-project-binding",
|
606
|
+
project=project.project_id,
|
607
|
+
location="global",
|
608
|
+
display_name="test project binding",
|
609
|
+
policy_kind="PRINCIPAL_ACCESS_BOUNDARY",
|
610
|
+
policy_binding_id="test-project-binding",
|
611
|
+
policy=pab_policy.principal_access_boundary_policy_id.apply(lambda principal_access_boundary_policy_id: f"organizations/123456789/locations/global/principalAccessBoundaryPolicies/{principal_access_boundary_policy_id}"),
|
612
|
+
target={
|
613
|
+
"principal_set": f"//cloudresourcemanager.googleapis.com/projects/{project.project_id}",
|
614
|
+
})
|
615
|
+
```
|
616
|
+
|
617
|
+
## Import
|
618
|
+
|
619
|
+
ProjectsPolicyBinding can be imported using any of these accepted formats:
|
620
|
+
|
621
|
+
* `projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}`
|
622
|
+
|
623
|
+
* `{{project}}/{{location}}/{{policy_binding_id}}`
|
624
|
+
|
625
|
+
* `{{location}}/{{policy_binding_id}}`
|
626
|
+
|
627
|
+
When using the `pulumi import` command, ProjectsPolicyBinding can be imported using one of the formats above. For example:
|
628
|
+
|
629
|
+
```sh
|
630
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}
|
631
|
+
```
|
632
|
+
|
633
|
+
```sh
|
634
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{project}}/{{location}}/{{policy_binding_id}}
|
635
|
+
```
|
636
|
+
|
637
|
+
```sh
|
638
|
+
$ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{location}}/{{policy_binding_id}}
|
639
|
+
```
|
640
|
+
|
641
|
+
:param str resource_name: The name of the resource.
|
642
|
+
:param ProjectsPolicyBindingArgs args: The arguments to use to populate this resource's properties.
|
643
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
644
|
+
"""
|
645
|
+
...
|
646
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
647
|
+
resource_args, opts = _utilities.get_resource_args_opts(ProjectsPolicyBindingArgs, pulumi.ResourceOptions, *args, **kwargs)
|
648
|
+
if resource_args is not None:
|
649
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
650
|
+
else:
|
651
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
652
|
+
|
653
|
+
def _internal_init(__self__,
|
654
|
+
resource_name: str,
|
655
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
656
|
+
annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
657
|
+
condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
|
658
|
+
display_name: Optional[pulumi.Input[str]] = None,
|
659
|
+
location: Optional[pulumi.Input[str]] = None,
|
660
|
+
policy: Optional[pulumi.Input[str]] = None,
|
661
|
+
policy_binding_id: Optional[pulumi.Input[str]] = None,
|
662
|
+
policy_kind: Optional[pulumi.Input[str]] = None,
|
663
|
+
project: Optional[pulumi.Input[str]] = None,
|
664
|
+
target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
|
665
|
+
__props__=None):
|
666
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
667
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
668
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
669
|
+
if opts.id is None:
|
670
|
+
if __props__ is not None:
|
671
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
672
|
+
__props__ = ProjectsPolicyBindingArgs.__new__(ProjectsPolicyBindingArgs)
|
673
|
+
|
674
|
+
__props__.__dict__["annotations"] = annotations
|
675
|
+
__props__.__dict__["condition"] = condition
|
676
|
+
__props__.__dict__["display_name"] = display_name
|
677
|
+
if location is None and not opts.urn:
|
678
|
+
raise TypeError("Missing required property 'location'")
|
679
|
+
__props__.__dict__["location"] = location
|
680
|
+
if policy is None and not opts.urn:
|
681
|
+
raise TypeError("Missing required property 'policy'")
|
682
|
+
__props__.__dict__["policy"] = policy
|
683
|
+
if policy_binding_id is None and not opts.urn:
|
684
|
+
raise TypeError("Missing required property 'policy_binding_id'")
|
685
|
+
__props__.__dict__["policy_binding_id"] = policy_binding_id
|
686
|
+
__props__.__dict__["policy_kind"] = policy_kind
|
687
|
+
__props__.__dict__["project"] = project
|
688
|
+
if target is None and not opts.urn:
|
689
|
+
raise TypeError("Missing required property 'target'")
|
690
|
+
__props__.__dict__["target"] = target
|
691
|
+
__props__.__dict__["create_time"] = None
|
692
|
+
__props__.__dict__["effective_annotations"] = None
|
693
|
+
__props__.__dict__["etag"] = None
|
694
|
+
__props__.__dict__["name"] = None
|
695
|
+
__props__.__dict__["policy_uid"] = None
|
696
|
+
__props__.__dict__["uid"] = None
|
697
|
+
__props__.__dict__["update_time"] = None
|
698
|
+
super(ProjectsPolicyBinding, __self__).__init__(
|
699
|
+
'gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding',
|
700
|
+
resource_name,
|
701
|
+
__props__,
|
702
|
+
opts)
|
703
|
+
|
704
|
+
@staticmethod
|
705
|
+
def get(resource_name: str,
|
706
|
+
id: pulumi.Input[str],
|
707
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
708
|
+
annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
709
|
+
condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
|
710
|
+
create_time: Optional[pulumi.Input[str]] = None,
|
711
|
+
display_name: Optional[pulumi.Input[str]] = None,
|
712
|
+
effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
713
|
+
etag: Optional[pulumi.Input[str]] = None,
|
714
|
+
location: Optional[pulumi.Input[str]] = None,
|
715
|
+
name: Optional[pulumi.Input[str]] = None,
|
716
|
+
policy: Optional[pulumi.Input[str]] = None,
|
717
|
+
policy_binding_id: Optional[pulumi.Input[str]] = None,
|
718
|
+
policy_kind: Optional[pulumi.Input[str]] = None,
|
719
|
+
policy_uid: Optional[pulumi.Input[str]] = None,
|
720
|
+
project: Optional[pulumi.Input[str]] = None,
|
721
|
+
target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
|
722
|
+
uid: Optional[pulumi.Input[str]] = None,
|
723
|
+
update_time: Optional[pulumi.Input[str]] = None) -> 'ProjectsPolicyBinding':
|
724
|
+
"""
|
725
|
+
Get an existing ProjectsPolicyBinding resource's state with the given name, id, and optional extra
|
726
|
+
properties used to qualify the lookup.
|
727
|
+
|
728
|
+
:param str resource_name: The unique name of the resulting resource.
|
729
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
730
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
731
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
732
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
733
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
734
|
+
:param pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
735
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
736
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
737
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
738
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
739
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
740
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
741
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
742
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
743
|
+
documentation for additional information.
|
744
|
+
:param pulumi.Input[str] create_time: Output only. The time when the policy binding was created.
|
745
|
+
:param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
746
|
+
:param pulumi.Input[str] etag: Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
|
747
|
+
:param pulumi.Input[str] location: The location of the Policy Binding
|
748
|
+
:param pulumi.Input[str] name: The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
|
749
|
+
:param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
750
|
+
:param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
|
751
|
+
:param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
752
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
753
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
754
|
+
:param pulumi.Input[str] policy_uid: Output only. The globally unique ID of the policy to be bound.
|
755
|
+
:param pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
756
|
+
Structure is documented below.
|
757
|
+
:param pulumi.Input[str] uid: Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
|
758
|
+
:param pulumi.Input[str] update_time: Output only. The time when the policy binding was most recently updated.
|
759
|
+
"""
|
760
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
761
|
+
|
762
|
+
__props__ = _ProjectsPolicyBindingState.__new__(_ProjectsPolicyBindingState)
|
763
|
+
|
764
|
+
__props__.__dict__["annotations"] = annotations
|
765
|
+
__props__.__dict__["condition"] = condition
|
766
|
+
__props__.__dict__["create_time"] = create_time
|
767
|
+
__props__.__dict__["display_name"] = display_name
|
768
|
+
__props__.__dict__["effective_annotations"] = effective_annotations
|
769
|
+
__props__.__dict__["etag"] = etag
|
770
|
+
__props__.__dict__["location"] = location
|
771
|
+
__props__.__dict__["name"] = name
|
772
|
+
__props__.__dict__["policy"] = policy
|
773
|
+
__props__.__dict__["policy_binding_id"] = policy_binding_id
|
774
|
+
__props__.__dict__["policy_kind"] = policy_kind
|
775
|
+
__props__.__dict__["policy_uid"] = policy_uid
|
776
|
+
__props__.__dict__["project"] = project
|
777
|
+
__props__.__dict__["target"] = target
|
778
|
+
__props__.__dict__["uid"] = uid
|
779
|
+
__props__.__dict__["update_time"] = update_time
|
780
|
+
return ProjectsPolicyBinding(resource_name, opts=opts, __props__=__props__)
|
781
|
+
|
782
|
+
@property
|
783
|
+
@pulumi.getter
|
784
|
+
def annotations(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
|
785
|
+
"""
|
786
|
+
Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
|
787
|
+
limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
|
788
|
+
configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
|
789
|
+
"""
|
790
|
+
return pulumi.get(self, "annotations")
|
791
|
+
|
792
|
+
@property
|
793
|
+
@pulumi.getter
|
794
|
+
def condition(self) -> pulumi.Output[Optional['outputs.ProjectsPolicyBindingCondition']]:
|
795
|
+
"""
|
796
|
+
Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
|
797
|
+
syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
|
798
|
+
size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
|
799
|
+
100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
|
800
|
+
expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
|
801
|
+
\\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
|
802
|
+
!= 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
|
803
|
+
with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
|
804
|
+
functions that may be referenced within an expression are determined by the service that evaluates it. See the service
|
805
|
+
documentation for additional information.
|
806
|
+
"""
|
807
|
+
return pulumi.get(self, "condition")
|
808
|
+
|
809
|
+
@property
|
810
|
+
@pulumi.getter(name="createTime")
|
811
|
+
def create_time(self) -> pulumi.Output[str]:
|
812
|
+
"""
|
813
|
+
Output only. The time when the policy binding was created.
|
814
|
+
"""
|
815
|
+
return pulumi.get(self, "create_time")
|
816
|
+
|
817
|
+
@property
|
818
|
+
@pulumi.getter(name="displayName")
|
819
|
+
def display_name(self) -> pulumi.Output[Optional[str]]:
|
820
|
+
"""
|
821
|
+
Optional. The description of the policy binding. Must be less than or equal to 63 characters.
|
822
|
+
"""
|
823
|
+
return pulumi.get(self, "display_name")
|
824
|
+
|
825
|
+
@property
|
826
|
+
@pulumi.getter(name="effectiveAnnotations")
|
827
|
+
def effective_annotations(self) -> pulumi.Output[Mapping[str, str]]:
|
828
|
+
return pulumi.get(self, "effective_annotations")
|
829
|
+
|
830
|
+
@property
|
831
|
+
@pulumi.getter
|
832
|
+
def etag(self) -> pulumi.Output[str]:
|
833
|
+
"""
|
834
|
+
Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
|
835
|
+
"""
|
836
|
+
return pulumi.get(self, "etag")
|
837
|
+
|
838
|
+
@property
|
839
|
+
@pulumi.getter
|
840
|
+
def location(self) -> pulumi.Output[str]:
|
841
|
+
"""
|
842
|
+
The location of the Policy Binding
|
843
|
+
"""
|
844
|
+
return pulumi.get(self, "location")
|
845
|
+
|
846
|
+
@property
|
847
|
+
@pulumi.getter
|
848
|
+
def name(self) -> pulumi.Output[str]:
|
849
|
+
"""
|
850
|
+
The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
|
851
|
+
"""
|
852
|
+
return pulumi.get(self, "name")
|
853
|
+
|
854
|
+
@property
|
855
|
+
@pulumi.getter
|
856
|
+
def policy(self) -> pulumi.Output[str]:
|
857
|
+
"""
|
858
|
+
Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
|
859
|
+
"""
|
860
|
+
return pulumi.get(self, "policy")
|
861
|
+
|
862
|
+
@property
|
863
|
+
@pulumi.getter(name="policyBindingId")
|
864
|
+
def policy_binding_id(self) -> pulumi.Output[str]:
|
865
|
+
"""
|
866
|
+
The Policy Binding ID.
|
867
|
+
"""
|
868
|
+
return pulumi.get(self, "policy_binding_id")
|
869
|
+
|
870
|
+
@property
|
871
|
+
@pulumi.getter(name="policyKind")
|
872
|
+
def policy_kind(self) -> pulumi.Output[Optional[str]]:
|
873
|
+
"""
|
874
|
+
Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
|
875
|
+
be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
|
876
|
+
PRINCIPAL_ACCESS_BOUNDARY ACCESS
|
877
|
+
"""
|
878
|
+
return pulumi.get(self, "policy_kind")
|
879
|
+
|
880
|
+
@property
|
881
|
+
@pulumi.getter(name="policyUid")
|
882
|
+
def policy_uid(self) -> pulumi.Output[str]:
|
883
|
+
"""
|
884
|
+
Output only. The globally unique ID of the policy to be bound.
|
885
|
+
"""
|
886
|
+
return pulumi.get(self, "policy_uid")
|
887
|
+
|
888
|
+
@property
|
889
|
+
@pulumi.getter
|
890
|
+
def project(self) -> pulumi.Output[str]:
|
891
|
+
return pulumi.get(self, "project")
|
892
|
+
|
893
|
+
@property
|
894
|
+
@pulumi.getter
|
895
|
+
def target(self) -> pulumi.Output['outputs.ProjectsPolicyBindingTarget']:
|
896
|
+
"""
|
897
|
+
Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
|
898
|
+
Structure is documented below.
|
899
|
+
"""
|
900
|
+
return pulumi.get(self, "target")
|
901
|
+
|
902
|
+
@property
|
903
|
+
@pulumi.getter
|
904
|
+
def uid(self) -> pulumi.Output[str]:
|
905
|
+
"""
|
906
|
+
Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
|
907
|
+
"""
|
908
|
+
return pulumi.get(self, "uid")
|
909
|
+
|
910
|
+
@property
|
911
|
+
@pulumi.getter(name="updateTime")
|
912
|
+
def update_time(self) -> pulumi.Output[str]:
|
913
|
+
"""
|
914
|
+
Output only. The time when the policy binding was most recently updated.
|
915
|
+
"""
|
916
|
+
return pulumi.get(self, "update_time")
|
917
|
+
|