Apps privados
Um app do GoShip é público por padrão: qualquer pessoa com o endereço abre. Num app privado, o GoShip coloca uma página de login na frente de todos os endereços do app — o endereço do GoShip e cada domínio próprio —, tanto no cluster GoShip quanto nos clusters seus. O código do app e o login dele, se tiver um, ficam como estão: o login do GoShip é só a porta de entrada.
Voltar para público tira a página na hora.
Tornar um app privado
Na página do app, o card Access liga e desliga a visibilidade e gerencia as pessoas. Pela CLI:
goship app visibility meu-app private
goship app visibility meu-app publicPara criar o app já privado desde o primeiro deploy:
goship app create meu-app --platform go --privateUm app que nunca recebeu deploy mostra no painel o texto “Private. Takes effect on the first deploy.”: a página entra no ar com o primeiro deploy.
Quem pode entrar
Só quem você cadastrou. Cada pessoa tem um usuário e uma senha, e o app aceita até 25 pessoas.
goship app access list meu-app
goship app access add meu-app ana
goship app access add meu-app ana --password 'uma-senha-de-8-a-72-bytes'
goship app access reset meu-app ana
goship app access rm meu-app ana| Comando | O que faz |
|---|---|
goship app access list <app> | Lista as pessoas com acesso |
goship app access add <app> <usuario> | Adiciona alguém; sem --password, o GoShip gera uma senha de 20 caracteres |
goship app access reset <app> <usuario> [--password <senha>] | Troca a senha e encerra as sessões ativas da pessoa; sem --password, o GoShip gera outra e mostra uma vez |
goship app access rm <app> <usuario> | Remove a pessoa e encerra a sessão dela na hora |
Uma senha gerada aparece uma única vez, na resposta do comando (ou no painel): copie e entregue à pessoa. Se perder, use reset. Senhas que você escolhe têm de 8 a 72 bytes.
Automação: monitores, agentes e webhooks
Quem não é uma pessoa no navegador não consegue preencher o login. Para isso o app tem um token de acesso: envie no cabeçalho
X-GoShip-Access: <token>ou, quando não dá para mexer em cabeçalhos, na URL: ?goship_access=<token>. Prefira o cabeçalho: URLs vão parar em logs. Se uma URL com o token vazar, gire o token.
goship app access token meu-app # sem --reveal, o valor fica oculto
goship app access token meu-app --reveal # mostra o valor
goship app access token meu-app --rotate # gera outro; o antigo deixa de valer e as sessões ativas são encerradasPreflights de CORS (OPTIONS) sempre passam, para o navegador conseguir chamar o seu app de outra origem.
Cliente que não é navegador (curl, SDK, webhook) sem sessão e sem token recebe 403 no cluster GoShip e 401 nos clusters seus, nunca a página de login.
O que o visitante vê
Uma página chamada “Entrar em noindex. Depois de 5 senhas erradas seguidas para um usuário, esse usuário fica bloqueado por 10 minutos. O app recebe o cabeçalho X-GoShip-User com o usuário de quem entrou; use-o ou ignore-o.
Para sair, mande a pessoa para:
https://goship.sh/gate/logout?app=<id>&rd=<url do app>O <id> do app aparece em goship app info; rd é para onde a pessoa volta depois.
O painel confirma que está protegido
Na página do app, a linha de status mostra o texto do painel “Protected, checked
Limites
- Kubernetes conectado: não funciona num Kubernetes que você conectou ao GoShip por
kubeconfig(Conectar Kubernetes). Funciona no cluster GoShip e nos clusters que o GoShip montou, criados na sua nuvem ou conectados por SSH. - Se o portal do GoShip cair, um app privado responde com erro. Ele nunca abre.
- Toda pessoa cadastrada entra igual: o GoShip não distingue papéis dentro do app. Se o app precisa disso, use o login do próprio app.