diff --git a/.assets/bastion.jpg b/.assets/bastion.jpg index 3a1be83..6196fe6 100644 Binary files a/.assets/bastion.jpg and b/.assets/bastion.jpg differ diff --git a/.assets/cluster-mysql.svg b/.assets/cluster-mysql.svg index 9629efb..094aee4 100644 --- a/.assets/cluster-mysql.svg +++ b/.assets/cluster-mysql.svg @@ -1,176 +1 @@ - - - - - - -%3 - - -cluster_sshportal - -sshportal cluster - - -cluster_hosts - -hosts - - -cluster_users - -users - - - -sshportal1 - -sshportal1 - - - -MySQL - -MySQL - - - -sshportal1--MySQL - - - - -host1 - -host1 - - - -sshportal1--host1 - - - - -sshportal2 - -sshportal2 - - - -sshportal2--MySQL - - - - -sshportal2--host1 - - - - -host2 - -host2 - - - -sshportal2--host2 - - - - -sshportal3 - -sshportal3 - - - -sshportal3--MySQL - - - - -host3 - -host3 - - - -sshportal3--host3 - - - - -sshportalN - -sshportalN - - - -sshportalN--MySQL - - - - -hostN - -hostN - - - -sshportalN--hostN - - - - -user1 - -user1 - - - -user1--sshportal1 - - - - -user2 - -user2 - - - -user2--sshportal2 - - - - -user3 - -user3 - - - -user3--sshportal2 - - - - -user3--sshportal3 - - - - -userN - -userN - - - -userN--sshportalN - - - - +%3cluster_sshportalsshportal clustercluster_hostshostscluster_usersuserssshportal1sshportal1MySQLMySQLsshportal1--MySQLhost1host1sshportal1--host1sshportal2sshportal2sshportal2--MySQLsshportal2--host1host2host2sshportal2--host2sshportal3sshportal3sshportal3--MySQLhost3host3sshportal3--host3sshportalNsshportalNsshportalN--MySQLhostNhostNsshportalN--hostNuser1user1user1--sshportal1user2user2user2--sshportal2user3user3user3--sshportal2user3--sshportal3userNuserNuserN--sshportalN \ No newline at end of file diff --git a/.assets/demo.gif b/.assets/demo.gif index f240a14..b1d4142 100644 Binary files a/.assets/demo.gif and b/.assets/demo.gif differ diff --git a/.assets/flow-diagram.png b/.assets/flow-diagram.png index cba3ab1..472d32b 100644 Binary files a/.assets/flow-diagram.png and b/.assets/flow-diagram.png differ diff --git a/.assets/flow-diagram.svg b/.assets/flow-diagram.svg index a6366d6..d4a6706 100644 --- a/.assets/flow-diagram.svg +++ b/.assets/flow-diagram.svg @@ -1,178 +1 @@ - - - - - - -%3 - - -cluster_sshportal - -sshportal - - -cluster_hosts - -your hosts - - - -start - -$> ssh sshportal - - - -known_user_key - -known user key - - - -start->known_user_key - - - - -unknown_user_key - -unknown user key - - - -start->unknown_user_key - - - - -acl_manager - -ACL manager - - - -known_user_key->acl_manager - -user matches an existing host - - - -builtin_shell - -built-in -config shell - - - -known_user_key->builtin_shell - -user=admin - - - -err_and_exit - -error -and exit - - - -known_user_key->err_and_exit - -invalid user - - - -invite_manager - -invite manager - - - -unknown_user_key->invite_manager - -user=invite:<token> - - - -unknown_user_key->err_and_exit - -any other user - - - -learn_key - -learn the -pub key - - - -invite_manager->learn_key - -valid token - - - -invite_manager->err_and_exit - -invalid token - - - -ssh_proxy - -SSH proxy -Jump-Host - - - -acl_manager->ssh_proxy - -authorized - - - -acl_manager->err_and_exit - -unauthorized - - - -host_1 - -root@host1 - - - -ssh_proxy->host_1 - - - - -host_2 - -user@host2:2222 - - - -ssh_proxy->host_2 - - - - -host_3 - -root@host3:1234 - - - -ssh_proxy->host_3 - - - - +%3cluster_sshportalsshportalcluster_hostsyour hostsstart$> ssh sshportalknown_user_keyknown user keystart->known_user_keyunknown_user_keyunknown user keystart->unknown_user_keyacl_managerACL managerknown_user_key->acl_manageruser matches an existing hostbuiltin_shellbuilt-inconfig shellknown_user_key->builtin_shelluser=adminerr_and_exiterrorand exitknown_user_key->err_and_exitinvalid userinvite_managerinvite managerunknown_user_key->invite_manageruser=invite:<token>unknown_user_key->err_and_exitany other userlearn_keylearn thepub keyinvite_manager->learn_keyvalid tokeninvite_manager->err_and_exitinvalid tokenssh_proxySSH proxyJump-Hostacl_manager->ssh_proxyauthorizedacl_manager->err_and_exitunauthorizedhost_1root@host1ssh_proxy->host_1host_2user@host2:2222ssh_proxy->host_2host_3root@host3:1234ssh_proxy->host_3 \ No newline at end of file diff --git a/.assets/overview.png b/.assets/overview.png index d673436..c81caf4 100644 Binary files a/.assets/overview.png and b/.assets/overview.png differ diff --git a/.assets/overview.svg b/.assets/overview.svg index e85a773..4cdb20f 100644 --- a/.assets/overview.svg +++ b/.assets/overview.svg @@ -1,149 +1 @@ - - - - - - -%3 - - -cluster_sshportal - - - - -sshportal - -sshportal - - - -shell - -built-in -admin shell - - - -sshportal--shell - - - - -db - -db - - - -sshportal--db - - - - -host1 - -host1 - - - -sshportal--host1 - - - - -sshportal--host1 - - - - -host2 - -host2 - - - -sshportal--host2 - - - - -host3 - -host3 - - - -sshportal--host3 - - - - -hostN - -hostN - - - -sshportal--hostN - - - - -user1 - -user1 - - - -user1--sshportal - - - - -user2 - -user2 - - - -user2--sshportal - - - - -user2--sshportal - - - - -user2--sshportal - - - - -user3 - -user3 - - - -user3--sshportal - - - - -userN - -userN - - - -userN--sshportal - - - - +%3cluster_sshportalsshportalsshportalshellbuilt-inadmin shellsshportal--shelldbdbsshportal--dbhost1host1sshportal--host1sshportal--host1host2host2sshportal--host2host3host3sshportal--host3hostNhostNsshportal--hostNuser1user1user1--sshportaluser2user2user2--sshportaluser2--sshportaluser2--sshportaluser3user3user3--sshportaluserNuserNuserN--sshportal \ No newline at end of file diff --git a/.assets/sql-schema.svg b/.assets/sql-schema.svg index 8d77d88..993fba2 100644 --- a/.assets/sql-schema.svg +++ b/.assets/sql-schema.svg @@ -1,390 +1 @@ - - - - - - -Database Structure - -ER Diagram: db - - -acls - - -acls - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -host_pattern: -VARCHAR - -action: -VARCHAR - -weight: -INT - -comment: -VARCHAR - - - -host_group_acls - - -host_group_acls - -host_group_id: -INT - -acl_id: -INT - - - -host_group_acls:acl_id->acls:id - - - - - -host_groups - - -host_groups - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -name: -VARCHAR - -comment: -VARCHAR - - - -host_group_acls:host_group_id->host_groups:id - - - - - -host_host_groups - - -host_host_groups - -host_id: -INT - -host_group_id: -INT - - - -host_host_groups:host_group_id->host_groups:id - - - - - -hosts - - -hosts - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -name: -VARCHAR - -addr: -VARCHAR - -user: -VARCHAR - -password: -VARCHAR - -ssh_key_id: -INT - -fingerprint: -VARCHAR - -comment: -VARCHAR - -host_key: -VARBINARY - - - -host_host_groups:host_id->hosts:id - - - - - -ssh_keys - - -ssh_keys - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -name: -VARCHAR - -type: -VARCHAR - -length: -INT - -fingerprint: -VARCHAR - -priv_key: -VARCHAR - -pub_key: -VARCHAR - -comment: -VARCHAR - - - -hosts:ssh_key_id->ssh_keys:id - - - - - -migrations - - -migrations - -id: -VARCHAR - - - -settings - - -settings - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -name: -VARCHAR - -value: -VARCHAR - - - -user_group_acls - - -user_group_acls - -user_group_id: -INT - -acl_id: -INT - - - -user_group_acls:acl_id->acls:id - - - - - -user_groups - - -user_groups - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -name: -VARCHAR - -comment: -VARCHAR - - - -user_group_acls:user_group_id->user_groups:id - - - - - -user_keys - - -user_keys - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -key: -VARBINARY - -user_id: -INT - -comment: -VARCHAR - -authorized_key: -VARCHAR - - - -users - - -users - -id: -INT - -created_at: -TIMESTAMP - -updated_at: -TIMESTAMP - -deleted_at: -TIMESTAMP - -is_admin: -TINYINT - -email: -VARCHAR - -name: -VARCHAR - -comment: -VARCHAR - -invite_token: -VARCHAR - - - -user_keys:user_id->users:id - - - - - -user_user_groups - - -user_user_groups - -user_id: -INT - -user_group_id: -INT - - - -user_user_groups:user_group_id->user_groups:id - - - - - -user_user_groups:user_id->users:id - - - - - +Database StructureER Diagram: dbaclsaclsid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPhost_pattern:VARCHARaction:VARCHARweight:INTcomment:VARCHARhost_group_aclshost_group_aclshost_group_id:INTacl_id:INThost_group_acls:acl_id->acls:idhost_groupshost_groupsid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPname:VARCHARcomment:VARCHARhost_group_acls:host_group_id->host_groups:idhost_host_groupshost_host_groupshost_id:INThost_group_id:INThost_host_groups:host_group_id->host_groups:idhostshostsid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPname:VARCHARaddr:VARCHARuser:VARCHARpassword:VARCHARssh_key_id:INTfingerprint:VARCHARcomment:VARCHARhost_key:VARBINARYhost_host_groups:host_id->hosts:idssh_keysssh_keysid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPname:VARCHARtype:VARCHARlength:INTfingerprint:VARCHARpriv_key:VARCHARpub_key:VARCHARcomment:VARCHARhosts:ssh_key_id->ssh_keys:idmigrationsmigrationsid:VARCHARsettingssettingsid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPname:VARCHARvalue:VARCHARuser_group_aclsuser_group_aclsuser_group_id:INTacl_id:INTuser_group_acls:acl_id->acls:iduser_groupsuser_groupsid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPname:VARCHARcomment:VARCHARuser_group_acls:user_group_id->user_groups:iduser_keysuser_keysid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPkey:VARBINARYuser_id:INTcomment:VARCHARauthorized_key:VARCHARusersusersid:INTcreated_at:TIMESTAMPupdated_at:TIMESTAMPdeleted_at:TIMESTAMPis_admin:TINYINTemail:VARCHARname:VARCHARcomment:VARCHARinvite_token:VARCHARuser_keys:user_id->users:iduser_user_groupsuser_user_groupsuser_id:INTuser_group_id:INTuser_user_groups:user_group_id->user_groups:iduser_user_groups:user_id->users:id \ No newline at end of file