-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Teleport 17 Web Test Plan #48004
Comments
The test plan contains two tests that can't be verified: "Verify adding very first device or passkey works without requiring re-authentication" and "Verify I'm therefore skipping these cases. |
Linux binaries for Connect v17 are more than twice the size of 16.4.3. This is due to a bug in Electron 33.0.2. From what I see, the fix has been merged, we'll have to update once it's released. |
i'll get to this later, i have another access request UI issue i will need to address together this is from role request teleterm access list frequency dropdown cut off: fixes heres: |
Minor issue, not a blocker IMO: #48201 |
I'm skipping the tests of logging through OIDC SSO in Connect as I don't really have a cluster where I could test it. SAML and GitHub work correctly though. Edit: Bartosz went through that after setting up OIDC in his cluster. |
Add new resource / (SSH Server|Self-hosted Database) fails to generate a valid node join script #48508 |
fix attempt state for |
fix regression, where |
Web UI
Main
For main, test with a role that has access to all resources.
As you go through testing, click on any links you come across to make sure they work (no 404) and are up to date.
Trusted Cluster (leafs)
The following features should allow users to view resources in trusted clusters.
There should be a cluster dropdown for:
/web/cluster/<cluster-name>/console/nodes
)Top Bar Nav @bl-nero
Resources
(unified resources),Access Management
,Access Requests
,Active Sessions
,Notification Bell
anduser settings menu
User Settings Menu @bl-nero
Verify adding very first device or passkey works without requiring re-authentication(This is no longer supported, I'm updating the test plan template — @bl-nero)Verify(This is no longer supported, I'm updating the test plan template — @bl-nero)second_factor
set tooff
disables adding devicesUnified Resources @bl-nero
Add Resource
button correctly sends to the resource discovery pageforward_agent: true
under theoptions
section of your role, and then test that yourteleport certs show up when you run
ssh-add -l
on the node.Launch
button for applications correctly send to the appLaunch
button for AWS apps correctly renders an IAM role selection windowConnect
renders the dialog with correct informationConnect
renders the dialog with correct informationConnect
renders a login selection and that the logins are completely in viewActive Sessions (@avatus )
Access Management Side Nav (@avatus )
Session Recordings (@avatus)
Audit log (@avatus)
details
buttonUsers (@avatus)
All actions should require re-authn with a webauthn device.
Invite, Reset, and Login Forms
For each, test the invite, reset, and login flows
second_factor
type tooff
second_factor
type tootp
, requires otpsecond_factor
type towebauthn
, requires hardware keysecond_factor
type toon
, requires a MFA deviceAuth Connectors @bl-nero
For help with setting up auth connectors, check out the [Quick GitHub/SAML/OIDC Setup Tips]
All actions should require re-authn with a webauthn device.
Roles (@avatus)
All actions should require re-authn with a webauthn device.
Enroll New Integration (aka Plugins) (@kimlisa)
self-hosted plugins
andmachine id
cards link out to the correct docsno-code integrations
renders formEnroll new resources using Discover Wizard (@kimlisa)
Use Discover Wizard to enroll new resources and access them:
Self-Hosted PostgreSQL and Mongoonly verified postgresAccess Lists (@kiosion and nested lists)
Not available for OSS
Admin refers to users with access_list RBAC defined:
Session & Identity Locks @bl-nero
Locks without a— @bl-neroLocked By
andStart Date
are still shown with those fields empty.Message
are shown with this field as empty.Expiration
field are shown with this field as "Never".Trusted Devices (@avatus)
Managed Clusters
root
pillApplication Access
Required Applications (@avatus)
Create two apps running locally, a frontend app and a backend app. The frontend app should
make an API request to the backend app at its teleport public_addr
You can use this example app if you don't have a frontend/backend setup
Update your app service to serve the apps like this (update your public addr to what makes sense for your cluster)
Launch your cluster and make sure you are logged out of your api by going to
https://api.avatus.sh/teleport-logout
{"hello":"world"}
responseAccess Requests (@kiosion)
Not available for OSS
Access Request Notification Routing Rule (cloud only)
Creating Access Requests (Role Based) (@rudream)
Create a role with limited permissions
allow-roles-and-nodes
. This role allows you to see the Role screen and ssh into all nodes.Create another role with limited permissions
allow-users-with-short-ttl
. This role session expires in 4 minutes, allows you to see Users screen, and denies access to all nodes.Create a user that has no access to anything but allows you to request roles:
allow-roles-and-nodes
andallow-users-with-short-ttl
are listedCreating Access Requests (Resource Based) (@rudream)
Create a role with access to searcheable resources (apps, db, kubes, nodes, desktops). The template
searcheable-resources
is below.Create a user that has no access to resources, but allows you to search them:
searcheable-resources
rulesViewing & Approving/Denying Requests (@rudream)
Create a user with the role
reviewer
that allows you to review all requests, and delete them.Assuming Approved Requests (Role Based)
allow-roles-and-nodes
allows you to see roles screen and ssh into nodesallow-roles-and-nodes
, verify that assumingallow-users-with-short-ttl
allows you to see users screen, and denies access to nodesDrop Request
onallow-users-with-short-ttl
whileallow-roles-and-nodes
is still assumedallow-users-with-short-ttl
role that the next action (i.e. opening a new tab with unified resources) triggers a relogin modal after the expiry is met (4 minutes)Assuming Approved Requests (Search Based)
Assuming Approved Requests (Both)
Access Request Waiting Room @kiosion
Strategy Reason
Create the following role:
request_prompt
settingsend request
, pending dialogue rendersStrategy Always
With the previous role you created from
Strategy Reason
, changerequest_access
toalways
:Logout
and clicking goes back to the login screenStrategy Optional
With the previous role you created from
Strategy Reason
, changerequest_access
tooptional
:Web Terminal (aka console) (@avatus)
[ ] Verify that top nav has a user menu (Main and Logout)This menu has been removedctrl+[1...9]
(alt on linux/windows)require_session_mfa
and:Terminal Node List Tab
Terminal Session Tab
$ sudo apt-get install mc
$ mc
Cloud @bl-nero
From your cloud staging account, change the field
teleportVersion
to the test version.Dashboard Tenants (self-hosted license)
Recovery Code Management
Invite/Reset
Recovery Flow: Add new mfa device
Recovery Flow: Change password
Recovery Email
Verify receiving email for locked account when max attempts reachedThis functionality has been deliberately removed - @bl-neroRBAC @bl-nero
Note: this entire section was updated to reflect changes in #48610 — @bl-nero
Create a role, with no
allow.rules
defined:Access
top-level navigation item.Audit
top-level navigation item only containsActive Sessions
.Policy
top-level navigation item, while the admin does.Identity
top-level navigation item only containsAccess Requests
andAccess Lists
.Add New
top-level navigation item only containsResource
andAccess List
.Identity
top-level navigation item.Add New
top-level navigation item only containsResource
.Enroll New Resource
button is disabled on the Resources screen.Note: User has read/create access_request access to their own requests, despite resource settings
Add the following under
spec.allow.rules
to enable read access to the audit log:Audit Log
is accessibleAdd the following to enable list access to session recordings:
Session Recordings
is accessibleChange the session permissions to enable read access to recorded sessions:
Add the following to enable read access to the roles:
Add the following to enable read access to the auth connectors
Add the following to enable read access to users
Add the following to enable read access to trusted clusters
Teleport Connect
(
auth_service.authentication
in the cluster config):type: local
,second_factor: "off"
type: local
,second_factor: "otp"
type: local
,second_factor: "webauthn"
,type: local
,second_factor: "webauthn"
, log in passwordlessly with hardware keytype: local
,second_factor: "webauthn"
, log in passwordlessly with touch IDtype: local
,second_factor: "optional"
, log in without MFAtype: local
,second_factor: "optional"
, log in with OTPtype: local
,second_factor: "optional"
, log in with hardware keytype: local
,second_factor: "on"
, log in with OTPtype: local
,second_factor: "on"
, log in with hardware keytype: local
,second_factor: "on"
, log in with passwordless authcapabilities to multiple users.
parens. Or set up the connectors on a local enterprise cluster following the guide from
our wiki.
clusters).
workspace should have no impact on the original shell session.
TELEPORT_PROXY
andTELEPORT_CLUSTER
should pin the session to the correct cluster.TELEPORT_HOME
should point to~/Library/Application Support/Teleport Connect/tsh
.PATH
should include/Applications/Teleport Connect.app/Contents/Resources/bin
.(only for local terminals).
$ sudo apt-get install mc
$ mc
$ exit
command.process under it.
echo $KUBECONFIG
and check if it points to the file within Connect's app data directory.kubectl get pods -A
and verify that the command succeeds. Then create a pod withkubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
and exec into it withkubectl exec --stdin --tty shell-demo -- /bin/bash
. Verify that the shell works.ClusterRoleBinding
ink8s
for the admin role.
Then you need to add the k8s group (which maps to the k8s admin role in
ClusterRoleBinding
) tokubernetes_groups
of your Teleport role.properly.
assigned works.
~/Library/Application Support/Teleport Connect/tsh
doesn't crash the app.~/Library/Application Support/Teleport Connect/app_state.json
but not thetsh
dir doesn't crash the app.remember previous tabs (they should be cleared on logout).
connection tracker and choose said db connection from it. Verify that the newly opened tab uses
the same db name and port.
the app. Verify that the app doesn't ask you about restoring previous tabs.
belong to.
paginated too.
spec.allow.logins
andspec.allow.db_users
.Cmd+[1...9]
.elements.
the workspace of that cluster automatically.
(by switching to another cluster) and return to the previous workspace.
that Connect simply changes the workspace to that of that cluster.
the modal when asked for credentials. Verify that the cluster was still added and is visible in
the profile selector.
clusters.
expected.
workspace of that root cluster.
the search bar.
by clicking one of the buttons or by pressing Escape does not close the search bar.
the cert to expire. Enter a search term that usually returns some results.
results.
and shows "No matching results found".
resources by entering the search field and pressing enter. Verify that no unrecoverable
error was raised (that is, the app still works). Then restart the app and verify that it was
restarted gracefully (no unrecoverable error on restart, the user can continue using the
app).
Trying to open a second tab with the same pair should just switch you to the already
existing tab.
user. Go back to Connect and change the database name and port. Both actions should not
return an error.
Click "Connect" to show a list of db users. Now remove access to that db. Go back to Connect
and choose a username. Verify that a recoverable error is shown and the user can continue
using the app.
tsh proxy db
with the same port, start theapp. Verify that the app doesn't crash and the db connection tab shows you the error
(address in use) and offers a way to retry creating the connection.
1m
(
spec.options.max_session_ttl
).another connection to the local db proxy.
select now();
, the client shouldbe able to automatically reinstantiate the connection.
see if it connects without problems. You might need to resync the cluster again in case
they managed to expire.
the cert to expire, then attempt to make a connection through the proxy; log in.
does not have permissions. Confirm database user and name").
databases view.
proxy, then without logging in proceed to connect to the second proxy.
progress.
Creating Access Requests (Role Based)
from the Web UI testplan and then verify the tasks below.allow-roles-and-nodes
andallow-users-with-short-ttl
are listedstate)
suggested_reviewers wasn't defined)
Creating Access Requests (Resource Based)
from the Web UI testplan and then verify the tasks below.searcheable-resources
rulesstate)
suggested_reviewers wasn't defined)
show_resources
toaccessible_only
in the UI config of the root cluster.Viewing & Approving/Denying Requests
from the Web UI testplan and then verify the tasks below.your review stamp (green checkmark) and message box
(red cross)
allow-roles-and-nodes
allows you to see roles screen and ssh intonodes
allow-roles-and-nodes
, verify that assumingallow-users-with-short-ttl
allows you to see users screen, and denies access to nodes
expires
switching back
goes back to your default static roleallow-users-with-short-ttl
role, the user is automatically loggedout after the expiry is met (4 minutes)
viewing
again
⋮
> Open Config File opens theapp_config.json
file in your editor.terminal.fontFamily
."keymap.tab1": "ABC"
)."keymap.tab1": not a string
).tsh ls --headless --user=<username> --proxy=<proxy>
. The cluster needs to have webauthn enabled for it to work.closed automatically.
closed automatically.
second one after closing the modal for the first request.
the second one after closing the modal for the first request.
MFA.
kubectl exec --stdin --tty shell-demo -- /bin/bash
mentioned above toverify that Kube access is working with MFA.
The easiest way to test it is to enable cluster-wide hardware keys enforcement
(set
require_session_mfa: hardware_key_touch_and_pin
to get both touch and PIN prompts).connect to it.
are shown in the UI.
tail -F ~/Library/Application\ Support/Teleport\ Connect/logs/cleanup.log
) and thenkill -s KILL <agent PID>
.SIGKILL.
with connection. Verify that the app kills the agent after the agent is not able to join the
cluster within the timeout.
manually stopped before exiting the app.
/etc/hosts
. It's best to use a "real" cluster. nip.io might work, but it hasn't been confirmedyet.
Connect to properly recognize it as a TCP app.
All Processes, Hierarchically, search for
tsh
and find tsh running under kernel_task →launchd → tsh, owned by root. Then just
sudo kill -s KILL <tsh pid>
./etc/resolver
. However, it's possible to startVNet again, connect to a TCP app, then shut VNet down and it results in the files being
cleaned up.
enabling the background item for tsh.app. Accept it and verify that you can connect to a TCP app
through VNet.
~/Library/Application\ Support/Teleport\ Connect/logs
.works properly after that.
Open every possible document. Close the app. Start the current alpha. Reopen the tabs. Verify that
the app was able to reopen the tabs without any errors.
The text was updated successfully, but these errors were encountered: