Skip to content

Commit be82617

Browse files
authored
Merge branch 'branch/v17' into tcsc/branch/v17/ic-rerun-import
2 parents 6d5ebc4 + 5477616 commit be82617

File tree

31 files changed

+771
-365
lines changed

31 files changed

+771
-365
lines changed

Cargo.lock

+6-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/pages/admin-guides/access-controls/login-rules/guide.mdx

+3-3
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ of their current `username` trait converted to lowercase.
5656
Copy this example rule to a file called `my_rule.yaml` to continue with the
5757
guide.
5858

59-
```
59+
```yaml
6060
# my_rule.yaml
6161
kind: login_rule
6262
version: v1
@@ -136,8 +136,8 @@ You can check the traits and roles with the following command:
136136
$ tctl get --format json users/<Var name="username"/> | jq '{traits: first.spec.traits, roles: first.spec.roles}'
137137
{
138138
"traits": {
139-
"access": [
140-
"staging"
139+
"access": [
140+
"staging"
141141
],
142142
"groups": [
143143
"dbs",

docs/pages/admin-guides/deploy-a-cluster/hsm.mdx

+9
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,11 @@ auth_service:
285285
pin: "<CU_username>:<CU_password>"
286286
# pin_path can optionally be used to read the pin from a file
287287
# pin_path: /path/to/pin_file
288+
289+
# max_sessions configures the maximum number of open sessions for the HSM.
290+
# If not set, it will default to the minimum of 1024 or the MaxRWSessionCount
291+
# reported by the PKCS#11 module for the token. If set, must be greater than 1.
292+
max_sessions: 10
288293
```
289294
</TabItem>
290295
@@ -309,6 +314,10 @@ auth_service:
309314
pin: "85cfpassword"
310315
# pin_path can optionally be used to read the pin from a file
311316
# pin_path: /path/to/pin_file
317+
318+
# Optionally specify the maximum number of open sessions for the HSM.
319+
# If not set, it will default to 1024. If set, must be greater than 1.
320+
max_sessions: 10
312321
```
313322
</TabItem>
314323
</Tabs>

docs/pages/includes/config-reference/auth-service.yaml

+31
Original file line numberDiff line numberDiff line change
@@ -432,3 +432,34 @@ auth_service:
432432
report_results: s3://audit-long-term/report_results
433433
# (Optional) Athena workgroup used by access monitoring queries (if not set, the default primary workgroup will be used).
434434
workgroup: access_monitoring_workgroup
435+
# Enables storing CAs in an external Hardware Security Module(HSM) or Key Management Service(KMS)
436+
# Only one of the options can be enbabled at a given time.
437+
ca_key_params:
438+
# Persist CAs to Google Cloud KMS.
439+
gcp_kms:
440+
# The fully qualified path to the GCP key ring where CAs are to be stored.
441+
keyring: 'projects/<your-gcp-project>/locations/<location>/keyRings/<your-teleport-keyring>'
442+
# The protection level of the keys. Must be either SOFTWARE or HSM.
443+
protection_level: 'SOFTWARE'
444+
# Persist CAs to AWS KMS.
445+
aws_kms:
446+
# The AWS account where keys should be stored.
447+
account: '123456789012'
448+
# The AWS region where keys will be stored.
449+
region: 'us-west-2'
450+
# Persist CAs to a PKCS#11 compliant HSM.
451+
pkcs11:
452+
# this is the default install location of the PKCS#11 module for the HSM.
453+
module_path: /opt/cloudhsm/lib/libcloudhsm_pkcs11.so
454+
# slot_number is the PKCS#11 slot number to use for HSM connections.
455+
slot_number: 0
456+
# token_label is the label of the PKCS#11 token to use for HSM connections.
457+
token_label: 'hsm1'
458+
# max_sessions configures the maximum number of open sessions for the HSM.
459+
# If not set, it will default to the minimum of 1024 or the MaxRWSessionCount
460+
# reported by the PKCS#11 module for the token. If set, must be greater than 1.
461+
max_sessions: 10
462+
# pin is the PKCS#11 pin to use for HSM connections.
463+
pin: '0001password'
464+
# pin_path can optionally be used to read the pin from a file
465+
# pin_path: /path/to/pin_file

docs/pages/includes/login-rule-spec.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
```
1+
```yaml
22
kind: login_rule
33
version: v1
44
metadata:

docs/pages/upcoming-releases.mdx

+7-42
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,10 @@ The Teleport team delivers a new major release roughly every 4 months.
99

1010
| Version | Date |
1111
|---------|-----------------------------|
12-
| 17.3.0 | Week of February 24th, 2025 |
1312
| 17.4.0 | Week of March 24th, 2025 |
1413
| 17.5.0 | Week of May 19th, 2025 |
1514
| 18.0.0 | Week of May 26th, 2025 |
1615

17-
### 17.3.0
18-
19-
#### Delegated joining for Oracle Cloud Infrastructure
20-
21-
Teleport agents running on Oracle Cloud Infrastructure (OCI) will be able to
22-
join the Teleport cluster without a static join token.
23-
24-
#### Stable UIDs for host-user creation
25-
26-
Teleport will provide the ability to create host users with stable UIDs across
27-
the entire Teleport cluster.
28-
29-
#### VNet for Windows
30-
31-
Teleport's VNet feature will be available for Windows, allowing users to access
32-
TCP applications protected by Teleport as if they were on the same network.
33-
34-
#### Improved GitHub Proxy enrollment flow
35-
36-
{/* lint ignore absolute-docs-links */}
37-
Teleport web UI will provide wizard-like guided enrollment flow for the new
38-
[GitHub
39-
Proxy](https://goteleport.com/docs/admin-guides/management/guides/github-integration)
40-
integration.
41-
42-
#### AWS Identity Center integration improvements
43-
44-
AWS Identity Center integration will support using IAM authentication instead
45-
of OIDC (useful for private clusters) and a hybrid setup that allows to use
46-
another IdP as external identity source.
47-
48-
#### Okta integration improvements
49-
50-
Teleport Okta integration will include updated guided enrollment flow and will
51-
allow updating integration settings (such as sync configuration or group filters)
52-
without having to recreate the integration.
53-
5416
### 17.4.0
5517

5618
#### Database access for Oracle RDS
@@ -93,8 +55,9 @@ the Teleport Connect application without needing to use a browser.
9355

9456
#### VNet for SSH
9557

96-
Teleport's VNet feature will be available for SSH, allowing users to access
97-
SSH servers protected by Teleport as if they were on the same network.
58+
Teleport VNet will add native support for SSH, enabling any SSH client to connect
59+
to Teleport SSH servers with zero configuration. Advanced Teleport features like
60+
per-session MFA will have first-class support for a seamless user experience.
9861

9962
### 18.0.0
10063

@@ -111,8 +74,10 @@ The key deliverables for Teleport Cloud in the next quarter:
11174

11275
| Week of | Description |
11376
|-----------------------|----------------------------------------------------------------|
114-
| March 3rd, 2025 | Teleport 17.3 will begin rollout on Cloud. |
115-
| March 3rd, 2025 | Teleport 17.3 agents will begin rollout to eligible tenants. |
77+
| March 10, 2025 | Teleport 17.3 will begin rollout on Cloud. |
78+
| March 10, 2025 | Teleport 17.3 agents will begin rollout to eligible tenants. |
79+
| March 31, 2025 | Teleport 17.4 will begin rollout on Cloud. |
80+
| March 31, 2025 | Teleport 17.4 agents will begin rollout to eligible tenants. |
11681

11782
## Production readiness
11883

lib/auth/keystore/pkcs11.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ type pkcs11KeyStore struct {
5151

5252
func newPKCS11KeyStore(config *servicecfg.PKCS11Config, opts *Options) (*pkcs11KeyStore, error) {
5353
cryptoConfig := &crypto11.Config{
54-
Path: config.Path,
55-
TokenLabel: config.TokenLabel,
56-
SlotNumber: config.SlotNumber,
57-
Pin: config.PIN,
54+
Path: config.Path,
55+
TokenLabel: config.TokenLabel,
56+
SlotNumber: config.SlotNumber,
57+
Pin: config.PIN,
58+
MaxSessions: config.MaxSessions,
5859
}
5960

6061
ctx, err := crypto11.Configure(cryptoConfig)

lib/config/configuration.go

+1
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,7 @@ func applyPKCS11Config(pkcs11Config *PKCS11, cfg *servicecfg.Config) error {
11381138

11391139
cfg.Auth.KeyStore.PKCS11.TokenLabel = pkcs11Config.TokenLabel
11401140
cfg.Auth.KeyStore.PKCS11.SlotNumber = pkcs11Config.SlotNumber
1141+
cfg.Auth.KeyStore.PKCS11.MaxSessions = pkcs11Config.MaxSessions
11411142

11421143
cfg.Auth.KeyStore.PKCS11.PIN = pkcs11Config.PIN
11431144
if pkcs11Config.PINPath != "" {

lib/config/configuration_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -3217,6 +3217,27 @@ func TestApplyKeyStoreConfig(t *testing.T) {
32173217
worldReadablePinFilePath,
32183218
),
32193219
},
3220+
{
3221+
name: "correct config with max sessions",
3222+
auth: Auth{
3223+
CAKeyParams: &CAKeyParams{
3224+
PKCS11: &PKCS11{
3225+
ModulePath: securePKCS11LibPath,
3226+
TokenLabel: "foo",
3227+
SlotNumber: &slotNumber,
3228+
MaxSessions: 100,
3229+
},
3230+
},
3231+
},
3232+
want: servicecfg.KeystoreConfig{
3233+
PKCS11: servicecfg.PKCS11Config{
3234+
TokenLabel: "foo",
3235+
SlotNumber: &slotNumber,
3236+
MaxSessions: 100,
3237+
Path: securePKCS11LibPath,
3238+
},
3239+
},
3240+
},
32203241
{
32213242
name: "correct gcp config",
32223243
auth: Auth{

lib/config/fileconf.go

+2
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,8 @@ type PKCS11 struct {
895895
// Trailing newlines will be removed, other whitespace will be left. Set
896896
// this or Pin to set the pin.
897897
PINPath string `yaml:"pin_path,omitempty"`
898+
// MaxSessions is the upper limit of sessions allowed by the HSM.
899+
MaxSessions int `yaml:"max_sessions"`
898900
}
899901

900902
// GoogleCloudKMS configures Google Cloud Key Management Service to to be used for

lib/service/servicecfg/auth.go

+13
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ type PKCS11Config struct {
242242
TokenLabel string
243243
// PIN is the PKCS11 PIN for the given token.
244244
PIN string
245+
// MaxSessions is the upper limit of sessions allowed by the HSM.
246+
MaxSessions int
245247
}
246248

247249
// CheckAndSetDefaults checks that required parameters of the config are
@@ -253,6 +255,17 @@ func (cfg *PKCS11Config) CheckAndSetDefaults() error {
253255
if cfg.SlotNumber == nil && cfg.TokenLabel == "" {
254256
return trace.BadParameter("must provide one of SlotNumber or TokenLabel")
255257
}
258+
259+
switch {
260+
case cfg.MaxSessions < 0:
261+
return trace.BadParameter("the value of PKCS11 MaxSessions must not be negative")
262+
case cfg.MaxSessions == 1:
263+
return trace.BadParameter("the minimum value for PKCS11 MaxSessions is 2")
264+
case cfg.MaxSessions == 0:
265+
// A value of zero is acceptable and indicates to the pkcs11 library to use the default value.
266+
default:
267+
}
268+
256269
return nil
257270
}
258271

0 commit comments

Comments
 (0)