Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update docs version vars for v13 #25230

Closed
wants to merge 115 commits into from

Conversation

ptgott
Copy link
Contributor

@ptgott ptgott commented Apr 26, 2023

We can merge this when we're ready to release v13

hugoShaka and others added 30 commits April 18, 2023 01:08
Currently, when multiple discovery services are running with different
selectors, they will race against each other and delete the other
resources.

This PR fixes that behavior if the databases or kube clusters existent
in auth do not match the current selectors, they will be ignored.

This has a slight problem when a user stops a discovery agent, he must
manually delete the resources created, otherwise they will be available
forever.

Fixes #23699
This PR documents the `discovery_group` parameter introduced in #24214.

Part of #24585, #23699
* Kubernetes License check for root clusters

This PR ensures that a given Teleport root cluster is licensed for
Kubernetes access when forwarding credentials to leaf clusters.

Previously, the root Kube proxy would call auth server to generate a new
cert-key pair with the user identity and during the call Auth ensured
that it was licensed for Kubernetes usage. Given the recent developments
for #22533, the call mentioned was removed and it's now possible for a
root enterprise cluster to forward requests to a OSS leaf cluster
without validating its license.

Auth server already enforces Kubernetes license for Kubernetes service
when it tries to heartbeat the cluster. If the cluster is not properly
licensed, it's not possible to register kubernetes clusters.

Part of #22533

* remove watcher and use in process.getClusterFeatures callback

* add test to validate kube api license enforcement

* move err code to forbidden
* Make audit log details dialog larger.

* Remove empty line
* Tweak protogen to not change protos from cloud

* Use strategy: all whenever possible
- Ignore the messaging linter in the changelog. The changelog uses a
  different heading convention than the rest of the docs (title case
  instead of sentence case), so it's difficult to apply the same
  standards consistently.

- Minor edits to the Manual AD guide
* Checks proxy server and token set for join openssh

* Update if else logic for parameters

* Improve paramater info

* lint comment fix

* Update error messages to not be ?s

* Update error language
* Add docs subsection about joining services

Closes #21851
Also see #21305

Restructure the "Adding Nodes" guide to make joining Teleport processes
via the Proxy Service the default approach. Make it easier for users to
put these instructions in the context of our other joining methods by
creating a separate docs subsection for our joining guides.

This change also updates the previous "Adding Nodes" guide based on
testing.

This also renames "Node" to "Teleport process" and clarifies the
distinction between running a Teleport process and running services on
the process.

* Respond to zmb3 feedback

* Respond to alexfornuto feedback

* Improve the "Join Token" guide descriptionA

Makes this guide consistent with
df3e36e

* Move the Kubernetes guide

* Fix spelling

* Linter fixes
* Use CompareAndSwap for OktaAssignments instead of lock.

CompareAndSwap should be used for the OktaAssignment updates instead of a
lock, as it's lighter wait and fits the intended problem better.

* Use currentAssignment instead of backendAssignment.

* Update the last transition time.

* Set Metadata during update.
…nstructions (#24654)

* docs: make consistent helm configuration and instructions

* Language updates and identity file fix

* fix identity file refs

* label as Teleport Enterprise Cloud, not Teleport Cloud
This PR fixes a memory leak on Kubernetes access when using the SPDY protocol - used by `kubectl`.

The memory leak happens when a new connection is established using the SPDY's HTTPStreams. Each time a new connection is created locally, `kubectl` creates two streams for it - one for data and another for returning errors. When the multiplexed streams finish, they weren't properly cleanup from the SPDY connection and, although closed, their memory was kept alive and reachable for the duration of the SPDY long-lived connection. This ends up leaking memory and results in OOM events for the Proxy and Kubernetes services if a large number of connections are established within the same port-forwarding session.

Fixes #10966
* local proxy not required for mysql separate port

* Explain MySQL TLS routing local proxy requirement

* Speedup TestDatabaseLogin

* clone profile dir to run subtests in parallel

* fix ini global var data race
* Order sudoers lines by role name

* Add a warning in the docs to explain order sudoers roles are written as

* Resolve comments

* Resolve comments

* fix lints
* AWSOIDC Integration: ListDatabases

This PR adds a new Action for the AWSOIDC Integration: ListDatabases
The goal of this action is to provide the User a list of RDS Databases
from which the User will pick one to be added as a Teleport Database
Resource.
This way, the user doesn't need to copy/paste DB name, endpoints and
labels.

Before being able to call this action, the User has to set up an AWS
OIDC integration.

How does it work:
```
                    Client (web app)
                     │     ▲
                     │     │4. Returns list of DBs
 1. List Databases   │     │   (name, tags, status, endpoint)
                     │     │
                     │     │
                     │     │
                     │     │
                     ▼     │       3. rds.DescribeDBInstances
               ┌───────────┴────┐     (auth: token)                ┌─────────┐
               │                ├─────────────────────────────────►│         │
               │ Teleport Proxy │                                  │   AWS   │
               │                │     3.1. Get OIDC Config         │         │
               │                │◄─────────────────────────────────┤         │
               │                │     3.2. Get RSA Public Key      │         │
               │                │◄─────────────────────────────────┤         ├─────────┐ 3.3.
               │                │                                  │         │         │Validates token signature
               │                │                                  │         │         │with received public key
               │                │   3.4 Returns list of DBs        │         │◄────────┘
               │                │◄─────────────────────────────────┤         │
               └─┬──────────────┘                                  └─────────┘
                 │
                 │  2. Sign Token
                 │
                 ▼
              ┌───────────────────┐
              │                   │
              │   Teleport Auth   │
              │  RSA Private Key  │
              └───────────────────┘

```

* add resource and account ids to DB resource

* move api namespaces

* use types.Database instead of custom database format

* add database uri

* fix comments and rate limiter

* test name override when converting RDS V2 DBs

* fix webapi database URI field

* TestClusterDatabasesGet: add parallel
* Add initial opsgenie client

* Embed opsgenie client config in client and move some helper funcs

* Fix mod and sum and call to opsgenie client buildalertbody

* Add more godocs and use vendored teleport plugins lib

* Rename opsgenie client and config to prevent repetition

* Fix struct tag in opsgenie alertbody

* Fix misleading comment

* Add tests to opsgenie client to check note bodies are formatted

* Wrap errs with more descriptive types

* Close response bodies and fix error handling

* Add missing godoc and fix defer and return order

* Add missing godocs to opsgenie types

* Change opsgenie client test to not depend on json indent etc

* Add example of api url to godoc

* Undo unnecessary mod and sum changes

* Fix go sum

* Move opsgenie client code to integrations/lib

* Fix typos
* document error with older SSM agent version

* add unmarshal to dictionary
This PR updates the RFD 117 header and updates the RFD 98 and 117 state
to implemented.
greedy52 and others added 18 commits April 25, 2023 14:02
* TLS routing behind LB support for IAM join

* minor beautify

* add test for verifyALPNUpgradedConn

* use getHostAddresses(params)[0]
* Update headless tsh command descriptions

* update request ID parameter description

Co-authored-by: Zac Bergquist <[email protected]>

---------

Co-authored-by: Zac Bergquist <[email protected]>
* docs: Login Rule k8s operator docs

* apply Tiago's suggestions

* minor edits

* add loginrules to cspell.json

* address code review comments

* explicitly mention enterprise instructions

* fix lint

* consolidate CRD check into prereq bullet

---------

Co-authored-by: alexfornuto <[email protected]>
* athena audit logs - delete from sqs

* rework to table tests
* Avoid prompting users for mfa when using `tsh ssh --headless`

* add mfa+headless test
* Clean up aws oidc integration instructions

* Change ResourceSpec icon type from ReactElement to string

When storing state into location URL, it doesn't allow storing
ReactElement, so I changed the icon element into string that
refers to the correct icon. Also adds rds aurora tiles to
Select Resources screen.

* Fix the expected backend aws status value for RDS list

* For RDS list, allow refreshing the table

Helpful when user makes changes to the RDS instance
(eg. tags) and needs to get the most up to date listing

* Update rds db setup access text info

* Make create database dialog more consistent btwn states

* Fix label matching

Previously we required the agent matcher labels
be an exact match of registered db labels otherwise we
prevented the user from deploying an agent (which was wrong).

Now the only requirement is that the matcher labels are all
able to match against registered db labels.

* Implement resuming discover flow from where user left of

* Enable integration access and rds flow

* Strip 443 ports from cluster uri

* Use the labels returned from polling db instaed

* Various touch ups

- Make label matching error less confusing by showing
  error upon user trying to generate command
- Make label messaging clearer
- Emit errors when failing to fetch rds dbs

* Address CR and update test
The SAML IdP feature has been added to the test plan.
We're regularly seeing workflows queue for 40 minutes and then fail to
finish within the 1 hour timeout window.

The teleport repo has a hard limit configured at 3 hours.  So 2:30 gives
plenty of leeway for checkout before and sending the slack notification
after.
* Pin the plugins/slack image for dronegen pipelines

The latest version of this image has a regression where it reports
builds as successful even when they've failed.

Fixes https://github.com/gravitational/SecOps/issues/317

* Rework slack notifications in dronegen

Remove the call to action language, and leave only the relevant links.

Flatten several short lines into one longer line.  This allows the
entire message to render without needing to expand it.

* Rework slack notifications in unmanaged pipelines

Remove the call to action language, and leave only the relevant links.

Flatten several short lines into one longer line.  This allows the
entire message to render without needing to expand it.
* Adjust copy of db action

* Use retryWithRelogin when getting db usernames

* useAsync: Remove unnecessary useCallback

The state setter coming from useState is always stable.

https://legacy.reactjs.org/docs/hooks-reference.html#usestate

* useAsync: Expand docs with `run` return value example

* useSearch: Rename `restrictions` to `filters`

* useSearch: Remove unnecessary useState calls

* Refactor lockOpen into pauseUserInteraction

lockOpen worked great when we were concerned only about user interaction
with a modal closing the search bar as well. However, in the next commit
I'm going to add a login modal that's shown if the search fails with a
retryable error.

In that scenario, pressing Enter in the modal wouldn't work, as it would
be captured by the window listener that ResultList adds.

To work around this problem, I refactored lockOpen into pauseUserInteraction.
It still works pretty much the same way. But then instead of having checking
isLockedOpen in the close function, we have a new addWindowEventListener
function.

addWindowEventListener automatically removes the listener after
pauseUserInteraction is called. This solves both the problem of closing
the modal and the problem of using the enter key in the modal.

* Relogin & retry resource search if current workspace cert has expired

* addWindowEventListener: Name the cleanup function

* Make addWindowEventListener a prop of ResultList
…e search bar (#25061)

* Render ExtraTopComponent based on computed action picker status

* Fix formatting

* Use named args for getActionPickerStatus

* Use const for nonRetryableResourceSearchErrors

* Fix logic behind determining remaining filters
* Fix logout sequence

* Adjust `useLoggedInUser` documentation

* Mark clusters as disconnected after logging out

* Refactor `ClusterLogout` to not use the hook/container pattern

* Run prettier

* Fix test

* Use `routing.belongsToProfile`
* Simplify Okta assignment statuses.

The Okta assignment statuses have been simplfieid so that there's only a
status on the Okta assignment object itself and the number of states is
reduced.

* Fix tests, remove unused code.

* Add in Duration for update statuses to prevent changing status too soon.

* Make sure LastTransition is UTC.

* Remove actions in favor of targets, make cleanup time non-nullable.
Update e ref so that enterprise is compatible with the changes to the
OktaAssignment object.
This is a partial fix for #25017

The latest version of the YubiHSM2 SDK has changed the behavior for keys
longer than 2 bytes, which used to be silently truncated for all
operations.
This causes an unfortunate interaction with `DeleteUnusedKeys` when the
SDK is upgraded in an active Teleport cluster.
Because none of the active keys can be queried from the HSM
individually by their ID, but they can be listed by their label, all of
the active keys end up being deleted.
Yeah that's bad.

`DeleteUnusedKeys` is written this way in an attempt to be "stateless".
Trying to synchronously delete keys at the instant they are
rotated out during a CA rotation would be error-prone.
If the auth server were to restart or crash at the wrong moment, you
could be left with an orphaned key on your HSM forever, with no
reference to it stored by Teleport or anywhere else.

Instead, the Auth server labels all keys it creates with its own host
UUID.
Then periodically (during startup) it lists all keys in the HSM that are
labeled with its own UUID, and if they are not currently active, deletes
them.
This goes catastrophically wrong when individual lookup operations fail,
but list operations succeed.

The fix here is to avoid deleting any keys if any single lookup fails.

The YubiHSM2 SDK version 2023.1 is still not supported, but with this
fix at least we won't delete any active keys.
@zmb3
Copy link
Collaborator

zmb3 commented Apr 26, 2023

Should we skip straight to 14.0.0-dev on master?

@ptgott ptgott changed the base branch from master to branch/v13 April 28, 2023 20:06
@ptgott ptgott closed this Apr 28, 2023
@ptgott ptgott deleted the paul.gottschling/2023-04-26-versions branch April 28, 2023 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.