pulumi-vault 6.4.0a1731654250__py3-none-any.whl → 6.4.0a1732100598__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.
@@ -68,6 +68,8 @@ class SecretBackendConnectionCassandra(dict):
68
68
  suggest = "pem_json"
69
69
  elif key == "protocolVersion":
70
70
  suggest = "protocol_version"
71
+ elif key == "skipVerification":
72
+ suggest = "skip_verification"
71
73
 
72
74
  if suggest:
73
75
  pulumi.log.warn(f"Key '{key}' not found in SecretBackendConnectionCassandra. Access the value via the '{suggest}' property getter instead.")
@@ -89,6 +91,7 @@ class SecretBackendConnectionCassandra(dict):
89
91
  pem_json: Optional[str] = None,
90
92
  port: Optional[int] = None,
91
93
  protocol_version: Optional[int] = None,
94
+ skip_verification: Optional[bool] = None,
92
95
  tls: Optional[bool] = None,
93
96
  username: Optional[str] = None):
94
97
  """
@@ -100,6 +103,7 @@ class SecretBackendConnectionCassandra(dict):
100
103
  :param str pem_json: Specifies JSON containing a certificate and private key; a certificate, private key, and issuing CA certificate; or just a CA certificate.
101
104
  :param int port: The transport port to use to connect to Cassandra.
102
105
  :param int protocol_version: The CQL protocol version to use.
106
+ :param bool skip_verification: Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
103
107
  :param bool tls: Whether to use TLS when connecting to Cassandra.
104
108
  :param str username: The username to use when authenticating with Cassandra.
105
109
  """
@@ -119,6 +123,8 @@ class SecretBackendConnectionCassandra(dict):
119
123
  pulumi.set(__self__, "port", port)
120
124
  if protocol_version is not None:
121
125
  pulumi.set(__self__, "protocol_version", protocol_version)
126
+ if skip_verification is not None:
127
+ pulumi.set(__self__, "skip_verification", skip_verification)
122
128
  if tls is not None:
123
129
  pulumi.set(__self__, "tls", tls)
124
130
  if username is not None:
@@ -188,6 +194,14 @@ class SecretBackendConnectionCassandra(dict):
188
194
  """
189
195
  return pulumi.get(self, "protocol_version")
190
196
 
197
+ @property
198
+ @pulumi.getter(name="skipVerification")
199
+ def skip_verification(self) -> Optional[bool]:
200
+ """
201
+ Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
202
+ """
203
+ return pulumi.get(self, "skip_verification")
204
+
191
205
  @property
192
206
  @pulumi.getter
193
207
  def tls(self) -> Optional[bool]:
@@ -1914,8 +1928,16 @@ class SecretBackendConnectionPostgresql(dict):
1914
1928
  suggest = "max_idle_connections"
1915
1929
  elif key == "maxOpenConnections":
1916
1930
  suggest = "max_open_connections"
1931
+ elif key == "privateKey":
1932
+ suggest = "private_key"
1933
+ elif key == "selfManaged":
1934
+ suggest = "self_managed"
1917
1935
  elif key == "serviceAccountJson":
1918
1936
  suggest = "service_account_json"
1937
+ elif key == "tlsCa":
1938
+ suggest = "tls_ca"
1939
+ elif key == "tlsCertificate":
1940
+ suggest = "tls_certificate"
1919
1941
  elif key == "usernameTemplate":
1920
1942
  suggest = "username_template"
1921
1943
 
@@ -1938,7 +1960,11 @@ class SecretBackendConnectionPostgresql(dict):
1938
1960
  max_idle_connections: Optional[int] = None,
1939
1961
  max_open_connections: Optional[int] = None,
1940
1962
  password: Optional[str] = None,
1963
+ private_key: Optional[str] = None,
1964
+ self_managed: Optional[bool] = None,
1941
1965
  service_account_json: Optional[str] = None,
1966
+ tls_ca: Optional[str] = None,
1967
+ tls_certificate: Optional[str] = None,
1942
1968
  username: Optional[str] = None,
1943
1969
  username_template: Optional[str] = None):
1944
1970
  """
@@ -1949,7 +1975,11 @@ class SecretBackendConnectionPostgresql(dict):
1949
1975
  :param int max_idle_connections: Maximum number of idle connections to the database.
1950
1976
  :param int max_open_connections: Maximum number of open connections to the database.
1951
1977
  :param str password: The root credential password used in the connection URL
1978
+ :param str private_key: The secret key used for the x509 client certificate. Must be PEM encoded.
1979
+ :param bool self_managed: If set, allows onboarding static roles with a rootless connection configuration.
1952
1980
  :param str service_account_json: A JSON encoded credential for use with IAM authorization
1981
+ :param str tls_ca: The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
1982
+ :param str tls_certificate: The x509 client certificate for connecting to the database. Must be PEM encoded.
1953
1983
  :param str username: The root credential username used in the connection URL
1954
1984
  :param str username_template: Username generation template.
1955
1985
  """
@@ -1967,8 +1997,16 @@ class SecretBackendConnectionPostgresql(dict):
1967
1997
  pulumi.set(__self__, "max_open_connections", max_open_connections)
1968
1998
  if password is not None:
1969
1999
  pulumi.set(__self__, "password", password)
2000
+ if private_key is not None:
2001
+ pulumi.set(__self__, "private_key", private_key)
2002
+ if self_managed is not None:
2003
+ pulumi.set(__self__, "self_managed", self_managed)
1970
2004
  if service_account_json is not None:
1971
2005
  pulumi.set(__self__, "service_account_json", service_account_json)
2006
+ if tls_ca is not None:
2007
+ pulumi.set(__self__, "tls_ca", tls_ca)
2008
+ if tls_certificate is not None:
2009
+ pulumi.set(__self__, "tls_certificate", tls_certificate)
1972
2010
  if username is not None:
1973
2011
  pulumi.set(__self__, "username", username)
1974
2012
  if username_template is not None:
@@ -2030,6 +2068,22 @@ class SecretBackendConnectionPostgresql(dict):
2030
2068
  """
2031
2069
  return pulumi.get(self, "password")
2032
2070
 
2071
+ @property
2072
+ @pulumi.getter(name="privateKey")
2073
+ def private_key(self) -> Optional[str]:
2074
+ """
2075
+ The secret key used for the x509 client certificate. Must be PEM encoded.
2076
+ """
2077
+ return pulumi.get(self, "private_key")
2078
+
2079
+ @property
2080
+ @pulumi.getter(name="selfManaged")
2081
+ def self_managed(self) -> Optional[bool]:
2082
+ """
2083
+ If set, allows onboarding static roles with a rootless connection configuration.
2084
+ """
2085
+ return pulumi.get(self, "self_managed")
2086
+
2033
2087
  @property
2034
2088
  @pulumi.getter(name="serviceAccountJson")
2035
2089
  def service_account_json(self) -> Optional[str]:
@@ -2038,6 +2092,22 @@ class SecretBackendConnectionPostgresql(dict):
2038
2092
  """
2039
2093
  return pulumi.get(self, "service_account_json")
2040
2094
 
2095
+ @property
2096
+ @pulumi.getter(name="tlsCa")
2097
+ def tls_ca(self) -> Optional[str]:
2098
+ """
2099
+ The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
2100
+ """
2101
+ return pulumi.get(self, "tls_ca")
2102
+
2103
+ @property
2104
+ @pulumi.getter(name="tlsCertificate")
2105
+ def tls_certificate(self) -> Optional[str]:
2106
+ """
2107
+ The x509 client certificate for connecting to the database. Must be PEM encoded.
2108
+ """
2109
+ return pulumi.get(self, "tls_certificate")
2110
+
2041
2111
  @property
2042
2112
  @pulumi.getter
2043
2113
  def username(self) -> Optional[str]:
@@ -2483,6 +2553,8 @@ class SecretsMountCassandra(dict):
2483
2553
  suggest = "protocol_version"
2484
2554
  elif key == "rootRotationStatements":
2485
2555
  suggest = "root_rotation_statements"
2556
+ elif key == "skipVerification":
2557
+ suggest = "skip_verification"
2486
2558
  elif key == "verifyConnection":
2487
2559
  suggest = "verify_connection"
2488
2560
 
@@ -2511,6 +2583,7 @@ class SecretsMountCassandra(dict):
2511
2583
  port: Optional[int] = None,
2512
2584
  protocol_version: Optional[int] = None,
2513
2585
  root_rotation_statements: Optional[Sequence[str]] = None,
2586
+ skip_verification: Optional[bool] = None,
2514
2587
  tls: Optional[bool] = None,
2515
2588
  username: Optional[str] = None,
2516
2589
  verify_connection: Optional[bool] = None):
@@ -2531,6 +2604,7 @@ class SecretsMountCassandra(dict):
2531
2604
  :param int port: The transport port to use to connect to Cassandra.
2532
2605
  :param int protocol_version: The CQL protocol version to use.
2533
2606
  :param Sequence[str] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
2607
+ :param bool skip_verification: Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
2534
2608
  :param bool tls: Whether to use TLS when connecting to Cassandra.
2535
2609
  :param str username: The username to use when authenticating with Cassandra.
2536
2610
  :param bool verify_connection: Whether the connection should be verified on
@@ -2561,6 +2635,8 @@ class SecretsMountCassandra(dict):
2561
2635
  pulumi.set(__self__, "protocol_version", protocol_version)
2562
2636
  if root_rotation_statements is not None:
2563
2637
  pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
2638
+ if skip_verification is not None:
2639
+ pulumi.set(__self__, "skip_verification", skip_verification)
2564
2640
  if tls is not None:
2565
2641
  pulumi.set(__self__, "tls", tls)
2566
2642
  if username is not None:
@@ -2675,6 +2751,14 @@ class SecretsMountCassandra(dict):
2675
2751
  """
2676
2752
  return pulumi.get(self, "root_rotation_statements")
2677
2753
 
2754
+ @property
2755
+ @pulumi.getter(name="skipVerification")
2756
+ def skip_verification(self) -> Optional[bool]:
2757
+ """
2758
+ Skip permissions checks when a connection to Cassandra is first created. These checks ensure that Vault is able to create roles, but can be resource intensive in clusters with many roles.
2759
+ """
2760
+ return pulumi.get(self, "skip_verification")
2761
+
2678
2762
  @property
2679
2763
  @pulumi.getter
2680
2764
  def tls(self) -> Optional[bool]:
@@ -5458,10 +5542,18 @@ class SecretsMountPostgresql(dict):
5458
5542
  suggest = "max_open_connections"
5459
5543
  elif key == "pluginName":
5460
5544
  suggest = "plugin_name"
5545
+ elif key == "privateKey":
5546
+ suggest = "private_key"
5461
5547
  elif key == "rootRotationStatements":
5462
5548
  suggest = "root_rotation_statements"
5549
+ elif key == "selfManaged":
5550
+ suggest = "self_managed"
5463
5551
  elif key == "serviceAccountJson":
5464
5552
  suggest = "service_account_json"
5553
+ elif key == "tlsCa":
5554
+ suggest = "tls_ca"
5555
+ elif key == "tlsCertificate":
5556
+ suggest = "tls_certificate"
5465
5557
  elif key == "usernameTemplate":
5466
5558
  suggest = "username_template"
5467
5559
  elif key == "verifyConnection":
@@ -5490,8 +5582,12 @@ class SecretsMountPostgresql(dict):
5490
5582
  max_open_connections: Optional[int] = None,
5491
5583
  password: Optional[str] = None,
5492
5584
  plugin_name: Optional[str] = None,
5585
+ private_key: Optional[str] = None,
5493
5586
  root_rotation_statements: Optional[Sequence[str]] = None,
5587
+ self_managed: Optional[bool] = None,
5494
5588
  service_account_json: Optional[str] = None,
5589
+ tls_ca: Optional[str] = None,
5590
+ tls_certificate: Optional[str] = None,
5495
5591
  username: Optional[str] = None,
5496
5592
  username_template: Optional[str] = None,
5497
5593
  verify_connection: Optional[bool] = None):
@@ -5510,8 +5606,12 @@ class SecretsMountPostgresql(dict):
5510
5606
  :param int max_open_connections: Maximum number of open connections to the database.
5511
5607
  :param str password: The root credential password used in the connection URL
5512
5608
  :param str plugin_name: Specifies the name of the plugin to use.
5609
+ :param str private_key: The secret key used for the x509 client certificate. Must be PEM encoded.
5513
5610
  :param Sequence[str] root_rotation_statements: A list of database statements to be executed to rotate the root user's credentials.
5611
+ :param bool self_managed: If set, allows onboarding static roles with a rootless connection configuration.
5514
5612
  :param str service_account_json: A JSON encoded credential for use with IAM authorization
5613
+ :param str tls_ca: The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
5614
+ :param str tls_certificate: The x509 client certificate for connecting to the database. Must be PEM encoded.
5515
5615
  :param str username: The root credential username used in the connection URL
5516
5616
  :param str username_template: Username generation template.
5517
5617
  :param bool verify_connection: Whether the connection should be verified on
@@ -5538,10 +5638,18 @@ class SecretsMountPostgresql(dict):
5538
5638
  pulumi.set(__self__, "password", password)
5539
5639
  if plugin_name is not None:
5540
5640
  pulumi.set(__self__, "plugin_name", plugin_name)
5641
+ if private_key is not None:
5642
+ pulumi.set(__self__, "private_key", private_key)
5541
5643
  if root_rotation_statements is not None:
5542
5644
  pulumi.set(__self__, "root_rotation_statements", root_rotation_statements)
5645
+ if self_managed is not None:
5646
+ pulumi.set(__self__, "self_managed", self_managed)
5543
5647
  if service_account_json is not None:
5544
5648
  pulumi.set(__self__, "service_account_json", service_account_json)
5649
+ if tls_ca is not None:
5650
+ pulumi.set(__self__, "tls_ca", tls_ca)
5651
+ if tls_certificate is not None:
5652
+ pulumi.set(__self__, "tls_certificate", tls_certificate)
5545
5653
  if username is not None:
5546
5654
  pulumi.set(__self__, "username", username)
5547
5655
  if username_template is not None:
@@ -5640,6 +5748,14 @@ class SecretsMountPostgresql(dict):
5640
5748
  """
5641
5749
  return pulumi.get(self, "plugin_name")
5642
5750
 
5751
+ @property
5752
+ @pulumi.getter(name="privateKey")
5753
+ def private_key(self) -> Optional[str]:
5754
+ """
5755
+ The secret key used for the x509 client certificate. Must be PEM encoded.
5756
+ """
5757
+ return pulumi.get(self, "private_key")
5758
+
5643
5759
  @property
5644
5760
  @pulumi.getter(name="rootRotationStatements")
5645
5761
  def root_rotation_statements(self) -> Optional[Sequence[str]]:
@@ -5648,6 +5764,14 @@ class SecretsMountPostgresql(dict):
5648
5764
  """
5649
5765
  return pulumi.get(self, "root_rotation_statements")
5650
5766
 
5767
+ @property
5768
+ @pulumi.getter(name="selfManaged")
5769
+ def self_managed(self) -> Optional[bool]:
5770
+ """
5771
+ If set, allows onboarding static roles with a rootless connection configuration.
5772
+ """
5773
+ return pulumi.get(self, "self_managed")
5774
+
5651
5775
  @property
5652
5776
  @pulumi.getter(name="serviceAccountJson")
5653
5777
  def service_account_json(self) -> Optional[str]:
@@ -5656,6 +5780,22 @@ class SecretsMountPostgresql(dict):
5656
5780
  """
5657
5781
  return pulumi.get(self, "service_account_json")
5658
5782
 
5783
+ @property
5784
+ @pulumi.getter(name="tlsCa")
5785
+ def tls_ca(self) -> Optional[str]:
5786
+ """
5787
+ The x509 CA file for validating the certificate presented by the PostgreSQL server. Must be PEM encoded.
5788
+ """
5789
+ return pulumi.get(self, "tls_ca")
5790
+
5791
+ @property
5792
+ @pulumi.getter(name="tlsCertificate")
5793
+ def tls_certificate(self) -> Optional[str]:
5794
+ """
5795
+ The x509 client certificate for connecting to the database. Must be PEM encoded.
5796
+ """
5797
+ return pulumi.get(self, "tls_certificate")
5798
+
5659
5799
  @property
5660
5800
  @pulumi.getter
5661
5801
  def username(self) -> Optional[str]:
@@ -27,7 +27,8 @@ class SecretBackendStaticRoleArgs:
27
27
  rotation_period: Optional[pulumi.Input[int]] = None,
28
28
  rotation_schedule: Optional[pulumi.Input[str]] = None,
29
29
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
30
- rotation_window: Optional[pulumi.Input[int]] = None):
30
+ rotation_window: Optional[pulumi.Input[int]] = None,
31
+ self_managed_password: Optional[pulumi.Input[str]] = None):
31
32
  """
32
33
  The set of arguments for constructing a SecretBackendStaticRole resource.
33
34
  :param pulumi.Input[str] backend: The unique name of the Vault mount to configure.
@@ -48,6 +49,9 @@ class SecretBackendStaticRoleArgs:
48
49
  :param pulumi.Input[Sequence[pulumi.Input[str]]] rotation_statements: Database statements to execute to rotate the password for the configured database user.
49
50
  :param pulumi.Input[int] rotation_window: The amount of time, in seconds, in which rotations are allowed to occur starting
50
51
  from a given `rotation_schedule`.
52
+ :param pulumi.Input[str] self_managed_password: The password corresponding to the username in the database.
53
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
54
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
51
55
  """
52
56
  pulumi.set(__self__, "backend", backend)
53
57
  pulumi.set(__self__, "db_name", db_name)
@@ -64,6 +68,8 @@ class SecretBackendStaticRoleArgs:
64
68
  pulumi.set(__self__, "rotation_statements", rotation_statements)
65
69
  if rotation_window is not None:
66
70
  pulumi.set(__self__, "rotation_window", rotation_window)
71
+ if self_managed_password is not None:
72
+ pulumi.set(__self__, "self_managed_password", self_managed_password)
67
73
 
68
74
  @property
69
75
  @pulumi.getter
@@ -182,6 +188,20 @@ class SecretBackendStaticRoleArgs:
182
188
  def rotation_window(self, value: Optional[pulumi.Input[int]]):
183
189
  pulumi.set(self, "rotation_window", value)
184
190
 
191
+ @property
192
+ @pulumi.getter(name="selfManagedPassword")
193
+ def self_managed_password(self) -> Optional[pulumi.Input[str]]:
194
+ """
195
+ The password corresponding to the username in the database.
196
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
197
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
198
+ """
199
+ return pulumi.get(self, "self_managed_password")
200
+
201
+ @self_managed_password.setter
202
+ def self_managed_password(self, value: Optional[pulumi.Input[str]]):
203
+ pulumi.set(self, "self_managed_password", value)
204
+
185
205
 
186
206
  @pulumi.input_type
187
207
  class _SecretBackendStaticRoleState:
@@ -194,6 +214,7 @@ class _SecretBackendStaticRoleState:
194
214
  rotation_schedule: Optional[pulumi.Input[str]] = None,
195
215
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
196
216
  rotation_window: Optional[pulumi.Input[int]] = None,
217
+ self_managed_password: Optional[pulumi.Input[str]] = None,
197
218
  username: Optional[pulumi.Input[str]] = None):
198
219
  """
199
220
  Input properties used for looking up and filtering SecretBackendStaticRole resources.
@@ -214,6 +235,9 @@ class _SecretBackendStaticRoleState:
214
235
  :param pulumi.Input[Sequence[pulumi.Input[str]]] rotation_statements: Database statements to execute to rotate the password for the configured database user.
215
236
  :param pulumi.Input[int] rotation_window: The amount of time, in seconds, in which rotations are allowed to occur starting
216
237
  from a given `rotation_schedule`.
238
+ :param pulumi.Input[str] self_managed_password: The password corresponding to the username in the database.
239
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
240
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
217
241
  :param pulumi.Input[str] username: The database username that this static role corresponds to.
218
242
  """
219
243
  if backend is not None:
@@ -232,6 +256,8 @@ class _SecretBackendStaticRoleState:
232
256
  pulumi.set(__self__, "rotation_statements", rotation_statements)
233
257
  if rotation_window is not None:
234
258
  pulumi.set(__self__, "rotation_window", rotation_window)
259
+ if self_managed_password is not None:
260
+ pulumi.set(__self__, "self_managed_password", self_managed_password)
235
261
  if username is not None:
236
262
  pulumi.set(__self__, "username", username)
237
263
 
@@ -340,6 +366,20 @@ class _SecretBackendStaticRoleState:
340
366
  def rotation_window(self, value: Optional[pulumi.Input[int]]):
341
367
  pulumi.set(self, "rotation_window", value)
342
368
 
369
+ @property
370
+ @pulumi.getter(name="selfManagedPassword")
371
+ def self_managed_password(self) -> Optional[pulumi.Input[str]]:
372
+ """
373
+ The password corresponding to the username in the database.
374
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
375
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
376
+ """
377
+ return pulumi.get(self, "self_managed_password")
378
+
379
+ @self_managed_password.setter
380
+ def self_managed_password(self, value: Optional[pulumi.Input[str]]):
381
+ pulumi.set(self, "self_managed_password", value)
382
+
343
383
  @property
344
384
  @pulumi.getter
345
385
  def username(self) -> Optional[pulumi.Input[str]]:
@@ -366,6 +406,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
366
406
  rotation_schedule: Optional[pulumi.Input[str]] = None,
367
407
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
368
408
  rotation_window: Optional[pulumi.Input[int]] = None,
409
+ self_managed_password: Optional[pulumi.Input[str]] = None,
369
410
  username: Optional[pulumi.Input[str]] = None,
370
411
  __props__=None):
371
412
  """
@@ -435,6 +476,9 @@ class SecretBackendStaticRole(pulumi.CustomResource):
435
476
  :param pulumi.Input[Sequence[pulumi.Input[str]]] rotation_statements: Database statements to execute to rotate the password for the configured database user.
436
477
  :param pulumi.Input[int] rotation_window: The amount of time, in seconds, in which rotations are allowed to occur starting
437
478
  from a given `rotation_schedule`.
479
+ :param pulumi.Input[str] self_managed_password: The password corresponding to the username in the database.
480
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
481
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
438
482
  :param pulumi.Input[str] username: The database username that this static role corresponds to.
439
483
  """
440
484
  ...
@@ -514,6 +558,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
514
558
  rotation_schedule: Optional[pulumi.Input[str]] = None,
515
559
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
516
560
  rotation_window: Optional[pulumi.Input[int]] = None,
561
+ self_managed_password: Optional[pulumi.Input[str]] = None,
517
562
  username: Optional[pulumi.Input[str]] = None,
518
563
  __props__=None):
519
564
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -536,9 +581,12 @@ class SecretBackendStaticRole(pulumi.CustomResource):
536
581
  __props__.__dict__["rotation_schedule"] = rotation_schedule
537
582
  __props__.__dict__["rotation_statements"] = rotation_statements
538
583
  __props__.__dict__["rotation_window"] = rotation_window
584
+ __props__.__dict__["self_managed_password"] = None if self_managed_password is None else pulumi.Output.secret(self_managed_password)
539
585
  if username is None and not opts.urn:
540
586
  raise TypeError("Missing required property 'username'")
541
587
  __props__.__dict__["username"] = username
588
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["selfManagedPassword"])
589
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
542
590
  super(SecretBackendStaticRole, __self__).__init__(
543
591
  'vault:database/secretBackendStaticRole:SecretBackendStaticRole',
544
592
  resource_name,
@@ -557,6 +605,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
557
605
  rotation_schedule: Optional[pulumi.Input[str]] = None,
558
606
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
559
607
  rotation_window: Optional[pulumi.Input[int]] = None,
608
+ self_managed_password: Optional[pulumi.Input[str]] = None,
560
609
  username: Optional[pulumi.Input[str]] = None) -> 'SecretBackendStaticRole':
561
610
  """
562
611
  Get an existing SecretBackendStaticRole resource's state with the given name, id, and optional extra
@@ -582,6 +631,9 @@ class SecretBackendStaticRole(pulumi.CustomResource):
582
631
  :param pulumi.Input[Sequence[pulumi.Input[str]]] rotation_statements: Database statements to execute to rotate the password for the configured database user.
583
632
  :param pulumi.Input[int] rotation_window: The amount of time, in seconds, in which rotations are allowed to occur starting
584
633
  from a given `rotation_schedule`.
634
+ :param pulumi.Input[str] self_managed_password: The password corresponding to the username in the database.
635
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
636
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
585
637
  :param pulumi.Input[str] username: The database username that this static role corresponds to.
586
638
  """
587
639
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
@@ -596,6 +648,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
596
648
  __props__.__dict__["rotation_schedule"] = rotation_schedule
597
649
  __props__.__dict__["rotation_statements"] = rotation_statements
598
650
  __props__.__dict__["rotation_window"] = rotation_window
651
+ __props__.__dict__["self_managed_password"] = self_managed_password
599
652
  __props__.__dict__["username"] = username
600
653
  return SecretBackendStaticRole(resource_name, opts=opts, __props__=__props__)
601
654
 
@@ -672,6 +725,16 @@ class SecretBackendStaticRole(pulumi.CustomResource):
672
725
  """
673
726
  return pulumi.get(self, "rotation_window")
674
727
 
728
+ @property
729
+ @pulumi.getter(name="selfManagedPassword")
730
+ def self_managed_password(self) -> pulumi.Output[Optional[str]]:
731
+ """
732
+ The password corresponding to the username in the database.
733
+ Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
734
+ select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
735
+ """
736
+ return pulumi.get(self, "self_managed_password")
737
+
675
738
  @property
676
739
  @pulumi.getter
677
740
  def username(self) -> pulumi.Output[str]:
@@ -23,7 +23,8 @@ class SecretImpersonatedAccountArgs:
23
23
  impersonated_account: pulumi.Input[str],
24
24
  service_account_email: pulumi.Input[str],
25
25
  namespace: Optional[pulumi.Input[str]] = None,
26
- token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
26
+ token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
27
+ ttl: Optional[pulumi.Input[str]] = None):
27
28
  """
28
29
  The set of arguments for constructing a SecretImpersonatedAccount resource.
29
30
  :param pulumi.Input[str] backend: Path where the GCP Secrets Engine is mounted
@@ -31,6 +32,8 @@ class SecretImpersonatedAccountArgs:
31
32
  :param pulumi.Input[str] service_account_email: Email of the GCP service account to impersonate.
32
33
  :param pulumi.Input[str] namespace: Target namespace. (requires Enterprise)
33
34
  :param pulumi.Input[Sequence[pulumi.Input[str]]] token_scopes: List of OAuth scopes to assign to access tokens generated under this impersonated account.
35
+ :param pulumi.Input[str] ttl: Specifies the default TTL for service principals generated using this role.
36
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
34
37
  """
35
38
  pulumi.set(__self__, "backend", backend)
36
39
  pulumi.set(__self__, "impersonated_account", impersonated_account)
@@ -39,6 +42,8 @@ class SecretImpersonatedAccountArgs:
39
42
  pulumi.set(__self__, "namespace", namespace)
40
43
  if token_scopes is not None:
41
44
  pulumi.set(__self__, "token_scopes", token_scopes)
45
+ if ttl is not None:
46
+ pulumi.set(__self__, "ttl", ttl)
42
47
 
43
48
  @property
44
49
  @pulumi.getter
@@ -100,6 +105,19 @@ class SecretImpersonatedAccountArgs:
100
105
  def token_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
101
106
  pulumi.set(self, "token_scopes", value)
102
107
 
108
+ @property
109
+ @pulumi.getter
110
+ def ttl(self) -> Optional[pulumi.Input[str]]:
111
+ """
112
+ Specifies the default TTL for service principals generated using this role.
113
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
114
+ """
115
+ return pulumi.get(self, "ttl")
116
+
117
+ @ttl.setter
118
+ def ttl(self, value: Optional[pulumi.Input[str]]):
119
+ pulumi.set(self, "ttl", value)
120
+
103
121
 
104
122
  @pulumi.input_type
105
123
  class _SecretImpersonatedAccountState:
@@ -109,7 +127,8 @@ class _SecretImpersonatedAccountState:
109
127
  namespace: Optional[pulumi.Input[str]] = None,
110
128
  service_account_email: Optional[pulumi.Input[str]] = None,
111
129
  service_account_project: Optional[pulumi.Input[str]] = None,
112
- token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
130
+ token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
131
+ ttl: Optional[pulumi.Input[str]] = None):
113
132
  """
114
133
  Input properties used for looking up and filtering SecretImpersonatedAccount resources.
115
134
  :param pulumi.Input[str] backend: Path where the GCP Secrets Engine is mounted
@@ -118,6 +137,8 @@ class _SecretImpersonatedAccountState:
118
137
  :param pulumi.Input[str] service_account_email: Email of the GCP service account to impersonate.
119
138
  :param pulumi.Input[str] service_account_project: Project the service account belongs to.
120
139
  :param pulumi.Input[Sequence[pulumi.Input[str]]] token_scopes: List of OAuth scopes to assign to access tokens generated under this impersonated account.
140
+ :param pulumi.Input[str] ttl: Specifies the default TTL for service principals generated using this role.
141
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
121
142
  """
122
143
  if backend is not None:
123
144
  pulumi.set(__self__, "backend", backend)
@@ -131,6 +152,8 @@ class _SecretImpersonatedAccountState:
131
152
  pulumi.set(__self__, "service_account_project", service_account_project)
132
153
  if token_scopes is not None:
133
154
  pulumi.set(__self__, "token_scopes", token_scopes)
155
+ if ttl is not None:
156
+ pulumi.set(__self__, "ttl", ttl)
134
157
 
135
158
  @property
136
159
  @pulumi.getter
@@ -204,6 +227,19 @@ class _SecretImpersonatedAccountState:
204
227
  def token_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
205
228
  pulumi.set(self, "token_scopes", value)
206
229
 
230
+ @property
231
+ @pulumi.getter
232
+ def ttl(self) -> Optional[pulumi.Input[str]]:
233
+ """
234
+ Specifies the default TTL for service principals generated using this role.
235
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
236
+ """
237
+ return pulumi.get(self, "ttl")
238
+
239
+ @ttl.setter
240
+ def ttl(self, value: Optional[pulumi.Input[str]]):
241
+ pulumi.set(self, "ttl", value)
242
+
207
243
 
208
244
  class SecretImpersonatedAccount(pulumi.CustomResource):
209
245
  @overload
@@ -215,6 +251,7 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
215
251
  namespace: Optional[pulumi.Input[str]] = None,
216
252
  service_account_email: Optional[pulumi.Input[str]] = None,
217
253
  token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
254
+ ttl: Optional[pulumi.Input[str]] = None,
218
255
  __props__=None):
219
256
  """
220
257
  Creates a Impersonated Account in the [GCP Secrets Engine](https://www.vaultproject.io/docs/secrets/gcp/index.html) for Vault.
@@ -256,6 +293,8 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
256
293
  :param pulumi.Input[str] namespace: Target namespace. (requires Enterprise)
257
294
  :param pulumi.Input[str] service_account_email: Email of the GCP service account to impersonate.
258
295
  :param pulumi.Input[Sequence[pulumi.Input[str]]] token_scopes: List of OAuth scopes to assign to access tokens generated under this impersonated account.
296
+ :param pulumi.Input[str] ttl: Specifies the default TTL for service principals generated using this role.
297
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
259
298
  """
260
299
  ...
261
300
  @overload
@@ -316,6 +355,7 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
316
355
  namespace: Optional[pulumi.Input[str]] = None,
317
356
  service_account_email: Optional[pulumi.Input[str]] = None,
318
357
  token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
358
+ ttl: Optional[pulumi.Input[str]] = None,
319
359
  __props__=None):
320
360
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
321
361
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -336,6 +376,7 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
336
376
  raise TypeError("Missing required property 'service_account_email'")
337
377
  __props__.__dict__["service_account_email"] = service_account_email
338
378
  __props__.__dict__["token_scopes"] = token_scopes
379
+ __props__.__dict__["ttl"] = ttl
339
380
  __props__.__dict__["service_account_project"] = None
340
381
  super(SecretImpersonatedAccount, __self__).__init__(
341
382
  'vault:gcp/secretImpersonatedAccount:SecretImpersonatedAccount',
@@ -352,7 +393,8 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
352
393
  namespace: Optional[pulumi.Input[str]] = None,
353
394
  service_account_email: Optional[pulumi.Input[str]] = None,
354
395
  service_account_project: Optional[pulumi.Input[str]] = None,
355
- token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'SecretImpersonatedAccount':
396
+ token_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
397
+ ttl: Optional[pulumi.Input[str]] = None) -> 'SecretImpersonatedAccount':
356
398
  """
357
399
  Get an existing SecretImpersonatedAccount resource's state with the given name, id, and optional extra
358
400
  properties used to qualify the lookup.
@@ -366,6 +408,8 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
366
408
  :param pulumi.Input[str] service_account_email: Email of the GCP service account to impersonate.
367
409
  :param pulumi.Input[str] service_account_project: Project the service account belongs to.
368
410
  :param pulumi.Input[Sequence[pulumi.Input[str]]] token_scopes: List of OAuth scopes to assign to access tokens generated under this impersonated account.
411
+ :param pulumi.Input[str] ttl: Specifies the default TTL for service principals generated using this role.
412
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
369
413
  """
370
414
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
371
415
 
@@ -377,6 +421,7 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
377
421
  __props__.__dict__["service_account_email"] = service_account_email
378
422
  __props__.__dict__["service_account_project"] = service_account_project
379
423
  __props__.__dict__["token_scopes"] = token_scopes
424
+ __props__.__dict__["ttl"] = ttl
380
425
  return SecretImpersonatedAccount(resource_name, opts=opts, __props__=__props__)
381
426
 
382
427
  @property
@@ -427,3 +472,12 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
427
472
  """
428
473
  return pulumi.get(self, "token_scopes")
429
474
 
475
+ @property
476
+ @pulumi.getter
477
+ def ttl(self) -> pulumi.Output[str]:
478
+ """
479
+ Specifies the default TTL for service principals generated using this role.
480
+ Accepts time suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
481
+ """
482
+ return pulumi.get(self, "ttl")
483
+