pulumi-vault 6.4.0a1731738920__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.
- pulumi_vault/approle/auth_backend_role_secret_id.py +94 -0
- pulumi_vault/database/_inputs.py +200 -0
- pulumi_vault/database/outputs.py +140 -0
- pulumi_vault/database/secret_backend_static_role.py +64 -1
- pulumi_vault/gcp/secret_impersonated_account.py +57 -3
- pulumi_vault/kubernetes/auth_backend_config.py +50 -3
- pulumi_vault/kubernetes/get_auth_backend_config.py +34 -4
- pulumi_vault/kv/get_secret_v2.py +0 -2
- pulumi_vault/ldap/auth_backend.py +47 -0
- pulumi_vault/pulumi-plugin.json +1 -1
- pulumi_vault/ssh/secret_backend_role.py +34 -0
- {pulumi_vault-6.4.0a1731738920.dist-info → pulumi_vault-6.4.0a1732100598.dist-info}/METADATA +1 -1
- {pulumi_vault-6.4.0a1731738920.dist-info → pulumi_vault-6.4.0a1732100598.dist-info}/RECORD +15 -15
- {pulumi_vault-6.4.0a1731738920.dist-info → pulumi_vault-6.4.0a1732100598.dist-info}/WHEEL +0 -0
- {pulumi_vault-6.4.0a1731738920.dist-info → pulumi_vault-6.4.0a1732100598.dist-info}/top_level.txt +0 -0
pulumi_vault/database/outputs.py
CHANGED
@@ -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
|
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
|
+
|