pulumi-gcp 8.32.0a1747459264__py3-none-any.whl → 8.32.1__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 (256) hide show
  1. pulumi_gcp/__init__.py +88 -0
  2. pulumi_gcp/accesscontextmanager/authorized_orgs_desc.py +2 -2
  3. pulumi_gcp/apigateway/api_config_iam_binding.py +13 -0
  4. pulumi_gcp/apigateway/api_config_iam_member.py +13 -0
  5. pulumi_gcp/apigateway/api_config_iam_policy.py +13 -0
  6. pulumi_gcp/apigateway/api_iam_binding.py +13 -0
  7. pulumi_gcp/apigateway/api_iam_member.py +13 -0
  8. pulumi_gcp/apigateway/api_iam_policy.py +13 -0
  9. pulumi_gcp/apigateway/gateway_iam_binding.py +13 -0
  10. pulumi_gcp/apigateway/gateway_iam_member.py +13 -0
  11. pulumi_gcp/apigateway/gateway_iam_policy.py +13 -0
  12. pulumi_gcp/apigateway/get_api_config_iam_policy.py +2 -0
  13. pulumi_gcp/apigateway/get_api_iam_policy.py +2 -0
  14. pulumi_gcp/apigateway/get_gateway_iam_policy.py +2 -0
  15. pulumi_gcp/apigee/environment_iam_binding.py +27 -0
  16. pulumi_gcp/apigee/environment_iam_member.py +27 -0
  17. pulumi_gcp/apigee/environment_iam_policy.py +27 -0
  18. pulumi_gcp/apigee/get_environment_iam_policy.py +6 -0
  19. pulumi_gcp/beyondcorp/__init__.py +1 -0
  20. pulumi_gcp/beyondcorp/application.py +8 -4
  21. pulumi_gcp/beyondcorp/application_iam_binding.py +26 -0
  22. pulumi_gcp/beyondcorp/application_iam_member.py +26 -0
  23. pulumi_gcp/beyondcorp/application_iam_policy.py +26 -0
  24. pulumi_gcp/beyondcorp/get_application_iam_policy.py +4 -0
  25. pulumi_gcp/beyondcorp/get_security_gateway.py +222 -0
  26. pulumi_gcp/beyondcorp/get_security_gateway_iam_policy.py +2 -0
  27. pulumi_gcp/beyondcorp/outputs.py +45 -0
  28. pulumi_gcp/beyondcorp/security_gateway_iam_binding.py +13 -0
  29. pulumi_gcp/beyondcorp/security_gateway_iam_member.py +13 -0
  30. pulumi_gcp/beyondcorp/security_gateway_iam_policy.py +13 -0
  31. pulumi_gcp/bigquery/__init__.py +1 -0
  32. pulumi_gcp/bigquery/connection_iam_binding.py +4 -11
  33. pulumi_gcp/bigquery/connection_iam_member.py +4 -11
  34. pulumi_gcp/bigquery/connection_iam_policy.py +4 -11
  35. pulumi_gcp/bigquery/data_transfer_config.py +2 -2
  36. pulumi_gcp/bigquery/get_connection_iam_policy.py +2 -4
  37. pulumi_gcp/bigquery/get_table_iam_policy.py +4 -0
  38. pulumi_gcp/bigquery/iam_binding.py +26 -0
  39. pulumi_gcp/bigquery/iam_member.py +26 -0
  40. pulumi_gcp/bigquery/iam_policy.py +26 -0
  41. pulumi_gcp/bigquery/row_access_policy.py +787 -0
  42. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +7 -7
  43. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +7 -7
  44. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +7 -7
  45. pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py +2 -2
  46. pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py +2 -2
  47. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +7 -7
  48. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +7 -7
  49. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +7 -7
  50. pulumi_gcp/bigqueryanalyticshub/listing_subscription.py +6 -6
  51. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +13 -0
  52. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +13 -0
  53. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +13 -0
  54. pulumi_gcp/bigquerydatapolicy/get_iam_policy.py +2 -0
  55. pulumi_gcp/bigtable/logical_view.py +49 -0
  56. pulumi_gcp/cloudbuild/trigger.py +2 -2
  57. pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py +6 -0
  58. pulumi_gcp/clouddeploy/get_target_iam_policy.py +6 -0
  59. pulumi_gcp/colab/schedule.py +2 -2
  60. pulumi_gcp/compute/_inputs.py +126 -0
  61. pulumi_gcp/compute/backend_service.py +259 -51
  62. pulumi_gcp/compute/get_backend_service.py +23 -1
  63. pulumi_gcp/compute/get_global_forwarding_rule.py +23 -1
  64. pulumi_gcp/compute/get_instance_template.py +12 -1
  65. pulumi_gcp/compute/get_network_endpoint_group.py +12 -1
  66. pulumi_gcp/compute/global_forwarding_rule.py +199 -0
  67. pulumi_gcp/compute/instance_template.py +28 -0
  68. pulumi_gcp/compute/network_endpoint_group.py +28 -0
  69. pulumi_gcp/compute/outputs.py +110 -0
  70. pulumi_gcp/compute/region_backend_service.py +58 -51
  71. pulumi_gcp/container/cluster.py +47 -0
  72. pulumi_gcp/container/get_cluster.py +12 -1
  73. pulumi_gcp/datacatalog/entry_group_iam_binding.py +34 -0
  74. pulumi_gcp/datacatalog/entry_group_iam_member.py +34 -0
  75. pulumi_gcp/datacatalog/entry_group_iam_policy.py +34 -0
  76. pulumi_gcp/datacatalog/get_entry_group_iam_policy.py +8 -0
  77. pulumi_gcp/datacatalog/get_tag_template_iam_policy.py +8 -0
  78. pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py +8 -0
  79. pulumi_gcp/datacatalog/tag_template_iam_binding.py +34 -0
  80. pulumi_gcp/datacatalog/tag_template_iam_member.py +34 -0
  81. pulumi_gcp/datacatalog/tag_template_iam_policy.py +34 -0
  82. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +34 -0
  83. pulumi_gcp/datacatalog/taxonomy_iam_member.py +34 -0
  84. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +34 -0
  85. pulumi_gcp/dataplex/__init__.py +5 -0
  86. pulumi_gcp/dataplex/_inputs.py +98 -0
  87. pulumi_gcp/dataplex/aspect_type_iam_binding.py +13 -0
  88. pulumi_gcp/dataplex/aspect_type_iam_member.py +13 -0
  89. pulumi_gcp/dataplex/aspect_type_iam_policy.py +13 -0
  90. pulumi_gcp/dataplex/asset_iam_binding.py +53 -0
  91. pulumi_gcp/dataplex/asset_iam_member.py +53 -0
  92. pulumi_gcp/dataplex/asset_iam_policy.py +53 -0
  93. pulumi_gcp/dataplex/datascan_iam_binding.py +13 -0
  94. pulumi_gcp/dataplex/datascan_iam_member.py +13 -0
  95. pulumi_gcp/dataplex/datascan_iam_policy.py +13 -0
  96. pulumi_gcp/dataplex/entry_group_iam_binding.py +13 -0
  97. pulumi_gcp/dataplex/entry_group_iam_member.py +13 -0
  98. pulumi_gcp/dataplex/entry_group_iam_policy.py +13 -0
  99. pulumi_gcp/dataplex/entry_type_iam_binding.py +13 -0
  100. pulumi_gcp/dataplex/entry_type_iam_member.py +13 -0
  101. pulumi_gcp/dataplex/entry_type_iam_policy.py +13 -0
  102. pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +2 -0
  103. pulumi_gcp/dataplex/get_asset_iam_policy.py +10 -0
  104. pulumi_gcp/dataplex/get_datascan_iam_policy.py +2 -0
  105. pulumi_gcp/dataplex/get_entry_group_iam_policy.py +2 -0
  106. pulumi_gcp/dataplex/get_entry_type_iam_policy.py +2 -0
  107. pulumi_gcp/dataplex/get_glossary_iam_policy.py +185 -0
  108. pulumi_gcp/dataplex/get_lake_iam_policy.py +6 -0
  109. pulumi_gcp/dataplex/get_task_iam_policy.py +2 -0
  110. pulumi_gcp/dataplex/get_zone_iam_policy.py +8 -0
  111. pulumi_gcp/dataplex/glossary.py +772 -0
  112. pulumi_gcp/dataplex/glossary_iam_binding.py +837 -0
  113. pulumi_gcp/dataplex/glossary_iam_member.py +837 -0
  114. pulumi_gcp/dataplex/glossary_iam_policy.py +676 -0
  115. pulumi_gcp/dataplex/lake_iam_binding.py +27 -0
  116. pulumi_gcp/dataplex/lake_iam_member.py +27 -0
  117. pulumi_gcp/dataplex/lake_iam_policy.py +27 -0
  118. pulumi_gcp/dataplex/outputs.py +56 -0
  119. pulumi_gcp/dataplex/task_iam_binding.py +13 -0
  120. pulumi_gcp/dataplex/task_iam_member.py +13 -0
  121. pulumi_gcp/dataplex/task_iam_policy.py +13 -0
  122. pulumi_gcp/dataplex/zone_iam_binding.py +40 -0
  123. pulumi_gcp/dataplex/zone_iam_member.py +40 -0
  124. pulumi_gcp/dataplex/zone_iam_policy.py +40 -0
  125. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +4 -25
  126. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +4 -25
  127. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +4 -25
  128. pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py +2 -8
  129. pulumi_gcp/dataproc/get_metastore_database_iam_policy.py +8 -0
  130. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +2 -0
  131. pulumi_gcp/dataproc/get_metastore_service_iam_policy.py +2 -0
  132. pulumi_gcp/dataproc/get_metastore_table_iam_policy.py +10 -0
  133. pulumi_gcp/dataproc/metastore_database_iam_binding.py +40 -0
  134. pulumi_gcp/dataproc/metastore_database_iam_member.py +40 -0
  135. pulumi_gcp/dataproc/metastore_database_iam_policy.py +40 -0
  136. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +13 -0
  137. pulumi_gcp/dataproc/metastore_federation_iam_member.py +13 -0
  138. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +13 -0
  139. pulumi_gcp/dataproc/metastore_service_iam_binding.py +13 -0
  140. pulumi_gcp/dataproc/metastore_service_iam_member.py +13 -0
  141. pulumi_gcp/dataproc/metastore_service_iam_policy.py +13 -0
  142. pulumi_gcp/dataproc/metastore_table_iam_binding.py +53 -0
  143. pulumi_gcp/dataproc/metastore_table_iam_member.py +53 -0
  144. pulumi_gcp/dataproc/metastore_table_iam_policy.py +53 -0
  145. pulumi_gcp/diagflow/_inputs.py +56 -0
  146. pulumi_gcp/diagflow/cx_agent.py +60 -0
  147. pulumi_gcp/diagflow/cx_flow.py +2 -0
  148. pulumi_gcp/diagflow/entity_type.py +2 -2
  149. pulumi_gcp/diagflow/outputs.py +35 -0
  150. pulumi_gcp/edgecontainer/node_pool.py +2 -2
  151. pulumi_gcp/endpoints/consumers_iam_binding.py +26 -0
  152. pulumi_gcp/endpoints/consumers_iam_member.py +26 -0
  153. pulumi_gcp/endpoints/consumers_iam_policy.py +26 -0
  154. pulumi_gcp/endpoints/get_service_consumers_iam_policy.py +8 -0
  155. pulumi_gcp/endpoints/get_service_iam_policy.py +6 -0
  156. pulumi_gcp/endpoints/service_iam_binding.py +13 -0
  157. pulumi_gcp/endpoints/service_iam_member.py +13 -0
  158. pulumi_gcp/endpoints/service_iam_policy.py +13 -0
  159. pulumi_gcp/firebase/__init__.py +3 -0
  160. pulumi_gcp/firebase/_inputs.py +1527 -0
  161. pulumi_gcp/firebase/app_hosting_backend.py +104 -0
  162. pulumi_gcp/firebase/app_hosting_default_domain.py +721 -0
  163. pulumi_gcp/firebase/app_hosting_domain.py +796 -0
  164. pulumi_gcp/firebase/app_hosting_traffic.py +914 -0
  165. pulumi_gcp/firebase/extensions_instance.py +4 -4
  166. pulumi_gcp/firebase/outputs.py +1075 -0
  167. pulumi_gcp/firestore/database.py +9 -0
  168. pulumi_gcp/gemini/get_repository_group_iam_policy.py +4 -0
  169. pulumi_gcp/gemini/repository_group_iam_binding.py +26 -0
  170. pulumi_gcp/gemini/repository_group_iam_member.py +26 -0
  171. pulumi_gcp/gemini/repository_group_iam_policy.py +26 -0
  172. pulumi_gcp/gkebackup/backup_channel.py +9 -9
  173. pulumi_gcp/gkebackup/restore_channel.py +9 -9
  174. pulumi_gcp/gkehub/get_membership_iam_policy.py +2 -0
  175. pulumi_gcp/gkehub/get_scope_iam_policy.py +2 -0
  176. pulumi_gcp/gkehub/membership_iam_binding.py +13 -0
  177. pulumi_gcp/gkehub/membership_iam_member.py +13 -0
  178. pulumi_gcp/gkehub/membership_iam_policy.py +13 -0
  179. pulumi_gcp/gkehub/scope_iam_binding.py +13 -0
  180. pulumi_gcp/gkehub/scope_iam_member.py +13 -0
  181. pulumi_gcp/gkehub/scope_iam_policy.py +13 -0
  182. pulumi_gcp/iam/__init__.py +4 -0
  183. pulumi_gcp/iam/_inputs.py +432 -0
  184. pulumi_gcp/iam/get_workload_identity_pool.py +35 -1
  185. pulumi_gcp/iam/get_workload_identity_pool_iam_policy.py +156 -0
  186. pulumi_gcp/iam/oauth_client_credential.py +6 -0
  187. pulumi_gcp/iam/outputs.py +510 -0
  188. pulumi_gcp/iam/workload_identity_pool.py +446 -24
  189. pulumi_gcp/iam/workload_identity_pool_iam_binding.py +539 -0
  190. pulumi_gcp/iam/workload_identity_pool_iam_member.py +539 -0
  191. pulumi_gcp/iam/workload_identity_pool_iam_policy.py +358 -0
  192. pulumi_gcp/iap/app_engine_service_iam_binding.py +14 -14
  193. pulumi_gcp/iap/app_engine_service_iam_member.py +14 -14
  194. pulumi_gcp/iap/app_engine_service_iam_policy.py +14 -14
  195. pulumi_gcp/iap/app_engine_version_iam_binding.py +14 -14
  196. pulumi_gcp/iap/app_engine_version_iam_member.py +14 -14
  197. pulumi_gcp/iap/app_engine_version_iam_policy.py +14 -14
  198. pulumi_gcp/iap/get_app_engine_service_iam_policy.py +4 -4
  199. pulumi_gcp/iap/get_app_engine_version_iam_policy.py +4 -4
  200. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +2 -0
  201. pulumi_gcp/iap/get_tunnel_instance_iam_policy.py +6 -0
  202. pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py +6 -0
  203. pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py +2 -2
  204. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +13 -0
  205. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +13 -0
  206. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +13 -0
  207. pulumi_gcp/iap/tunnel_instance_iam_binding.py +27 -0
  208. pulumi_gcp/iap/tunnel_instance_iam_member.py +27 -0
  209. pulumi_gcp/iap/tunnel_instance_iam_policy.py +27 -0
  210. pulumi_gcp/iap/web_region_backend_service_iam_binding.py +27 -0
  211. pulumi_gcp/iap/web_region_backend_service_iam_member.py +27 -0
  212. pulumi_gcp/iap/web_region_backend_service_iam_policy.py +27 -0
  213. pulumi_gcp/iap/web_type_app_enging_iam_binding.py +7 -7
  214. pulumi_gcp/iap/web_type_app_enging_iam_member.py +7 -7
  215. pulumi_gcp/iap/web_type_app_enging_iam_policy.py +7 -7
  216. pulumi_gcp/lustre/__init__.py +1 -0
  217. pulumi_gcp/lustre/get_instance.py +280 -0
  218. pulumi_gcp/lustre/instance.py +12 -0
  219. pulumi_gcp/netapp/backup.py +2 -2
  220. pulumi_gcp/networksecurity/intercept_deployment.py +10 -0
  221. pulumi_gcp/networksecurity/intercept_deployment_group.py +8 -0
  222. pulumi_gcp/networksecurity/intercept_endpoint_group.py +12 -0
  223. pulumi_gcp/networksecurity/intercept_endpoint_group_association.py +16 -0
  224. pulumi_gcp/pulumi-plugin.json +1 -1
  225. pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py +2 -0
  226. pulumi_gcp/secretmanager/get_secret_iam_policy.py +2 -0
  227. pulumi_gcp/secretmanager/regional_secret_iam_binding.py +13 -0
  228. pulumi_gcp/secretmanager/regional_secret_iam_member.py +13 -0
  229. pulumi_gcp/secretmanager/regional_secret_iam_policy.py +13 -0
  230. pulumi_gcp/secretmanager/secret_iam_binding.py +13 -0
  231. pulumi_gcp/secretmanager/secret_iam_member.py +13 -0
  232. pulumi_gcp/secretmanager/secret_iam_policy.py +13 -0
  233. pulumi_gcp/securesourcemanager/get_instance_iam_policy.py +2 -4
  234. pulumi_gcp/securesourcemanager/get_repository_iam_policy.py +2 -4
  235. pulumi_gcp/securesourcemanager/repository_iam_binding.py +4 -11
  236. pulumi_gcp/securesourcemanager/repository_iam_member.py +4 -11
  237. pulumi_gcp/securesourcemanager/repository_iam_policy.py +4 -11
  238. pulumi_gcp/securitycenter/v2_organization_scc_big_query_export.py +2 -2
  239. pulumi_gcp/securitycenter/v2_organization_scc_big_query_exports.py +2 -2
  240. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_binding.py +13 -0
  241. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_member.py +13 -0
  242. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_policy.py +13 -0
  243. pulumi_gcp/vertex/get_ai_feature_online_store_featureview_iam_policy.py +2 -0
  244. pulumi_gcp/vmwareengine/external_address.py +4 -4
  245. pulumi_gcp/workstations/get_workstation_config_iam_policy.py +6 -0
  246. pulumi_gcp/workstations/get_workstation_iam_policy.py +10 -0
  247. pulumi_gcp/workstations/workstation_config_iam_binding.py +33 -0
  248. pulumi_gcp/workstations/workstation_config_iam_member.py +33 -0
  249. pulumi_gcp/workstations/workstation_config_iam_policy.py +33 -0
  250. pulumi_gcp/workstations/workstation_iam_binding.py +53 -0
  251. pulumi_gcp/workstations/workstation_iam_member.py +53 -0
  252. pulumi_gcp/workstations/workstation_iam_policy.py +53 -0
  253. {pulumi_gcp-8.32.0a1747459264.dist-info → pulumi_gcp-8.32.1.dist-info}/METADATA +1 -1
  254. {pulumi_gcp-8.32.0a1747459264.dist-info → pulumi_gcp-8.32.1.dist-info}/RECORD +256 -241
  255. {pulumi_gcp-8.32.0a1747459264.dist-info → pulumi_gcp-8.32.1.dist-info}/WHEEL +1 -1
  256. {pulumi_gcp-8.32.0a1747459264.dist-info → pulumi_gcp-8.32.1.dist-info}/top_level.txt +0 -0
@@ -14,6 +14,8 @@ if sys.version_info >= (3, 11):
14
14
  else:
15
15
  from typing_extensions import NotRequired, TypedDict, TypeAlias
16
16
  from .. import _utilities
17
+ from . import outputs
18
+ from ._inputs import *
17
19
 
18
20
  __all__ = ['WorkloadIdentityPoolArgs', 'WorkloadIdentityPool']
19
21
 
@@ -24,6 +26,9 @@ class WorkloadIdentityPoolArgs:
24
26
  description: Optional[pulumi.Input[builtins.str]] = None,
25
27
  disabled: Optional[pulumi.Input[builtins.bool]] = None,
26
28
  display_name: Optional[pulumi.Input[builtins.str]] = None,
29
+ inline_certificate_issuance_config: Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']] = None,
30
+ inline_trust_config: Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']] = None,
31
+ mode: Optional[pulumi.Input[builtins.str]] = None,
27
32
  project: Optional[pulumi.Input[builtins.str]] = None):
28
33
  """
29
34
  The set of arguments for constructing a WorkloadIdentityPool resource.
@@ -38,6 +43,34 @@ class WorkloadIdentityPoolArgs:
38
43
  existing tokens to access resources. If the pool is re-enabled, existing tokens grant
39
44
  access again.
40
45
  :param pulumi.Input[builtins.str] display_name: A display name for the pool. Cannot exceed 32 characters.
46
+ :param pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs'] inline_certificate_issuance_config: Represents configuration for generating mutual TLS (mTLS) certificates for the identities
47
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
48
+ required for issuance and rotation of mTLS workload certificates.
49
+ Structure is documented below.
50
+ :param pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs'] inline_trust_config: Represents config to add additional trusted trust domains. Defines configuration for extending
51
+ trust to additional trust domains. By establishing trust with another domain, the current
52
+ domain will recognize and accept certificates issued by entities within the trusted domains.
53
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
54
+ configuration.
55
+ Structure is documented below.
56
+ :param pulumi.Input[builtins.str] mode: The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
57
+ are in `FEDERATION_ONLY` mode.
58
+
59
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
60
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
61
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
62
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
63
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
64
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
65
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
66
+ within the pool besides providers.
67
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
68
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
69
+ workload identifier. The subject identifier for all identities must conform to the following
70
+ format: `ns/<namespace>/sa/<workload_identifier>`.
71
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
72
+ mode pools.
73
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
41
74
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
42
75
  If it is not provided, the provider project is used.
43
76
  """
@@ -48,6 +81,12 @@ class WorkloadIdentityPoolArgs:
48
81
  pulumi.set(__self__, "disabled", disabled)
49
82
  if display_name is not None:
50
83
  pulumi.set(__self__, "display_name", display_name)
84
+ if inline_certificate_issuance_config is not None:
85
+ pulumi.set(__self__, "inline_certificate_issuance_config", inline_certificate_issuance_config)
86
+ if inline_trust_config is not None:
87
+ pulumi.set(__self__, "inline_trust_config", inline_trust_config)
88
+ if mode is not None:
89
+ pulumi.set(__self__, "mode", mode)
51
90
  if project is not None:
52
91
  pulumi.set(__self__, "project", project)
53
92
 
@@ -106,6 +145,67 @@ class WorkloadIdentityPoolArgs:
106
145
  def display_name(self, value: Optional[pulumi.Input[builtins.str]]):
107
146
  pulumi.set(self, "display_name", value)
108
147
 
148
+ @property
149
+ @pulumi.getter(name="inlineCertificateIssuanceConfig")
150
+ def inline_certificate_issuance_config(self) -> Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']]:
151
+ """
152
+ Represents configuration for generating mutual TLS (mTLS) certificates for the identities
153
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
154
+ required for issuance and rotation of mTLS workload certificates.
155
+ Structure is documented below.
156
+ """
157
+ return pulumi.get(self, "inline_certificate_issuance_config")
158
+
159
+ @inline_certificate_issuance_config.setter
160
+ def inline_certificate_issuance_config(self, value: Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']]):
161
+ pulumi.set(self, "inline_certificate_issuance_config", value)
162
+
163
+ @property
164
+ @pulumi.getter(name="inlineTrustConfig")
165
+ def inline_trust_config(self) -> Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']]:
166
+ """
167
+ Represents config to add additional trusted trust domains. Defines configuration for extending
168
+ trust to additional trust domains. By establishing trust with another domain, the current
169
+ domain will recognize and accept certificates issued by entities within the trusted domains.
170
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
171
+ configuration.
172
+ Structure is documented below.
173
+ """
174
+ return pulumi.get(self, "inline_trust_config")
175
+
176
+ @inline_trust_config.setter
177
+ def inline_trust_config(self, value: Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']]):
178
+ pulumi.set(self, "inline_trust_config", value)
179
+
180
+ @property
181
+ @pulumi.getter
182
+ def mode(self) -> Optional[pulumi.Input[builtins.str]]:
183
+ """
184
+ The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
185
+ are in `FEDERATION_ONLY` mode.
186
+
187
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
188
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
189
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
190
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
191
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
192
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
193
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
194
+ within the pool besides providers.
195
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
196
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
197
+ workload identifier. The subject identifier for all identities must conform to the following
198
+ format: `ns/<namespace>/sa/<workload_identifier>`.
199
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
200
+ mode pools.
201
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
202
+ """
203
+ return pulumi.get(self, "mode")
204
+
205
+ @mode.setter
206
+ def mode(self, value: Optional[pulumi.Input[builtins.str]]):
207
+ pulumi.set(self, "mode", value)
208
+
109
209
  @property
110
210
  @pulumi.getter
111
211
  def project(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -126,6 +226,9 @@ class _WorkloadIdentityPoolState:
126
226
  description: Optional[pulumi.Input[builtins.str]] = None,
127
227
  disabled: Optional[pulumi.Input[builtins.bool]] = None,
128
228
  display_name: Optional[pulumi.Input[builtins.str]] = None,
229
+ inline_certificate_issuance_config: Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']] = None,
230
+ inline_trust_config: Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']] = None,
231
+ mode: Optional[pulumi.Input[builtins.str]] = None,
129
232
  name: Optional[pulumi.Input[builtins.str]] = None,
130
233
  project: Optional[pulumi.Input[builtins.str]] = None,
131
234
  state: Optional[pulumi.Input[builtins.str]] = None,
@@ -137,16 +240,44 @@ class _WorkloadIdentityPoolState:
137
240
  existing tokens to access resources. If the pool is re-enabled, existing tokens grant
138
241
  access again.
139
242
  :param pulumi.Input[builtins.str] display_name: A display name for the pool. Cannot exceed 32 characters.
243
+ :param pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs'] inline_certificate_issuance_config: Represents configuration for generating mutual TLS (mTLS) certificates for the identities
244
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
245
+ required for issuance and rotation of mTLS workload certificates.
246
+ Structure is documented below.
247
+ :param pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs'] inline_trust_config: Represents config to add additional trusted trust domains. Defines configuration for extending
248
+ trust to additional trust domains. By establishing trust with another domain, the current
249
+ domain will recognize and accept certificates issued by entities within the trusted domains.
250
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
251
+ configuration.
252
+ Structure is documented below.
253
+ :param pulumi.Input[builtins.str] mode: The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
254
+ are in `FEDERATION_ONLY` mode.
255
+
256
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
257
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
258
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
259
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
260
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
261
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
262
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
263
+ within the pool besides providers.
264
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
265
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
266
+ workload identifier. The subject identifier for all identities must conform to the following
267
+ format: `ns/<namespace>/sa/<workload_identifier>`.
268
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
269
+ mode pools.
270
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
140
271
  :param pulumi.Input[builtins.str] name: The resource name of the pool as
141
272
  `projects/{project_number}/locations/global/workloadIdentityPools/{workload_identity_pool_id}`.
142
273
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
143
274
  If it is not provided, the provider project is used.
144
275
  :param pulumi.Input[builtins.str] state: The state of the pool.
145
- * STATE_UNSPECIFIED: State unspecified.
146
- * ACTIVE: The pool is active, and may be used in Google Cloud policies.
147
- * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
276
+ * `STATE_UNSPECIFIED`: State unspecified.
277
+ * `ACTIVE`: The pool is active, and may be used in Google Cloud policies.
278
+ * `DELETED`: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
148
279
  approximately 30 days. You can restore a soft-deleted pool using
149
- UndeleteWorkloadIdentityPool. You cannot reuse the ID of a soft-deleted pool until it is
280
+ `UndeleteWorkloadIdentityPool`. You cannot reuse the ID of a soft-deleted pool until it is
150
281
  permanently deleted. While a pool is deleted, you cannot use it to exchange tokens, or
151
282
  use existing tokens to access resources. If the pool is undeleted, existing tokens grant
152
283
  access again.
@@ -163,6 +294,12 @@ class _WorkloadIdentityPoolState:
163
294
  pulumi.set(__self__, "disabled", disabled)
164
295
  if display_name is not None:
165
296
  pulumi.set(__self__, "display_name", display_name)
297
+ if inline_certificate_issuance_config is not None:
298
+ pulumi.set(__self__, "inline_certificate_issuance_config", inline_certificate_issuance_config)
299
+ if inline_trust_config is not None:
300
+ pulumi.set(__self__, "inline_trust_config", inline_trust_config)
301
+ if mode is not None:
302
+ pulumi.set(__self__, "mode", mode)
166
303
  if name is not None:
167
304
  pulumi.set(__self__, "name", name)
168
305
  if project is not None:
@@ -210,6 +347,67 @@ class _WorkloadIdentityPoolState:
210
347
  def display_name(self, value: Optional[pulumi.Input[builtins.str]]):
211
348
  pulumi.set(self, "display_name", value)
212
349
 
350
+ @property
351
+ @pulumi.getter(name="inlineCertificateIssuanceConfig")
352
+ def inline_certificate_issuance_config(self) -> Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']]:
353
+ """
354
+ Represents configuration for generating mutual TLS (mTLS) certificates for the identities
355
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
356
+ required for issuance and rotation of mTLS workload certificates.
357
+ Structure is documented below.
358
+ """
359
+ return pulumi.get(self, "inline_certificate_issuance_config")
360
+
361
+ @inline_certificate_issuance_config.setter
362
+ def inline_certificate_issuance_config(self, value: Optional[pulumi.Input['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs']]):
363
+ pulumi.set(self, "inline_certificate_issuance_config", value)
364
+
365
+ @property
366
+ @pulumi.getter(name="inlineTrustConfig")
367
+ def inline_trust_config(self) -> Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']]:
368
+ """
369
+ Represents config to add additional trusted trust domains. Defines configuration for extending
370
+ trust to additional trust domains. By establishing trust with another domain, the current
371
+ domain will recognize and accept certificates issued by entities within the trusted domains.
372
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
373
+ configuration.
374
+ Structure is documented below.
375
+ """
376
+ return pulumi.get(self, "inline_trust_config")
377
+
378
+ @inline_trust_config.setter
379
+ def inline_trust_config(self, value: Optional[pulumi.Input['WorkloadIdentityPoolInlineTrustConfigArgs']]):
380
+ pulumi.set(self, "inline_trust_config", value)
381
+
382
+ @property
383
+ @pulumi.getter
384
+ def mode(self) -> Optional[pulumi.Input[builtins.str]]:
385
+ """
386
+ The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
387
+ are in `FEDERATION_ONLY` mode.
388
+
389
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
390
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
391
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
392
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
393
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
394
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
395
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
396
+ within the pool besides providers.
397
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
398
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
399
+ workload identifier. The subject identifier for all identities must conform to the following
400
+ format: `ns/<namespace>/sa/<workload_identifier>`.
401
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
402
+ mode pools.
403
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
404
+ """
405
+ return pulumi.get(self, "mode")
406
+
407
+ @mode.setter
408
+ def mode(self, value: Optional[pulumi.Input[builtins.str]]):
409
+ pulumi.set(self, "mode", value)
410
+
213
411
  @property
214
412
  @pulumi.getter
215
413
  def name(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -241,11 +439,11 @@ class _WorkloadIdentityPoolState:
241
439
  def state(self) -> Optional[pulumi.Input[builtins.str]]:
242
440
  """
243
441
  The state of the pool.
244
- * STATE_UNSPECIFIED: State unspecified.
245
- * ACTIVE: The pool is active, and may be used in Google Cloud policies.
246
- * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
442
+ * `STATE_UNSPECIFIED`: State unspecified.
443
+ * `ACTIVE`: The pool is active, and may be used in Google Cloud policies.
444
+ * `DELETED`: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
247
445
  approximately 30 days. You can restore a soft-deleted pool using
248
- UndeleteWorkloadIdentityPool. You cannot reuse the ID of a soft-deleted pool until it is
446
+ `UndeleteWorkloadIdentityPool`. You cannot reuse the ID of a soft-deleted pool until it is
249
447
  permanently deleted. While a pool is deleted, you cannot use it to exchange tokens, or
250
448
  use existing tokens to access resources. If the pool is undeleted, existing tokens grant
251
449
  access again.
@@ -283,6 +481,9 @@ class WorkloadIdentityPool(pulumi.CustomResource):
283
481
  description: Optional[pulumi.Input[builtins.str]] = None,
284
482
  disabled: Optional[pulumi.Input[builtins.bool]] = None,
285
483
  display_name: Optional[pulumi.Input[builtins.str]] = None,
484
+ inline_certificate_issuance_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs', 'WorkloadIdentityPoolInlineCertificateIssuanceConfigArgsDict']]] = None,
485
+ inline_trust_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineTrustConfigArgs', 'WorkloadIdentityPoolInlineTrustConfigArgsDict']]] = None,
486
+ mode: Optional[pulumi.Input[builtins.str]] = None,
286
487
  project: Optional[pulumi.Input[builtins.str]] = None,
287
488
  workload_identity_pool_id: Optional[pulumi.Input[builtins.str]] = None,
288
489
  __props__=None):
@@ -294,6 +495,8 @@ class WorkloadIdentityPool(pulumi.CustomResource):
294
495
 
295
496
  * [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/projects.locations.workloadIdentityPools)
296
497
  * How-to Guides
498
+ * [Configure managed workload identity authentication for Compute Engine](https://cloud.google.com/iam/docs/create-managed-workload-identities)
499
+ * [Configure managed workload identity authentication for GKE](https://cloud.google.com/iam/docs/create-managed-workload-identities-gke)
297
500
  * [Managing workload identity pools](https://cloud.google.com/iam/docs/manage-workload-identity-pools-providers#pools)
298
501
 
299
502
  ## Example Usage
@@ -306,7 +509,7 @@ class WorkloadIdentityPool(pulumi.CustomResource):
306
509
 
307
510
  example = gcp.iam.WorkloadIdentityPool("example", workload_identity_pool_id="example-pool")
308
511
  ```
309
- ### Iam Workload Identity Pool Full
512
+ ### Iam Workload Identity Pool Full Federation Only Mode
310
513
 
311
514
  ```python
312
515
  import pulumi
@@ -314,9 +517,59 @@ class WorkloadIdentityPool(pulumi.CustomResource):
314
517
 
315
518
  example = gcp.iam.WorkloadIdentityPool("example",
316
519
  workload_identity_pool_id="example-pool",
317
- display_name="Name of pool",
318
- description="Identity pool for automated test",
319
- disabled=True)
520
+ display_name="Name of the pool",
521
+ description="Identity pool operates in FEDERATION_ONLY mode",
522
+ disabled=True,
523
+ mode="FEDERATION_ONLY")
524
+ ```
525
+ ### Iam Workload Identity Pool Full Trust Domain Mode
526
+
527
+ ```python
528
+ import pulumi
529
+ import pulumi_gcp as gcp
530
+ import pulumi_std as std
531
+
532
+ example = gcp.iam.WorkloadIdentityPool("example",
533
+ workload_identity_pool_id="example-pool",
534
+ display_name="Name of the pool",
535
+ description="Identity pool operates in TRUST_DOMAIN mode",
536
+ disabled=True,
537
+ mode="TRUST_DOMAIN",
538
+ inline_certificate_issuance_config={
539
+ "ca_pools": {
540
+ "us-central1": "projects/project-bar/locations/us-central1/caPools/ca-pool-bar",
541
+ "asia-east2": "projects/project-foo/locations/asia-east2/caPools/ca-pool-foo",
542
+ },
543
+ "lifetime": "86400s",
544
+ "rotation_window_percentage": 50,
545
+ "key_algorithm": "ECDSA_P256",
546
+ },
547
+ inline_trust_config={
548
+ "additional_trust_bundles": [
549
+ {
550
+ "trust_domain": "example.com",
551
+ "trust_anchors": [
552
+ {
553
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_1.pem").result,
554
+ },
555
+ {
556
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_2.pem").result,
557
+ },
558
+ ],
559
+ },
560
+ {
561
+ "trust_domain": "example.net",
562
+ "trust_anchors": [
563
+ {
564
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_3.pem").result,
565
+ },
566
+ {
567
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_4.pem").result,
568
+ },
569
+ ],
570
+ },
571
+ ],
572
+ })
320
573
  ```
321
574
 
322
575
  ## Import
@@ -350,6 +603,34 @@ class WorkloadIdentityPool(pulumi.CustomResource):
350
603
  existing tokens to access resources. If the pool is re-enabled, existing tokens grant
351
604
  access again.
352
605
  :param pulumi.Input[builtins.str] display_name: A display name for the pool. Cannot exceed 32 characters.
606
+ :param pulumi.Input[Union['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs', 'WorkloadIdentityPoolInlineCertificateIssuanceConfigArgsDict']] inline_certificate_issuance_config: Represents configuration for generating mutual TLS (mTLS) certificates for the identities
607
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
608
+ required for issuance and rotation of mTLS workload certificates.
609
+ Structure is documented below.
610
+ :param pulumi.Input[Union['WorkloadIdentityPoolInlineTrustConfigArgs', 'WorkloadIdentityPoolInlineTrustConfigArgsDict']] inline_trust_config: Represents config to add additional trusted trust domains. Defines configuration for extending
611
+ trust to additional trust domains. By establishing trust with another domain, the current
612
+ domain will recognize and accept certificates issued by entities within the trusted domains.
613
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
614
+ configuration.
615
+ Structure is documented below.
616
+ :param pulumi.Input[builtins.str] mode: The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
617
+ are in `FEDERATION_ONLY` mode.
618
+
619
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
620
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
621
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
622
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
623
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
624
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
625
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
626
+ within the pool besides providers.
627
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
628
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
629
+ workload identifier. The subject identifier for all identities must conform to the following
630
+ format: `ns/<namespace>/sa/<workload_identifier>`.
631
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
632
+ mode pools.
633
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
353
634
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
354
635
  If it is not provided, the provider project is used.
355
636
  :param pulumi.Input[builtins.str] workload_identity_pool_id: The ID to use for the pool, which becomes the final component of the resource name. This
@@ -373,6 +654,8 @@ class WorkloadIdentityPool(pulumi.CustomResource):
373
654
 
374
655
  * [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/projects.locations.workloadIdentityPools)
375
656
  * How-to Guides
657
+ * [Configure managed workload identity authentication for Compute Engine](https://cloud.google.com/iam/docs/create-managed-workload-identities)
658
+ * [Configure managed workload identity authentication for GKE](https://cloud.google.com/iam/docs/create-managed-workload-identities-gke)
376
659
  * [Managing workload identity pools](https://cloud.google.com/iam/docs/manage-workload-identity-pools-providers#pools)
377
660
 
378
661
  ## Example Usage
@@ -385,17 +668,67 @@ class WorkloadIdentityPool(pulumi.CustomResource):
385
668
 
386
669
  example = gcp.iam.WorkloadIdentityPool("example", workload_identity_pool_id="example-pool")
387
670
  ```
388
- ### Iam Workload Identity Pool Full
671
+ ### Iam Workload Identity Pool Full Federation Only Mode
672
+
673
+ ```python
674
+ import pulumi
675
+ import pulumi_gcp as gcp
676
+
677
+ example = gcp.iam.WorkloadIdentityPool("example",
678
+ workload_identity_pool_id="example-pool",
679
+ display_name="Name of the pool",
680
+ description="Identity pool operates in FEDERATION_ONLY mode",
681
+ disabled=True,
682
+ mode="FEDERATION_ONLY")
683
+ ```
684
+ ### Iam Workload Identity Pool Full Trust Domain Mode
389
685
 
390
686
  ```python
391
687
  import pulumi
392
688
  import pulumi_gcp as gcp
689
+ import pulumi_std as std
393
690
 
394
691
  example = gcp.iam.WorkloadIdentityPool("example",
395
692
  workload_identity_pool_id="example-pool",
396
- display_name="Name of pool",
397
- description="Identity pool for automated test",
398
- disabled=True)
693
+ display_name="Name of the pool",
694
+ description="Identity pool operates in TRUST_DOMAIN mode",
695
+ disabled=True,
696
+ mode="TRUST_DOMAIN",
697
+ inline_certificate_issuance_config={
698
+ "ca_pools": {
699
+ "us-central1": "projects/project-bar/locations/us-central1/caPools/ca-pool-bar",
700
+ "asia-east2": "projects/project-foo/locations/asia-east2/caPools/ca-pool-foo",
701
+ },
702
+ "lifetime": "86400s",
703
+ "rotation_window_percentage": 50,
704
+ "key_algorithm": "ECDSA_P256",
705
+ },
706
+ inline_trust_config={
707
+ "additional_trust_bundles": [
708
+ {
709
+ "trust_domain": "example.com",
710
+ "trust_anchors": [
711
+ {
712
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_1.pem").result,
713
+ },
714
+ {
715
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_2.pem").result,
716
+ },
717
+ ],
718
+ },
719
+ {
720
+ "trust_domain": "example.net",
721
+ "trust_anchors": [
722
+ {
723
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_3.pem").result,
724
+ },
725
+ {
726
+ "pem_certificate": std.file(input="test-fixtures/trust_anchor_4.pem").result,
727
+ },
728
+ ],
729
+ },
730
+ ],
731
+ })
399
732
  ```
400
733
 
401
734
  ## Import
@@ -440,6 +773,9 @@ class WorkloadIdentityPool(pulumi.CustomResource):
440
773
  description: Optional[pulumi.Input[builtins.str]] = None,
441
774
  disabled: Optional[pulumi.Input[builtins.bool]] = None,
442
775
  display_name: Optional[pulumi.Input[builtins.str]] = None,
776
+ inline_certificate_issuance_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs', 'WorkloadIdentityPoolInlineCertificateIssuanceConfigArgsDict']]] = None,
777
+ inline_trust_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineTrustConfigArgs', 'WorkloadIdentityPoolInlineTrustConfigArgsDict']]] = None,
778
+ mode: Optional[pulumi.Input[builtins.str]] = None,
443
779
  project: Optional[pulumi.Input[builtins.str]] = None,
444
780
  workload_identity_pool_id: Optional[pulumi.Input[builtins.str]] = None,
445
781
  __props__=None):
@@ -454,6 +790,9 @@ class WorkloadIdentityPool(pulumi.CustomResource):
454
790
  __props__.__dict__["description"] = description
455
791
  __props__.__dict__["disabled"] = disabled
456
792
  __props__.__dict__["display_name"] = display_name
793
+ __props__.__dict__["inline_certificate_issuance_config"] = inline_certificate_issuance_config
794
+ __props__.__dict__["inline_trust_config"] = inline_trust_config
795
+ __props__.__dict__["mode"] = mode
457
796
  __props__.__dict__["project"] = project
458
797
  if workload_identity_pool_id is None and not opts.urn:
459
798
  raise TypeError("Missing required property 'workload_identity_pool_id'")
@@ -473,6 +812,9 @@ class WorkloadIdentityPool(pulumi.CustomResource):
473
812
  description: Optional[pulumi.Input[builtins.str]] = None,
474
813
  disabled: Optional[pulumi.Input[builtins.bool]] = None,
475
814
  display_name: Optional[pulumi.Input[builtins.str]] = None,
815
+ inline_certificate_issuance_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs', 'WorkloadIdentityPoolInlineCertificateIssuanceConfigArgsDict']]] = None,
816
+ inline_trust_config: Optional[pulumi.Input[Union['WorkloadIdentityPoolInlineTrustConfigArgs', 'WorkloadIdentityPoolInlineTrustConfigArgsDict']]] = None,
817
+ mode: Optional[pulumi.Input[builtins.str]] = None,
476
818
  name: Optional[pulumi.Input[builtins.str]] = None,
477
819
  project: Optional[pulumi.Input[builtins.str]] = None,
478
820
  state: Optional[pulumi.Input[builtins.str]] = None,
@@ -489,16 +831,44 @@ class WorkloadIdentityPool(pulumi.CustomResource):
489
831
  existing tokens to access resources. If the pool is re-enabled, existing tokens grant
490
832
  access again.
491
833
  :param pulumi.Input[builtins.str] display_name: A display name for the pool. Cannot exceed 32 characters.
834
+ :param pulumi.Input[Union['WorkloadIdentityPoolInlineCertificateIssuanceConfigArgs', 'WorkloadIdentityPoolInlineCertificateIssuanceConfigArgsDict']] inline_certificate_issuance_config: Represents configuration for generating mutual TLS (mTLS) certificates for the identities
835
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
836
+ required for issuance and rotation of mTLS workload certificates.
837
+ Structure is documented below.
838
+ :param pulumi.Input[Union['WorkloadIdentityPoolInlineTrustConfigArgs', 'WorkloadIdentityPoolInlineTrustConfigArgsDict']] inline_trust_config: Represents config to add additional trusted trust domains. Defines configuration for extending
839
+ trust to additional trust domains. By establishing trust with another domain, the current
840
+ domain will recognize and accept certificates issued by entities within the trusted domains.
841
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
842
+ configuration.
843
+ Structure is documented below.
844
+ :param pulumi.Input[builtins.str] mode: The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
845
+ are in `FEDERATION_ONLY` mode.
846
+
847
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
848
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
849
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
850
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
851
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
852
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
853
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
854
+ within the pool besides providers.
855
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
856
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
857
+ workload identifier. The subject identifier for all identities must conform to the following
858
+ format: `ns/<namespace>/sa/<workload_identifier>`.
859
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
860
+ mode pools.
861
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
492
862
  :param pulumi.Input[builtins.str] name: The resource name of the pool as
493
863
  `projects/{project_number}/locations/global/workloadIdentityPools/{workload_identity_pool_id}`.
494
864
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
495
865
  If it is not provided, the provider project is used.
496
866
  :param pulumi.Input[builtins.str] state: The state of the pool.
497
- * STATE_UNSPECIFIED: State unspecified.
498
- * ACTIVE: The pool is active, and may be used in Google Cloud policies.
499
- * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
867
+ * `STATE_UNSPECIFIED`: State unspecified.
868
+ * `ACTIVE`: The pool is active, and may be used in Google Cloud policies.
869
+ * `DELETED`: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
500
870
  approximately 30 days. You can restore a soft-deleted pool using
501
- UndeleteWorkloadIdentityPool. You cannot reuse the ID of a soft-deleted pool until it is
871
+ `UndeleteWorkloadIdentityPool`. You cannot reuse the ID of a soft-deleted pool until it is
502
872
  permanently deleted. While a pool is deleted, you cannot use it to exchange tokens, or
503
873
  use existing tokens to access resources. If the pool is undeleted, existing tokens grant
504
874
  access again.
@@ -516,6 +886,9 @@ class WorkloadIdentityPool(pulumi.CustomResource):
516
886
  __props__.__dict__["description"] = description
517
887
  __props__.__dict__["disabled"] = disabled
518
888
  __props__.__dict__["display_name"] = display_name
889
+ __props__.__dict__["inline_certificate_issuance_config"] = inline_certificate_issuance_config
890
+ __props__.__dict__["inline_trust_config"] = inline_trust_config
891
+ __props__.__dict__["mode"] = mode
519
892
  __props__.__dict__["name"] = name
520
893
  __props__.__dict__["project"] = project
521
894
  __props__.__dict__["state"] = state
@@ -548,6 +921,55 @@ class WorkloadIdentityPool(pulumi.CustomResource):
548
921
  """
549
922
  return pulumi.get(self, "display_name")
550
923
 
924
+ @property
925
+ @pulumi.getter(name="inlineCertificateIssuanceConfig")
926
+ def inline_certificate_issuance_config(self) -> pulumi.Output[Optional['outputs.WorkloadIdentityPoolInlineCertificateIssuanceConfig']]:
927
+ """
928
+ Represents configuration for generating mutual TLS (mTLS) certificates for the identities
929
+ within this pool. Defines the Certificate Authority (CA) pool resources and configurations
930
+ required for issuance and rotation of mTLS workload certificates.
931
+ Structure is documented below.
932
+ """
933
+ return pulumi.get(self, "inline_certificate_issuance_config")
934
+
935
+ @property
936
+ @pulumi.getter(name="inlineTrustConfig")
937
+ def inline_trust_config(self) -> pulumi.Output[Optional['outputs.WorkloadIdentityPoolInlineTrustConfig']]:
938
+ """
939
+ Represents config to add additional trusted trust domains. Defines configuration for extending
940
+ trust to additional trust domains. By establishing trust with another domain, the current
941
+ domain will recognize and accept certificates issued by entities within the trusted domains.
942
+ Note that a trust domain automatically trusts itself, eliminating the need for explicit
943
+ configuration.
944
+ Structure is documented below.
945
+ """
946
+ return pulumi.get(self, "inline_trust_config")
947
+
948
+ @property
949
+ @pulumi.getter
950
+ def mode(self) -> pulumi.Output[Optional[builtins.str]]:
951
+ """
952
+ The mode for the pool is operating in. Pools with an unspecified mode will operate as if they
953
+ are in `FEDERATION_ONLY` mode.
954
+
955
+ > **Note** This field cannot be changed after the Workload Identity Pool is created. While
956
+ `pulumi preview` may show an update if you change this field's value, `pulumi up`
957
+ **will fail with an API error** (such as `Error 400: Attempted to update an immutable field.`).
958
+ To specify a different `mode`, please create a new Workload Identity Pool resource.
959
+ * `FEDERATION_ONLY`: Pools can only be used for federating external workload identities into
960
+ Google Cloud. Unless otherwise noted, no structure or format constraints are applied to
961
+ workload identities in a `FEDERATION_ONLY` mode pool, and you may not create any resources
962
+ within the pool besides providers.
963
+ * `TRUST_DOMAIN`: Pools can be used to assign identities to Google Cloud workloads. All
964
+ identities within a `TRUST_DOMAIN` mode pool must consist of a single namespace and individual
965
+ workload identifier. The subject identifier for all identities must conform to the following
966
+ format: `ns/<namespace>/sa/<workload_identifier>`.
967
+ `iam.WorkloadIdentityPoolProvider`s cannot be created within `TRUST_DOMAIN`
968
+ mode pools.
969
+ Possible values are: `FEDERATION_ONLY`, `TRUST_DOMAIN`.
970
+ """
971
+ return pulumi.get(self, "mode")
972
+
551
973
  @property
552
974
  @pulumi.getter
553
975
  def name(self) -> pulumi.Output[builtins.str]:
@@ -571,11 +993,11 @@ class WorkloadIdentityPool(pulumi.CustomResource):
571
993
  def state(self) -> pulumi.Output[builtins.str]:
572
994
  """
573
995
  The state of the pool.
574
- * STATE_UNSPECIFIED: State unspecified.
575
- * ACTIVE: The pool is active, and may be used in Google Cloud policies.
576
- * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
996
+ * `STATE_UNSPECIFIED`: State unspecified.
997
+ * `ACTIVE`: The pool is active, and may be used in Google Cloud policies.
998
+ * `DELETED`: The pool is soft-deleted. Soft-deleted pools are permanently deleted after
577
999
  approximately 30 days. You can restore a soft-deleted pool using
578
- UndeleteWorkloadIdentityPool. You cannot reuse the ID of a soft-deleted pool until it is
1000
+ `UndeleteWorkloadIdentityPool`. You cannot reuse the ID of a soft-deleted pool until it is
579
1001
  permanently deleted. While a pool is deleted, you cannot use it to exchange tokens, or
580
1002
  use existing tokens to access resources. If the pool is undeleted, existing tokens grant
581
1003
  access again.