pulumi-vault 7.5.0a1763696324__py3-none-any.whl → 7.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2739,6 +2739,10 @@ if not MYPY:
2739
2739
  """
2740
2740
  Version counter for root credential password write-only field
2741
2741
  """
2742
+ self_managed: NotRequired[pulumi.Input[_builtins.bool]]
2743
+ """
2744
+ If set, allows onboarding static roles with a rootless connection configuration.
2745
+ """
2742
2746
  split_statements: NotRequired[pulumi.Input[_builtins.bool]]
2743
2747
  """
2744
2748
  Set to true in order to split statements after semi-colons.
@@ -2765,6 +2769,7 @@ class SecretBackendConnectionOracleArgs:
2765
2769
  password: Optional[pulumi.Input[_builtins.str]] = None,
2766
2770
  password_wo: Optional[pulumi.Input[_builtins.str]] = None,
2767
2771
  password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
2772
+ self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
2768
2773
  split_statements: Optional[pulumi.Input[_builtins.bool]] = None,
2769
2774
  username: Optional[pulumi.Input[_builtins.str]] = None,
2770
2775
  username_template: Optional[pulumi.Input[_builtins.str]] = None):
@@ -2778,6 +2783,7 @@ class SecretBackendConnectionOracleArgs:
2778
2783
  :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
2779
2784
  Write-only field for the root credential password used in the connection URL
2780
2785
  :param pulumi.Input[_builtins.int] password_wo_version: Version counter for root credential password write-only field
2786
+ :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
2781
2787
  :param pulumi.Input[_builtins.bool] split_statements: Set to true in order to split statements after semi-colons.
2782
2788
  :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
2783
2789
  :param pulumi.Input[_builtins.str] username_template: Username generation template.
@@ -2798,6 +2804,8 @@ class SecretBackendConnectionOracleArgs:
2798
2804
  pulumi.set(__self__, "password_wo", password_wo)
2799
2805
  if password_wo_version is not None:
2800
2806
  pulumi.set(__self__, "password_wo_version", password_wo_version)
2807
+ if self_managed is not None:
2808
+ pulumi.set(__self__, "self_managed", self_managed)
2801
2809
  if split_statements is not None:
2802
2810
  pulumi.set(__self__, "split_statements", split_statements)
2803
2811
  if username is not None:
@@ -2902,6 +2910,18 @@ class SecretBackendConnectionOracleArgs:
2902
2910
  def password_wo_version(self, value: Optional[pulumi.Input[_builtins.int]]):
2903
2911
  pulumi.set(self, "password_wo_version", value)
2904
2912
 
2913
+ @_builtins.property
2914
+ @pulumi.getter(name="selfManaged")
2915
+ def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
2916
+ """
2917
+ If set, allows onboarding static roles with a rootless connection configuration.
2918
+ """
2919
+ return pulumi.get(self, "self_managed")
2920
+
2921
+ @self_managed.setter
2922
+ def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
2923
+ pulumi.set(self, "self_managed", value)
2924
+
2905
2925
  @_builtins.property
2906
2926
  @pulumi.getter(name="splitStatements")
2907
2927
  def split_statements(self) -> Optional[pulumi.Input[_builtins.bool]]:
@@ -9358,6 +9378,10 @@ if not MYPY:
9358
9378
  a rotation when a scheduled token rotation occurs. The default rotation window is
9359
9379
  unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
9360
9380
  """
9381
+ self_managed: NotRequired[pulumi.Input[_builtins.bool]]
9382
+ """
9383
+ If set, allows onboarding static roles with a rootless connection configuration.
9384
+ """
9361
9385
  split_statements: NotRequired[pulumi.Input[_builtins.bool]]
9362
9386
  """
9363
9387
  Set to true in order to split statements after semi-colons.
@@ -9398,6 +9422,7 @@ class SecretsMountOracleArgs:
9398
9422
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
9399
9423
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
9400
9424
  rotation_window: Optional[pulumi.Input[_builtins.int]] = None,
9425
+ self_managed: Optional[pulumi.Input[_builtins.bool]] = None,
9401
9426
  split_statements: Optional[pulumi.Input[_builtins.bool]] = None,
9402
9427
  username: Optional[pulumi.Input[_builtins.str]] = None,
9403
9428
  username_template: Optional[pulumi.Input[_builtins.str]] = None,
@@ -9428,6 +9453,7 @@ class SecretsMountOracleArgs:
9428
9453
  :param pulumi.Input[_builtins.int] rotation_window: The maximum amount of time in seconds allowed to complete
9429
9454
  a rotation when a scheduled token rotation occurs. The default rotation window is
9430
9455
  unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
9456
+ :param pulumi.Input[_builtins.bool] self_managed: If set, allows onboarding static roles with a rootless connection configuration.
9431
9457
  :param pulumi.Input[_builtins.bool] split_statements: Set to true in order to split statements after semi-colons.
9432
9458
  :param pulumi.Input[_builtins.str] username: The root credential username used in the connection URL
9433
9459
  :param pulumi.Input[_builtins.str] username_template: Username generation template.
@@ -9467,6 +9493,8 @@ class SecretsMountOracleArgs:
9467
9493
  pulumi.set(__self__, "rotation_schedule", rotation_schedule)
9468
9494
  if rotation_window is not None:
9469
9495
  pulumi.set(__self__, "rotation_window", rotation_window)
9496
+ if self_managed is not None:
9497
+ pulumi.set(__self__, "self_managed", self_managed)
9470
9498
  if split_statements is not None:
9471
9499
  pulumi.set(__self__, "split_statements", split_statements)
9472
9500
  if username is not None:
@@ -9688,6 +9716,18 @@ class SecretsMountOracleArgs:
9688
9716
  def rotation_window(self, value: Optional[pulumi.Input[_builtins.int]]):
9689
9717
  pulumi.set(self, "rotation_window", value)
9690
9718
 
9719
+ @_builtins.property
9720
+ @pulumi.getter(name="selfManaged")
9721
+ def self_managed(self) -> Optional[pulumi.Input[_builtins.bool]]:
9722
+ """
9723
+ If set, allows onboarding static roles with a rootless connection configuration.
9724
+ """
9725
+ return pulumi.get(self, "self_managed")
9726
+
9727
+ @self_managed.setter
9728
+ def self_managed(self, value: Optional[pulumi.Input[_builtins.bool]]):
9729
+ pulumi.set(self, "self_managed", value)
9730
+
9691
9731
  @_builtins.property
9692
9732
  @pulumi.getter(name="splitStatements")
9693
9733
  def split_statements(self) -> Optional[pulumi.Input[_builtins.bool]]:
@@ -1996,6 +1996,8 @@ class SecretBackendConnectionOracle(dict):
1996
1996
  suggest = "password_wo"
1997
1997
  elif key == "passwordWoVersion":
1998
1998
  suggest = "password_wo_version"
1999
+ elif key == "selfManaged":
2000
+ suggest = "self_managed"
1999
2001
  elif key == "splitStatements":
2000
2002
  suggest = "split_statements"
2001
2003
  elif key == "usernameTemplate":
@@ -2021,6 +2023,7 @@ class SecretBackendConnectionOracle(dict):
2021
2023
  password: Optional[_builtins.str] = None,
2022
2024
  password_wo: Optional[_builtins.str] = None,
2023
2025
  password_wo_version: Optional[_builtins.int] = None,
2026
+ self_managed: Optional[_builtins.bool] = None,
2024
2027
  split_statements: Optional[_builtins.bool] = None,
2025
2028
  username: Optional[_builtins.str] = None,
2026
2029
  username_template: Optional[_builtins.str] = None):
@@ -2034,6 +2037,7 @@ class SecretBackendConnectionOracle(dict):
2034
2037
  :param _builtins.str password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
2035
2038
  Write-only field for the root credential password used in the connection URL
2036
2039
  :param _builtins.int password_wo_version: Version counter for root credential password write-only field
2040
+ :param _builtins.bool self_managed: If set, allows onboarding static roles with a rootless connection configuration.
2037
2041
  :param _builtins.bool split_statements: Set to true in order to split statements after semi-colons.
2038
2042
  :param _builtins.str username: The root credential username used in the connection URL
2039
2043
  :param _builtins.str username_template: Username generation template.
@@ -2054,6 +2058,8 @@ class SecretBackendConnectionOracle(dict):
2054
2058
  pulumi.set(__self__, "password_wo", password_wo)
2055
2059
  if password_wo_version is not None:
2056
2060
  pulumi.set(__self__, "password_wo_version", password_wo_version)
2061
+ if self_managed is not None:
2062
+ pulumi.set(__self__, "self_managed", self_managed)
2057
2063
  if split_statements is not None:
2058
2064
  pulumi.set(__self__, "split_statements", split_statements)
2059
2065
  if username is not None:
@@ -2126,6 +2132,14 @@ class SecretBackendConnectionOracle(dict):
2126
2132
  """
2127
2133
  return pulumi.get(self, "password_wo_version")
2128
2134
 
2135
+ @_builtins.property
2136
+ @pulumi.getter(name="selfManaged")
2137
+ def self_managed(self) -> Optional[_builtins.bool]:
2138
+ """
2139
+ If set, allows onboarding static roles with a rootless connection configuration.
2140
+ """
2141
+ return pulumi.get(self, "self_managed")
2142
+
2129
2143
  @_builtins.property
2130
2144
  @pulumi.getter(name="splitStatements")
2131
2145
  def split_statements(self) -> Optional[_builtins.bool]:
@@ -6676,6 +6690,8 @@ class SecretsMountOracle(dict):
6676
6690
  suggest = "rotation_schedule"
6677
6691
  elif key == "rotationWindow":
6678
6692
  suggest = "rotation_window"
6693
+ elif key == "selfManaged":
6694
+ suggest = "self_managed"
6679
6695
  elif key == "splitStatements":
6680
6696
  suggest = "split_statements"
6681
6697
  elif key == "usernameTemplate":
@@ -6712,6 +6728,7 @@ class SecretsMountOracle(dict):
6712
6728
  rotation_period: Optional[_builtins.int] = None,
6713
6729
  rotation_schedule: Optional[_builtins.str] = None,
6714
6730
  rotation_window: Optional[_builtins.int] = None,
6731
+ self_managed: Optional[_builtins.bool] = None,
6715
6732
  split_statements: Optional[_builtins.bool] = None,
6716
6733
  username: Optional[_builtins.str] = None,
6717
6734
  username_template: Optional[_builtins.str] = None,
@@ -6742,6 +6759,7 @@ class SecretsMountOracle(dict):
6742
6759
  :param _builtins.int rotation_window: The maximum amount of time in seconds allowed to complete
6743
6760
  a rotation when a scheduled token rotation occurs. The default rotation window is
6744
6761
  unbound and the minimum allowable window is `3600`. Requires Vault Enterprise 1.19+.
6762
+ :param _builtins.bool self_managed: If set, allows onboarding static roles with a rootless connection configuration.
6745
6763
  :param _builtins.bool split_statements: Set to true in order to split statements after semi-colons.
6746
6764
  :param _builtins.str username: The root credential username used in the connection URL
6747
6765
  :param _builtins.str username_template: Username generation template.
@@ -6781,6 +6799,8 @@ class SecretsMountOracle(dict):
6781
6799
  pulumi.set(__self__, "rotation_schedule", rotation_schedule)
6782
6800
  if rotation_window is not None:
6783
6801
  pulumi.set(__self__, "rotation_window", rotation_window)
6802
+ if self_managed is not None:
6803
+ pulumi.set(__self__, "self_managed", self_managed)
6784
6804
  if split_statements is not None:
6785
6805
  pulumi.set(__self__, "split_statements", split_statements)
6786
6806
  if username is not None:
@@ -6934,6 +6954,14 @@ class SecretsMountOracle(dict):
6934
6954
  """
6935
6955
  return pulumi.get(self, "rotation_window")
6936
6956
 
6957
+ @_builtins.property
6958
+ @pulumi.getter(name="selfManaged")
6959
+ def self_managed(self) -> Optional[_builtins.bool]:
6960
+ """
6961
+ If set, allows onboarding static roles with a rootless connection configuration.
6962
+ """
6963
+ return pulumi.get(self, "self_managed")
6964
+
6937
6965
  @_builtins.property
6938
6966
  @pulumi.getter(name="splitStatements")
6939
6967
  def split_statements(self) -> Optional[_builtins.bool]:
@@ -1077,6 +1077,8 @@ class SecretBackendConnection(pulumi.CustomResource):
1077
1077
  """
1078
1078
  ## Example Usage
1079
1079
 
1080
+ ### PostgreSQL Connection
1081
+
1080
1082
  ```python
1081
1083
  import pulumi
1082
1084
  import pulumi_vault as vault
@@ -1098,6 +1100,37 @@ class SecretBackendConnection(pulumi.CustomResource):
1098
1100
  })
1099
1101
  ```
1100
1102
 
1103
+ ### Oracle Connection with Self-Managed Mode (Rootless)
1104
+
1105
+ For Vault 1.18+ Enterprise, you can configure Oracle connections in self-managed mode,
1106
+ which allows a static role to manage its own database credentials without requiring root access:
1107
+
1108
+ ```python
1109
+ import pulumi
1110
+ import pulumi_vault as vault
1111
+
1112
+ db = vault.Mount("db",
1113
+ path="database",
1114
+ type="database")
1115
+ oracle = vault.database.SecretBackendConnection("oracle",
1116
+ backend=db.path,
1117
+ name="oracle",
1118
+ allowed_roles=["my-role"],
1119
+ oracle={
1120
+ "connection_url": "{{username}}/{{password}}@//host:port/service",
1121
+ "self_managed": True,
1122
+ "plugin_name": "vault-plugin-database-oracle",
1123
+ })
1124
+ oracle_role = vault.database.SecretBackendStaticRole("oracle_role",
1125
+ backend=db.path,
1126
+ name="my-role",
1127
+ db_name=oracle.name,
1128
+ username="vault_user",
1129
+ password_wo="initial-password",
1130
+ password_wo_version=1,
1131
+ rotation_period=3600)
1132
+ ```
1133
+
1101
1134
  ## Ephemeral Attributes Reference
1102
1135
 
1103
1136
  The following write-only attributes are supported for all DBs that support username/password:
@@ -1171,6 +1204,8 @@ class SecretBackendConnection(pulumi.CustomResource):
1171
1204
  """
1172
1205
  ## Example Usage
1173
1206
 
1207
+ ### PostgreSQL Connection
1208
+
1174
1209
  ```python
1175
1210
  import pulumi
1176
1211
  import pulumi_vault as vault
@@ -1192,6 +1227,37 @@ class SecretBackendConnection(pulumi.CustomResource):
1192
1227
  })
1193
1228
  ```
1194
1229
 
1230
+ ### Oracle Connection with Self-Managed Mode (Rootless)
1231
+
1232
+ For Vault 1.18+ Enterprise, you can configure Oracle connections in self-managed mode,
1233
+ which allows a static role to manage its own database credentials without requiring root access:
1234
+
1235
+ ```python
1236
+ import pulumi
1237
+ import pulumi_vault as vault
1238
+
1239
+ db = vault.Mount("db",
1240
+ path="database",
1241
+ type="database")
1242
+ oracle = vault.database.SecretBackendConnection("oracle",
1243
+ backend=db.path,
1244
+ name="oracle",
1245
+ allowed_roles=["my-role"],
1246
+ oracle={
1247
+ "connection_url": "{{username}}/{{password}}@//host:port/service",
1248
+ "self_managed": True,
1249
+ "plugin_name": "vault-plugin-database-oracle",
1250
+ })
1251
+ oracle_role = vault.database.SecretBackendStaticRole("oracle_role",
1252
+ backend=db.path,
1253
+ name="my-role",
1254
+ db_name=oracle.name,
1255
+ username="vault_user",
1256
+ password_wo="initial-password",
1257
+ password_wo_version=1,
1258
+ rotation_period=3600)
1259
+ ```
1260
+
1195
1261
  ## Ephemeral Attributes Reference
1196
1262
 
1197
1263
  The following write-only attributes are supported for all DBs that support username/password:
@@ -26,6 +26,8 @@ class SecretBackendStaticRoleArgs:
26
26
  credential_type: Optional[pulumi.Input[_builtins.str]] = None,
27
27
  name: Optional[pulumi.Input[_builtins.str]] = None,
28
28
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
29
+ password_wo: Optional[pulumi.Input[_builtins.str]] = None,
30
+ password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
29
31
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
30
32
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
31
33
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
@@ -43,6 +45,13 @@ class SecretBackendStaticRoleArgs:
43
45
  The value should not contain leading or trailing forward slashes.
44
46
  The `namespace` is always relative to the provider's configured namespace.
45
47
  *Available only for Vault Enterprise*.
48
+ :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
49
+ The password corresponding to the username in the database.
50
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
51
+ Cannot be used with `self_managed_password`.
52
+ :param pulumi.Input[_builtins.int] password_wo_version: The version of the `password_wo` field.
53
+ Used for tracking changes to the write-only password field. For more info see
54
+ updating write-only attributes.
46
55
  :param pulumi.Input[_builtins.int] rotation_period: The amount of time Vault should wait before rotating the password, in seconds.
47
56
  Mutually exclusive with `rotation_schedule`.
48
57
  :param pulumi.Input[_builtins.str] rotation_schedule: A cron-style string that will define the schedule on which rotations should occur.
@@ -56,6 +65,7 @@ class SecretBackendStaticRoleArgs:
56
65
  :param pulumi.Input[_builtins.str] self_managed_password: The password corresponding to the username in the database.
57
66
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
58
67
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
68
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
59
69
  :param pulumi.Input[_builtins.bool] skip_import_rotation: If set to true, Vault will skip the
60
70
  initial secret rotation on import. Requires Vault 1.18+ Enterprise.
61
71
  """
@@ -70,6 +80,10 @@ class SecretBackendStaticRoleArgs:
70
80
  pulumi.set(__self__, "name", name)
71
81
  if namespace is not None:
72
82
  pulumi.set(__self__, "namespace", namespace)
83
+ if password_wo is not None:
84
+ pulumi.set(__self__, "password_wo", password_wo)
85
+ if password_wo_version is not None:
86
+ pulumi.set(__self__, "password_wo_version", password_wo_version)
73
87
  if rotation_period is not None:
74
88
  pulumi.set(__self__, "rotation_period", rotation_period)
75
89
  if rotation_schedule is not None:
@@ -167,6 +181,35 @@ class SecretBackendStaticRoleArgs:
167
181
  def namespace(self, value: Optional[pulumi.Input[_builtins.str]]):
168
182
  pulumi.set(self, "namespace", value)
169
183
 
184
+ @_builtins.property
185
+ @pulumi.getter(name="passwordWo")
186
+ def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
187
+ """
188
+ **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
189
+ The password corresponding to the username in the database.
190
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
191
+ Cannot be used with `self_managed_password`.
192
+ """
193
+ return pulumi.get(self, "password_wo")
194
+
195
+ @password_wo.setter
196
+ def password_wo(self, value: Optional[pulumi.Input[_builtins.str]]):
197
+ pulumi.set(self, "password_wo", value)
198
+
199
+ @_builtins.property
200
+ @pulumi.getter(name="passwordWoVersion")
201
+ def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
202
+ """
203
+ The version of the `password_wo` field.
204
+ Used for tracking changes to the write-only password field. For more info see
205
+ updating write-only attributes.
206
+ """
207
+ return pulumi.get(self, "password_wo_version")
208
+
209
+ @password_wo_version.setter
210
+ def password_wo_version(self, value: Optional[pulumi.Input[_builtins.int]]):
211
+ pulumi.set(self, "password_wo_version", value)
212
+
170
213
  @_builtins.property
171
214
  @pulumi.getter(name="rotationPeriod")
172
215
  def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
@@ -228,6 +271,7 @@ class SecretBackendStaticRoleArgs:
228
271
  The password corresponding to the username in the database.
229
272
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
230
273
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
274
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
231
275
  """
232
276
  return pulumi.get(self, "self_managed_password")
233
277
 
@@ -258,6 +302,8 @@ class _SecretBackendStaticRoleState:
258
302
  db_name: Optional[pulumi.Input[_builtins.str]] = None,
259
303
  name: Optional[pulumi.Input[_builtins.str]] = None,
260
304
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
305
+ password_wo: Optional[pulumi.Input[_builtins.str]] = None,
306
+ password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
261
307
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
262
308
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
263
309
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
@@ -275,6 +321,13 @@ class _SecretBackendStaticRoleState:
275
321
  The value should not contain leading or trailing forward slashes.
276
322
  The `namespace` is always relative to the provider's configured namespace.
277
323
  *Available only for Vault Enterprise*.
324
+ :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
325
+ The password corresponding to the username in the database.
326
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
327
+ Cannot be used with `self_managed_password`.
328
+ :param pulumi.Input[_builtins.int] password_wo_version: The version of the `password_wo` field.
329
+ Used for tracking changes to the write-only password field. For more info see
330
+ updating write-only attributes.
278
331
  :param pulumi.Input[_builtins.int] rotation_period: The amount of time Vault should wait before rotating the password, in seconds.
279
332
  Mutually exclusive with `rotation_schedule`.
280
333
  :param pulumi.Input[_builtins.str] rotation_schedule: A cron-style string that will define the schedule on which rotations should occur.
@@ -288,6 +341,7 @@ class _SecretBackendStaticRoleState:
288
341
  :param pulumi.Input[_builtins.str] self_managed_password: The password corresponding to the username in the database.
289
342
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
290
343
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
344
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
291
345
  :param pulumi.Input[_builtins.bool] skip_import_rotation: If set to true, Vault will skip the
292
346
  initial secret rotation on import. Requires Vault 1.18+ Enterprise.
293
347
  :param pulumi.Input[_builtins.str] username: The database username that this static role corresponds to.
@@ -304,6 +358,10 @@ class _SecretBackendStaticRoleState:
304
358
  pulumi.set(__self__, "name", name)
305
359
  if namespace is not None:
306
360
  pulumi.set(__self__, "namespace", namespace)
361
+ if password_wo is not None:
362
+ pulumi.set(__self__, "password_wo", password_wo)
363
+ if password_wo_version is not None:
364
+ pulumi.set(__self__, "password_wo_version", password_wo_version)
307
365
  if rotation_period is not None:
308
366
  pulumi.set(__self__, "rotation_period", rotation_period)
309
367
  if rotation_schedule is not None:
@@ -391,6 +449,35 @@ class _SecretBackendStaticRoleState:
391
449
  def namespace(self, value: Optional[pulumi.Input[_builtins.str]]):
392
450
  pulumi.set(self, "namespace", value)
393
451
 
452
+ @_builtins.property
453
+ @pulumi.getter(name="passwordWo")
454
+ def password_wo(self) -> Optional[pulumi.Input[_builtins.str]]:
455
+ """
456
+ **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
457
+ The password corresponding to the username in the database.
458
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
459
+ Cannot be used with `self_managed_password`.
460
+ """
461
+ return pulumi.get(self, "password_wo")
462
+
463
+ @password_wo.setter
464
+ def password_wo(self, value: Optional[pulumi.Input[_builtins.str]]):
465
+ pulumi.set(self, "password_wo", value)
466
+
467
+ @_builtins.property
468
+ @pulumi.getter(name="passwordWoVersion")
469
+ def password_wo_version(self) -> Optional[pulumi.Input[_builtins.int]]:
470
+ """
471
+ The version of the `password_wo` field.
472
+ Used for tracking changes to the write-only password field. For more info see
473
+ updating write-only attributes.
474
+ """
475
+ return pulumi.get(self, "password_wo_version")
476
+
477
+ @password_wo_version.setter
478
+ def password_wo_version(self, value: Optional[pulumi.Input[_builtins.int]]):
479
+ pulumi.set(self, "password_wo_version", value)
480
+
394
481
  @_builtins.property
395
482
  @pulumi.getter(name="rotationPeriod")
396
483
  def rotation_period(self) -> Optional[pulumi.Input[_builtins.int]]:
@@ -452,6 +539,7 @@ class _SecretBackendStaticRoleState:
452
539
  The password corresponding to the username in the database.
453
540
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
454
541
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
542
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
455
543
  """
456
544
  return pulumi.get(self, "self_managed_password")
457
545
 
@@ -497,6 +585,8 @@ class SecretBackendStaticRole(pulumi.CustomResource):
497
585
  db_name: Optional[pulumi.Input[_builtins.str]] = None,
498
586
  name: Optional[pulumi.Input[_builtins.str]] = None,
499
587
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
588
+ password_wo: Optional[pulumi.Input[_builtins.str]] = None,
589
+ password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
500
590
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
501
591
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
502
592
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
@@ -543,6 +633,16 @@ class SecretBackendStaticRole(pulumi.CustomResource):
543
633
  rotation_schedule="0 0 * * SAT",
544
634
  rotation_window=172800,
545
635
  rotation_statements=["ALTER USER \\"{{name}}\\" WITH PASSWORD '{{password}}';"])
636
+ # configure a static role with a password (Vault 1.19+)
637
+ password_role = vault.database.SecretBackendStaticRole("password_role",
638
+ backend=db.path,
639
+ name="my-password-role",
640
+ db_name=postgres.name,
641
+ username="example",
642
+ password_wo="my-password",
643
+ password_wo_version=1,
644
+ rotation_period=3600,
645
+ rotation_statements=["ALTER USER \\"{{name}}\\" WITH PASSWORD '{{password}}';"])
546
646
  ```
547
647
 
548
648
  ## Import
@@ -563,6 +663,13 @@ class SecretBackendStaticRole(pulumi.CustomResource):
563
663
  The value should not contain leading or trailing forward slashes.
564
664
  The `namespace` is always relative to the provider's configured namespace.
565
665
  *Available only for Vault Enterprise*.
666
+ :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
667
+ The password corresponding to the username in the database.
668
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
669
+ Cannot be used with `self_managed_password`.
670
+ :param pulumi.Input[_builtins.int] password_wo_version: The version of the `password_wo` field.
671
+ Used for tracking changes to the write-only password field. For more info see
672
+ updating write-only attributes.
566
673
  :param pulumi.Input[_builtins.int] rotation_period: The amount of time Vault should wait before rotating the password, in seconds.
567
674
  Mutually exclusive with `rotation_schedule`.
568
675
  :param pulumi.Input[_builtins.str] rotation_schedule: A cron-style string that will define the schedule on which rotations should occur.
@@ -576,6 +683,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
576
683
  :param pulumi.Input[_builtins.str] self_managed_password: The password corresponding to the username in the database.
577
684
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
578
685
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
686
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
579
687
  :param pulumi.Input[_builtins.bool] skip_import_rotation: If set to true, Vault will skip the
580
688
  initial secret rotation on import. Requires Vault 1.18+ Enterprise.
581
689
  :param pulumi.Input[_builtins.str] username: The database username that this static role corresponds to.
@@ -624,6 +732,16 @@ class SecretBackendStaticRole(pulumi.CustomResource):
624
732
  rotation_schedule="0 0 * * SAT",
625
733
  rotation_window=172800,
626
734
  rotation_statements=["ALTER USER \\"{{name}}\\" WITH PASSWORD '{{password}}';"])
735
+ # configure a static role with a password (Vault 1.19+)
736
+ password_role = vault.database.SecretBackendStaticRole("password_role",
737
+ backend=db.path,
738
+ name="my-password-role",
739
+ db_name=postgres.name,
740
+ username="example",
741
+ password_wo="my-password",
742
+ password_wo_version=1,
743
+ rotation_period=3600,
744
+ rotation_statements=["ALTER USER \\"{{name}}\\" WITH PASSWORD '{{password}}';"])
627
745
  ```
628
746
 
629
747
  ## Import
@@ -655,6 +773,8 @@ class SecretBackendStaticRole(pulumi.CustomResource):
655
773
  db_name: Optional[pulumi.Input[_builtins.str]] = None,
656
774
  name: Optional[pulumi.Input[_builtins.str]] = None,
657
775
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
776
+ password_wo: Optional[pulumi.Input[_builtins.str]] = None,
777
+ password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
658
778
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
659
779
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
660
780
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
@@ -681,6 +801,8 @@ class SecretBackendStaticRole(pulumi.CustomResource):
681
801
  __props__.__dict__["db_name"] = db_name
682
802
  __props__.__dict__["name"] = name
683
803
  __props__.__dict__["namespace"] = namespace
804
+ __props__.__dict__["password_wo"] = None if password_wo is None else pulumi.Output.secret(password_wo)
805
+ __props__.__dict__["password_wo_version"] = password_wo_version
684
806
  __props__.__dict__["rotation_period"] = rotation_period
685
807
  __props__.__dict__["rotation_schedule"] = rotation_schedule
686
808
  __props__.__dict__["rotation_statements"] = rotation_statements
@@ -690,7 +812,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
690
812
  if username is None and not opts.urn:
691
813
  raise TypeError("Missing required property 'username'")
692
814
  __props__.__dict__["username"] = username
693
- secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["selfManagedPassword"])
815
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["passwordWo", "selfManagedPassword"])
694
816
  opts = pulumi.ResourceOptions.merge(opts, secret_opts)
695
817
  super(SecretBackendStaticRole, __self__).__init__(
696
818
  'vault:database/secretBackendStaticRole:SecretBackendStaticRole',
@@ -708,6 +830,8 @@ class SecretBackendStaticRole(pulumi.CustomResource):
708
830
  db_name: Optional[pulumi.Input[_builtins.str]] = None,
709
831
  name: Optional[pulumi.Input[_builtins.str]] = None,
710
832
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
833
+ password_wo: Optional[pulumi.Input[_builtins.str]] = None,
834
+ password_wo_version: Optional[pulumi.Input[_builtins.int]] = None,
711
835
  rotation_period: Optional[pulumi.Input[_builtins.int]] = None,
712
836
  rotation_schedule: Optional[pulumi.Input[_builtins.str]] = None,
713
837
  rotation_statements: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
@@ -730,6 +854,13 @@ class SecretBackendStaticRole(pulumi.CustomResource):
730
854
  The value should not contain leading or trailing forward slashes.
731
855
  The `namespace` is always relative to the provider's configured namespace.
732
856
  *Available only for Vault Enterprise*.
857
+ :param pulumi.Input[_builtins.str] password_wo: **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
858
+ The password corresponding to the username in the database.
859
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
860
+ Cannot be used with `self_managed_password`.
861
+ :param pulumi.Input[_builtins.int] password_wo_version: The version of the `password_wo` field.
862
+ Used for tracking changes to the write-only password field. For more info see
863
+ updating write-only attributes.
733
864
  :param pulumi.Input[_builtins.int] rotation_period: The amount of time Vault should wait before rotating the password, in seconds.
734
865
  Mutually exclusive with `rotation_schedule`.
735
866
  :param pulumi.Input[_builtins.str] rotation_schedule: A cron-style string that will define the schedule on which rotations should occur.
@@ -743,6 +874,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
743
874
  :param pulumi.Input[_builtins.str] self_managed_password: The password corresponding to the username in the database.
744
875
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
745
876
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
877
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
746
878
  :param pulumi.Input[_builtins.bool] skip_import_rotation: If set to true, Vault will skip the
747
879
  initial secret rotation on import. Requires Vault 1.18+ Enterprise.
748
880
  :param pulumi.Input[_builtins.str] username: The database username that this static role corresponds to.
@@ -757,6 +889,8 @@ class SecretBackendStaticRole(pulumi.CustomResource):
757
889
  __props__.__dict__["db_name"] = db_name
758
890
  __props__.__dict__["name"] = name
759
891
  __props__.__dict__["namespace"] = namespace
892
+ __props__.__dict__["password_wo"] = password_wo
893
+ __props__.__dict__["password_wo_version"] = password_wo_version
760
894
  __props__.__dict__["rotation_period"] = rotation_period
761
895
  __props__.__dict__["rotation_schedule"] = rotation_schedule
762
896
  __props__.__dict__["rotation_statements"] = rotation_statements
@@ -814,6 +948,27 @@ class SecretBackendStaticRole(pulumi.CustomResource):
814
948
  """
815
949
  return pulumi.get(self, "namespace")
816
950
 
951
+ @_builtins.property
952
+ @pulumi.getter(name="passwordWo")
953
+ def password_wo(self) -> pulumi.Output[Optional[_builtins.str]]:
954
+ """
955
+ **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
956
+ The password corresponding to the username in the database.
957
+ This is a write-only field. Requires Vault 1.19+. Deprecates `self_managed_password` which was introduced in Vault 1.18.
958
+ Cannot be used with `self_managed_password`.
959
+ """
960
+ return pulumi.get(self, "password_wo")
961
+
962
+ @_builtins.property
963
+ @pulumi.getter(name="passwordWoVersion")
964
+ def password_wo_version(self) -> pulumi.Output[Optional[_builtins.int]]:
965
+ """
966
+ The version of the `password_wo` field.
967
+ Used for tracking changes to the write-only password field. For more info see
968
+ updating write-only attributes.
969
+ """
970
+ return pulumi.get(self, "password_wo_version")
971
+
817
972
  @_builtins.property
818
973
  @pulumi.getter(name="rotationPeriod")
819
974
  def rotation_period(self) -> pulumi.Output[Optional[_builtins.int]]:
@@ -859,6 +1014,7 @@ class SecretBackendStaticRole(pulumi.CustomResource):
859
1014
  The password corresponding to the username in the database.
860
1015
  Required when using the Rootless Password Rotation workflow for static roles. Only enabled for
861
1016
  select DB engines (Postgres). Requires Vault 1.18+ Enterprise.
1017
+ **Deprecated**: Use `password_wo` instead. This field will be removed in a future version.
862
1018
  """
863
1019
  return pulumi.get(self, "self_managed_password")
864
1020
 
@@ -20,12 +20,13 @@ __all__ = ['AuthBackendRoleArgs', 'AuthBackendRole']
20
20
  class AuthBackendRoleArgs:
21
21
  def __init__(__self__, *,
22
22
  bound_service_account_names: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
23
- bound_service_account_namespaces: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
24
23
  role_name: pulumi.Input[_builtins.str],
25
24
  alias_metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
26
25
  alias_name_source: Optional[pulumi.Input[_builtins.str]] = None,
27
26
  audience: Optional[pulumi.Input[_builtins.str]] = None,
28
27
  backend: Optional[pulumi.Input[_builtins.str]] = None,
28
+ bound_service_account_namespace_selector: Optional[pulumi.Input[_builtins.str]] = None,
29
+ bound_service_account_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
29
30
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
30
31
  token_bound_cidrs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
31
32
  token_explicit_max_ttl: Optional[pulumi.Input[_builtins.int]] = None,
@@ -39,7 +40,6 @@ class AuthBackendRoleArgs:
39
40
  """
40
41
  The set of arguments for constructing a AuthBackendRole resource.
41
42
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_names: List of service account names able to access this role. If set to `["*"]` all names are allowed, both this and bound_service_account_namespaces can not be "*".
42
- :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_namespaces: List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
43
43
  :param pulumi.Input[_builtins.str] role_name: Name of the role.
44
44
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] alias_metadata: The metadata to be tied to generated entity alias.
45
45
  This should be a list or map containing the metadata in key value pairs.
@@ -51,6 +51,8 @@ class AuthBackendRoleArgs:
51
51
  before setting this to something other its default value. There are **important** security
52
52
  implications to be aware of.
53
53
  :param pulumi.Input[_builtins.str] backend: Unique name of the kubernetes backend to configure.
54
+ :param pulumi.Input[_builtins.str] bound_service_account_namespace_selector: A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
55
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_namespaces: List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
54
56
  :param pulumi.Input[_builtins.str] namespace: The namespace to provision the resource in.
55
57
  The value should not contain leading or trailing forward slashes.
56
58
  The `namespace` is always relative to the provider's configured [namespace](https://www.terraform.io/docs/providers/vault/index.html#namespace).
@@ -66,7 +68,6 @@ class AuthBackendRoleArgs:
66
68
  :param pulumi.Input[_builtins.str] token_type: The type of token to generate, service or batch
67
69
  """
68
70
  pulumi.set(__self__, "bound_service_account_names", bound_service_account_names)
69
- pulumi.set(__self__, "bound_service_account_namespaces", bound_service_account_namespaces)
70
71
  pulumi.set(__self__, "role_name", role_name)
71
72
  if alias_metadata is not None:
72
73
  pulumi.set(__self__, "alias_metadata", alias_metadata)
@@ -76,6 +77,10 @@ class AuthBackendRoleArgs:
76
77
  pulumi.set(__self__, "audience", audience)
77
78
  if backend is not None:
78
79
  pulumi.set(__self__, "backend", backend)
80
+ if bound_service_account_namespace_selector is not None:
81
+ pulumi.set(__self__, "bound_service_account_namespace_selector", bound_service_account_namespace_selector)
82
+ if bound_service_account_namespaces is not None:
83
+ pulumi.set(__self__, "bound_service_account_namespaces", bound_service_account_namespaces)
79
84
  if namespace is not None:
80
85
  pulumi.set(__self__, "namespace", namespace)
81
86
  if token_bound_cidrs is not None:
@@ -109,18 +114,6 @@ class AuthBackendRoleArgs:
109
114
  def bound_service_account_names(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
110
115
  pulumi.set(self, "bound_service_account_names", value)
111
116
 
112
- @_builtins.property
113
- @pulumi.getter(name="boundServiceAccountNamespaces")
114
- def bound_service_account_namespaces(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
115
- """
116
- List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
117
- """
118
- return pulumi.get(self, "bound_service_account_namespaces")
119
-
120
- @bound_service_account_namespaces.setter
121
- def bound_service_account_namespaces(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
122
- pulumi.set(self, "bound_service_account_namespaces", value)
123
-
124
117
  @_builtins.property
125
118
  @pulumi.getter(name="roleName")
126
119
  def role_name(self) -> pulumi.Input[_builtins.str]:
@@ -187,6 +180,30 @@ class AuthBackendRoleArgs:
187
180
  def backend(self, value: Optional[pulumi.Input[_builtins.str]]):
188
181
  pulumi.set(self, "backend", value)
189
182
 
183
+ @_builtins.property
184
+ @pulumi.getter(name="boundServiceAccountNamespaceSelector")
185
+ def bound_service_account_namespace_selector(self) -> Optional[pulumi.Input[_builtins.str]]:
186
+ """
187
+ A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
188
+ """
189
+ return pulumi.get(self, "bound_service_account_namespace_selector")
190
+
191
+ @bound_service_account_namespace_selector.setter
192
+ def bound_service_account_namespace_selector(self, value: Optional[pulumi.Input[_builtins.str]]):
193
+ pulumi.set(self, "bound_service_account_namespace_selector", value)
194
+
195
+ @_builtins.property
196
+ @pulumi.getter(name="boundServiceAccountNamespaces")
197
+ def bound_service_account_namespaces(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
198
+ """
199
+ List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
200
+ """
201
+ return pulumi.get(self, "bound_service_account_namespaces")
202
+
203
+ @bound_service_account_namespaces.setter
204
+ def bound_service_account_namespaces(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
205
+ pulumi.set(self, "bound_service_account_namespaces", value)
206
+
190
207
  @_builtins.property
191
208
  @pulumi.getter
192
209
  def namespace(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -319,6 +336,7 @@ class _AuthBackendRoleState:
319
336
  audience: Optional[pulumi.Input[_builtins.str]] = None,
320
337
  backend: Optional[pulumi.Input[_builtins.str]] = None,
321
338
  bound_service_account_names: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
339
+ bound_service_account_namespace_selector: Optional[pulumi.Input[_builtins.str]] = None,
322
340
  bound_service_account_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
323
341
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
324
342
  role_name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -344,6 +362,7 @@ class _AuthBackendRoleState:
344
362
  implications to be aware of.
345
363
  :param pulumi.Input[_builtins.str] backend: Unique name of the kubernetes backend to configure.
346
364
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_names: List of service account names able to access this role. If set to `["*"]` all names are allowed, both this and bound_service_account_namespaces can not be "*".
365
+ :param pulumi.Input[_builtins.str] bound_service_account_namespace_selector: A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
347
366
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_namespaces: List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
348
367
  :param pulumi.Input[_builtins.str] namespace: The namespace to provision the resource in.
349
368
  The value should not contain leading or trailing forward slashes.
@@ -370,6 +389,8 @@ class _AuthBackendRoleState:
370
389
  pulumi.set(__self__, "backend", backend)
371
390
  if bound_service_account_names is not None:
372
391
  pulumi.set(__self__, "bound_service_account_names", bound_service_account_names)
392
+ if bound_service_account_namespace_selector is not None:
393
+ pulumi.set(__self__, "bound_service_account_namespace_selector", bound_service_account_namespace_selector)
373
394
  if bound_service_account_namespaces is not None:
374
395
  pulumi.set(__self__, "bound_service_account_namespaces", bound_service_account_namespaces)
375
396
  if namespace is not None:
@@ -461,6 +482,18 @@ class _AuthBackendRoleState:
461
482
  def bound_service_account_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
462
483
  pulumi.set(self, "bound_service_account_names", value)
463
484
 
485
+ @_builtins.property
486
+ @pulumi.getter(name="boundServiceAccountNamespaceSelector")
487
+ def bound_service_account_namespace_selector(self) -> Optional[pulumi.Input[_builtins.str]]:
488
+ """
489
+ A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
490
+ """
491
+ return pulumi.get(self, "bound_service_account_namespace_selector")
492
+
493
+ @bound_service_account_namespace_selector.setter
494
+ def bound_service_account_namespace_selector(self, value: Optional[pulumi.Input[_builtins.str]]):
495
+ pulumi.set(self, "bound_service_account_namespace_selector", value)
496
+
464
497
  @_builtins.property
465
498
  @pulumi.getter(name="boundServiceAccountNamespaces")
466
499
  def bound_service_account_namespaces(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
@@ -620,6 +653,7 @@ class AuthBackendRole(pulumi.CustomResource):
620
653
  audience: Optional[pulumi.Input[_builtins.str]] = None,
621
654
  backend: Optional[pulumi.Input[_builtins.str]] = None,
622
655
  bound_service_account_names: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
656
+ bound_service_account_namespace_selector: Optional[pulumi.Input[_builtins.str]] = None,
623
657
  bound_service_account_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
624
658
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
625
659
  role_name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -680,6 +714,7 @@ class AuthBackendRole(pulumi.CustomResource):
680
714
  implications to be aware of.
681
715
  :param pulumi.Input[_builtins.str] backend: Unique name of the kubernetes backend to configure.
682
716
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_names: List of service account names able to access this role. If set to `["*"]` all names are allowed, both this and bound_service_account_namespaces can not be "*".
717
+ :param pulumi.Input[_builtins.str] bound_service_account_namespace_selector: A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
683
718
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_namespaces: List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
684
719
  :param pulumi.Input[_builtins.str] namespace: The namespace to provision the resource in.
685
720
  The value should not contain leading or trailing forward slashes.
@@ -756,6 +791,7 @@ class AuthBackendRole(pulumi.CustomResource):
756
791
  audience: Optional[pulumi.Input[_builtins.str]] = None,
757
792
  backend: Optional[pulumi.Input[_builtins.str]] = None,
758
793
  bound_service_account_names: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
794
+ bound_service_account_namespace_selector: Optional[pulumi.Input[_builtins.str]] = None,
759
795
  bound_service_account_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
760
796
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
761
797
  role_name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -784,8 +820,7 @@ class AuthBackendRole(pulumi.CustomResource):
784
820
  if bound_service_account_names is None and not opts.urn:
785
821
  raise TypeError("Missing required property 'bound_service_account_names'")
786
822
  __props__.__dict__["bound_service_account_names"] = bound_service_account_names
787
- if bound_service_account_namespaces is None and not opts.urn:
788
- raise TypeError("Missing required property 'bound_service_account_namespaces'")
823
+ __props__.__dict__["bound_service_account_namespace_selector"] = bound_service_account_namespace_selector
789
824
  __props__.__dict__["bound_service_account_namespaces"] = bound_service_account_namespaces
790
825
  __props__.__dict__["namespace"] = namespace
791
826
  if role_name is None and not opts.urn:
@@ -815,6 +850,7 @@ class AuthBackendRole(pulumi.CustomResource):
815
850
  audience: Optional[pulumi.Input[_builtins.str]] = None,
816
851
  backend: Optional[pulumi.Input[_builtins.str]] = None,
817
852
  bound_service_account_names: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
853
+ bound_service_account_namespace_selector: Optional[pulumi.Input[_builtins.str]] = None,
818
854
  bound_service_account_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
819
855
  namespace: Optional[pulumi.Input[_builtins.str]] = None,
820
856
  role_name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -845,6 +881,7 @@ class AuthBackendRole(pulumi.CustomResource):
845
881
  implications to be aware of.
846
882
  :param pulumi.Input[_builtins.str] backend: Unique name of the kubernetes backend to configure.
847
883
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_names: List of service account names able to access this role. If set to `["*"]` all names are allowed, both this and bound_service_account_namespaces can not be "*".
884
+ :param pulumi.Input[_builtins.str] bound_service_account_namespace_selector: A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
848
885
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] bound_service_account_namespaces: List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
849
886
  :param pulumi.Input[_builtins.str] namespace: The namespace to provision the resource in.
850
887
  The value should not contain leading or trailing forward slashes.
@@ -870,6 +907,7 @@ class AuthBackendRole(pulumi.CustomResource):
870
907
  __props__.__dict__["audience"] = audience
871
908
  __props__.__dict__["backend"] = backend
872
909
  __props__.__dict__["bound_service_account_names"] = bound_service_account_names
910
+ __props__.__dict__["bound_service_account_namespace_selector"] = bound_service_account_namespace_selector
873
911
  __props__.__dict__["bound_service_account_namespaces"] = bound_service_account_namespaces
874
912
  __props__.__dict__["namespace"] = namespace
875
913
  __props__.__dict__["role_name"] = role_name
@@ -930,9 +968,17 @@ class AuthBackendRole(pulumi.CustomResource):
930
968
  """
931
969
  return pulumi.get(self, "bound_service_account_names")
932
970
 
971
+ @_builtins.property
972
+ @pulumi.getter(name="boundServiceAccountNamespaceSelector")
973
+ def bound_service_account_namespace_selector(self) -> pulumi.Output[Optional[_builtins.str]]:
974
+ """
975
+ A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
976
+ """
977
+ return pulumi.get(self, "bound_service_account_namespace_selector")
978
+
933
979
  @_builtins.property
934
980
  @pulumi.getter(name="boundServiceAccountNamespaces")
935
- def bound_service_account_namespaces(self) -> pulumi.Output[Sequence[_builtins.str]]:
981
+ def bound_service_account_namespaces(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
936
982
  """
937
983
  List of namespaces allowed to access this role. If set to `["*"]` all namespaces are allowed, both this and bound_service_account_names can not be set to "*".
938
984
  """
@@ -26,7 +26,7 @@ class GetAuthBackendRoleResult:
26
26
  """
27
27
  A collection of values returned by getAuthBackendRole.
28
28
  """
29
- def __init__(__self__, alias_metadata=None, alias_name_source=None, audience=None, backend=None, bound_service_account_names=None, bound_service_account_namespaces=None, id=None, namespace=None, role_name=None, token_bound_cidrs=None, token_explicit_max_ttl=None, token_max_ttl=None, token_no_default_policy=None, token_num_uses=None, token_period=None, token_policies=None, token_ttl=None, token_type=None):
29
+ def __init__(__self__, alias_metadata=None, alias_name_source=None, audience=None, backend=None, bound_service_account_names=None, bound_service_account_namespace_selector=None, bound_service_account_namespaces=None, id=None, namespace=None, role_name=None, token_bound_cidrs=None, token_explicit_max_ttl=None, token_max_ttl=None, token_no_default_policy=None, token_num_uses=None, token_period=None, token_policies=None, token_ttl=None, token_type=None):
30
30
  if alias_metadata and not isinstance(alias_metadata, dict):
31
31
  raise TypeError("Expected argument 'alias_metadata' to be a dict")
32
32
  pulumi.set(__self__, "alias_metadata", alias_metadata)
@@ -42,6 +42,9 @@ class GetAuthBackendRoleResult:
42
42
  if bound_service_account_names and not isinstance(bound_service_account_names, list):
43
43
  raise TypeError("Expected argument 'bound_service_account_names' to be a list")
44
44
  pulumi.set(__self__, "bound_service_account_names", bound_service_account_names)
45
+ if bound_service_account_namespace_selector and not isinstance(bound_service_account_namespace_selector, str):
46
+ raise TypeError("Expected argument 'bound_service_account_namespace_selector' to be a str")
47
+ pulumi.set(__self__, "bound_service_account_namespace_selector", bound_service_account_namespace_selector)
45
48
  if bound_service_account_namespaces and not isinstance(bound_service_account_namespaces, list):
46
49
  raise TypeError("Expected argument 'bound_service_account_namespaces' to be a list")
47
50
  pulumi.set(__self__, "bound_service_account_namespaces", bound_service_account_namespaces)
@@ -116,6 +119,14 @@ class GetAuthBackendRoleResult:
116
119
  """
117
120
  return pulumi.get(self, "bound_service_account_names")
118
121
 
122
+ @_builtins.property
123
+ @pulumi.getter(name="boundServiceAccountNamespaceSelector")
124
+ def bound_service_account_namespace_selector(self) -> _builtins.str:
125
+ """
126
+ A label selector for Kubernetes namespaces allowed to access this role. Accepts either a JSON or YAML object. The value should be of type LabelSelector. Currently, label selectors with matchExpressions are not supported. To use label selectors, Vault must have permission to read namespaces on the Kubernetes cluster. If set with bound_service_account_namespaces, the conditions are ORed. Requires Vault v1.16+.
127
+ """
128
+ return pulumi.get(self, "bound_service_account_namespace_selector")
129
+
119
130
  @_builtins.property
120
131
  @pulumi.getter(name="boundServiceAccountNamespaces")
121
132
  def bound_service_account_namespaces(self) -> Sequence[_builtins.str]:
@@ -244,6 +255,7 @@ class AwaitableGetAuthBackendRoleResult(GetAuthBackendRoleResult):
244
255
  audience=self.audience,
245
256
  backend=self.backend,
246
257
  bound_service_account_names=self.bound_service_account_names,
258
+ bound_service_account_namespace_selector=self.bound_service_account_namespace_selector,
247
259
  bound_service_account_namespaces=self.bound_service_account_namespaces,
248
260
  id=self.id,
249
261
  namespace=self.namespace,
@@ -351,6 +363,7 @@ def get_auth_backend_role(alias_metadata: Optional[Mapping[str, _builtins.str]]
351
363
  audience=pulumi.get(__ret__, 'audience'),
352
364
  backend=pulumi.get(__ret__, 'backend'),
353
365
  bound_service_account_names=pulumi.get(__ret__, 'bound_service_account_names'),
366
+ bound_service_account_namespace_selector=pulumi.get(__ret__, 'bound_service_account_namespace_selector'),
354
367
  bound_service_account_namespaces=pulumi.get(__ret__, 'bound_service_account_namespaces'),
355
368
  id=pulumi.get(__ret__, 'id'),
356
369
  namespace=pulumi.get(__ret__, 'namespace'),
@@ -455,6 +468,7 @@ def get_auth_backend_role_output(alias_metadata: Optional[pulumi.Input[Optional[
455
468
  audience=pulumi.get(__response__, 'audience'),
456
469
  backend=pulumi.get(__response__, 'backend'),
457
470
  bound_service_account_names=pulumi.get(__response__, 'bound_service_account_names'),
471
+ bound_service_account_namespace_selector=pulumi.get(__response__, 'bound_service_account_namespace_selector'),
458
472
  bound_service_account_namespaces=pulumi.get(__response__, 'bound_service_account_namespaces'),
459
473
  id=pulumi.get(__response__, 'id'),
460
474
  namespace=pulumi.get(__response__, 'namespace'),
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
3
  "name": "vault",
4
- "version": "7.5.0-alpha.1763696324"
4
+ "version": "7.6.0"
5
5
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi_vault
3
- Version: 7.5.0a1763696324
3
+ Version: 7.6.0
4
4
  Summary: A Pulumi package for creating and managing HashiCorp Vault cloud resources.
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://pulumi.io
@@ -28,7 +28,7 @@ pulumi_vault/plugin.py,sha256=57QZXnzP9lPAU0TbErKMCaLggsm9MehQm9hjVgy36_k,25233
28
28
  pulumi_vault/plugin_pinned_version.py,sha256=w3YbjWKRyKY_7Ufc45n7nIAhVxpuj352jqykNlzmk4Q,11340
29
29
  pulumi_vault/policy.py,sha256=eOofckCLS7K3YRGh3GElW5jpXz_oK76xny4Fk5VrsR0,11666
30
30
  pulumi_vault/provider.py,sha256=0rno_jWm-8NzVdJYUdgvtlhL5R15IjrWJxlcclfPc0c,44944
31
- pulumi_vault/pulumi-plugin.json,sha256=60wxKJ7pNGKvXnparw70CJkACxTm3Df1gYyCnoeiZoI,81
31
+ pulumi_vault/pulumi-plugin.json,sha256=kAWcFpZuJltcbIqRfOafG0BL3bSRtSTBZlZdn6KJ5PI,64
32
32
  pulumi_vault/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  pulumi_vault/quota_lease_count.py,sha256=CoqfUnFAx956hEU4610qCLLhfzYcB5Qey0Jfy3hkVwA,26157
34
34
  pulumi_vault/quota_rate_limit.py,sha256=tI72HsW0lOMEMMHLyr3EQhW8d6F-FfgsEQyXGH5ebjU,43077
@@ -82,11 +82,11 @@ pulumi_vault/consul/__init__.py,sha256=rvV594Qo7hp6Ysz7aaxgrOVw1c6LlliyrD8nrCoKE
82
82
  pulumi_vault/consul/secret_backend.py,sha256=qKboTfen7iw4PB46LMe_jH_C8TxLOztDRTsE0wKZg28,79364
83
83
  pulumi_vault/consul/secret_backend_role.py,sha256=42QN0s2omlBnfwOiPV4EmNOlpOCRlf_vb_Cyk63HmCg,43973
84
84
  pulumi_vault/database/__init__.py,sha256=IKf2lsiEPGWbulcje7pAgpeQqZ3kElNCrP3eDced97M,472
85
- pulumi_vault/database/_inputs.py,sha256=ysrNEE-wfw_8R0aHl9OK09NNmgC99NGWfQC8aasyMkI,551551
86
- pulumi_vault/database/outputs.py,sha256=BA-j4K5X2FcglxtV1TcOp59wGTVtjCoNUf-b8FoDC8o,382460
87
- pulumi_vault/database/secret_backend_connection.py,sha256=-lETXtUXeiz1vmwG7glaFHi7v4iR8ghIwRHM9dwYchQ,93381
85
+ pulumi_vault/database/_inputs.py,sha256=HdRB9jqu-KtrvYdqR0xPBxrQoEkFeh-E-LYg-TrQNm8,553427
86
+ pulumi_vault/database/outputs.py,sha256=Eh5Us4WpLWRX8S2smxdLD4cekUHfW10svD0H3Oa_IS4,383744
87
+ pulumi_vault/database/secret_backend_connection.py,sha256=vUfjrLbghJh0YXJec0ltqsSb_8Hkp9TyfV_h5GhPQok,95733
88
88
  pulumi_vault/database/secret_backend_role.py,sha256=Sm4PtpIA3m0nfUtfIEAGjORXZamAQsEpMaPkNSPNr8U,39232
89
- pulumi_vault/database/secret_backend_static_role.py,sha256=nB2EZ39_M3Z3KOhnr4tXww92qlt2g9hjPNKbTDktz3Q,44519
89
+ pulumi_vault/database/secret_backend_static_role.py,sha256=DfDTxGN341aV3nNRTuzW9U-xfqpZvU_E4JGwLke6KkY,53995
90
90
  pulumi_vault/database/secrets_mount.py,sha256=WAJEOlfp0dB2SZxh1GkTGXGMImweQxS42O3bdboPlIQ,122955
91
91
  pulumi_vault/gcp/__init__.py,sha256=FEwIPfzcZ5RqQYSD27FtChXzHEMQfcnhJbDvOPlWSAE,563
92
92
  pulumi_vault/gcp/_inputs.py,sha256=OLgraky8XbCZfbPIjQF6Q7G4Gglag_AIOKKZD97VsZk,20330
@@ -147,9 +147,9 @@ pulumi_vault/kmip/secret_role.py,sha256=hok_eaqx_Ws4l52mYY--V5N063fyKtSmWpmktK-v
147
147
  pulumi_vault/kmip/secret_scope.py,sha256=Di7loWyXMtxuccPWb0R0Hqw7lVuegnCTVrXXdlQTj6g,15680
148
148
  pulumi_vault/kubernetes/__init__.py,sha256=60lqFtbyb-uWFYGPVvTM7wfEx5nF0Pkc58Hw0ORuusA,530
149
149
  pulumi_vault/kubernetes/auth_backend_config.py,sha256=NCjEhqwmk-_BpQKGpMxcCaz_EQGD1BoR29Tm1D8fhuI,36743
150
- pulumi_vault/kubernetes/auth_backend_role.py,sha256=1qv5SjaF6csyW2nmUc_bg1oIkGmDJwWQsc8yJio2MIc,53659
150
+ pulumi_vault/kubernetes/auth_backend_role.py,sha256=Zr0WXb4egCTXNTuCK6IWixiJk1fP4tEhkfJde0Z_6oU,59288
151
151
  pulumi_vault/kubernetes/get_auth_backend_config.py,sha256=sOR4umTGQeNeuIVPPSFe6vAaMjvqeJu47FQd1XR123c,16139
152
- pulumi_vault/kubernetes/get_auth_backend_role.py,sha256=G0k8ovffHFAGR1IlcwffnceFiCf6llEOIftVBY9yxvE,25833
152
+ pulumi_vault/kubernetes/get_auth_backend_role.py,sha256=rX64MY1AW0fuifnl2B7o0Vw-gE5DvUosDckzDydO1l0,27233
153
153
  pulumi_vault/kubernetes/get_service_account_token.py,sha256=KfOe5q2QjffFkxxqqzOVCSmINtC5bQ7gvhN9bYx2e4M,15885
154
154
  pulumi_vault/kubernetes/secret_backend.py,sha256=Hgo1KtRKKP9G_08xmqquFmIQVmdHc1LFJmkr43QyxC8,72817
155
155
  pulumi_vault/kubernetes/secret_backend_role.py,sha256=GZhUBA0uT74tOw2c79b-SoaX30hlxzgLxQKaGiQcpdk,58361
@@ -268,7 +268,7 @@ pulumi_vault/transit/get_sign.py,sha256=zE2W22UeFyoNOOOcL4IACj7Vy_2xSdMW_TXhbJR4
268
268
  pulumi_vault/transit/get_verify.py,sha256=MJyNdouCwsAfluPQ7YeGCNkj0OJUB1hVOWAmkodD6fY,17170
269
269
  pulumi_vault/transit/secret_backend_key.py,sha256=4F_MJXEBzVsNY22HzSp79mPl0SLIVPCknk-D9klcW5A,68515
270
270
  pulumi_vault/transit/secret_cache_config.py,sha256=v5enplOZynVxCUCPaav5df8d9zK2vi07C8F9SAQ73aA,13238
271
- pulumi_vault-7.5.0a1763696324.dist-info/METADATA,sha256=kcH8nfaZeLfeGgHbmQv-6LGYq5_XB_nsv_qpnxCMAjg,4926
272
- pulumi_vault-7.5.0a1763696324.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
273
- pulumi_vault-7.5.0a1763696324.dist-info/top_level.txt,sha256=J7lAGvfexHc6T1EpDBGNKF0SXWURpmUhyzi9Nr5I61w,13
274
- pulumi_vault-7.5.0a1763696324.dist-info/RECORD,,
271
+ pulumi_vault-7.6.0.dist-info/METADATA,sha256=dLWMBlPT8iV1GlEoIulAAa_S5qAeVTIN34Ft-ocJoPI,4915
272
+ pulumi_vault-7.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
273
+ pulumi_vault-7.6.0.dist-info/top_level.txt,sha256=J7lAGvfexHc6T1EpDBGNKF0SXWURpmUhyzi9Nr5I61w,13
274
+ pulumi_vault-7.6.0.dist-info/RECORD,,