124 lines
11 KiB
Markdown
124 lines
11 KiB
Markdown
---
|
|
title: Segurança no GitHub Codespaces
|
|
intro: 'Visão geral da arquitetura de segurança {% data variables.product.prodname_github_codespaces %}, com diretrizes para ajudar você a manter a segurança e minimizar o risco de ataque.'
|
|
miniTocMaxHeadingLevel: 3
|
|
versions:
|
|
fpt: '*'
|
|
ghec: '*'
|
|
topics:
|
|
- Codespaces
|
|
- Security
|
|
type: reference
|
|
shortTitle: Security in Codespaces
|
|
redirect_from:
|
|
- /codespaces/codespaces-reference/security-in-codespaces
|
|
ms.openlocfilehash: 0e7fe9a7644f78fc0dfa6d5bb624c5d74f3d8713
|
|
ms.sourcegitcommit: 47bd0e48c7dba1dde49baff60bc1eddc91ab10c5
|
|
ms.translationtype: HT
|
|
ms.contentlocale: pt-BR
|
|
ms.lasthandoff: 09/05/2022
|
|
ms.locfileid: '147111397'
|
|
---
|
|
## Visão geral da segurança do codespace
|
|
|
|
O {% data variables.product.prodname_github_codespaces %} foi projetado para ser uma segurança mais rígida por padrão. Consequentemente, você deverá garantir que as suas práticas de desenvolvimento de software não corram o risco de reduzir a posição de segurança do seu codespace.
|
|
|
|
Este guia descreve a forma como os Programas mantêm seu ambiente de desenvolvimento seguro e fornece algumas das práticas recomendadas que ajudarão a manter sua segurança enquanto você trabalha. Como em qualquer ferramenta de desenvolvimento, lembre-se de que você só deve abrir e trabalhar em repositórios que você conhece e confia.
|
|
|
|
### Isolamento de ambiente
|
|
|
|
O {% data variables.product.prodname_github_codespaces %} foi projetado para manter seus codespaces separados um do outro, cada um usando sua própria máquina virtual e rede.
|
|
|
|
#### Máquinas virtuais isoladas
|
|
|
|
Cada código é hospedado na sua própria máquina virtual recém-construída (VM). Dois códigos nunca são colocalizados na mesma VM.
|
|
|
|
Toda vez que você reiniciar um codespace, ele será implantado em uma nova VM com as últimas atualizações de segurança disponíveis.
|
|
|
|
#### Rede isolada
|
|
|
|
Cada codespace tem a sua própria rede virtual isolada. Usamos firewalls para bloquear conexões recebidas da internet e impedir que os codespace se comuniquem entre si em redes internas. Por padrão, os codespace podem fazer conexões de saída na internet.
|
|
|
|
### Autenticação
|
|
|
|
Você pode se conectar a um codespace usando um navegador da Web ou por meio do {% data variables.product.prodname_vscode %}. Se você se conectar por meio do {% data variables.product.prodname_vscode_shortname %}, será solicitado que você se autentique no {% data variables.product.product_name %}.
|
|
|
|
Toda vez que um codespace é criado ou reiniciado, atribui-se um novo token de {% data variables.product.company_short %} com um período de vencimento automático. Este período permite que você trabalhe no código sem precisar efetuar a autenticação novamente durante um dia de trabalho típico, mas reduz a chance de deixar uma conexão aberta quando você parar de usar o codespace.
|
|
|
|
O escopo do token irá variar dependendo do acesso ao repositório onde o codespace foi criado:
|
|
|
|
- **Se você tiver acesso de gravação no repositório**: o token terá como escopo o acesso de leitura/gravação no repositório.
|
|
- **Se você tiver acesso de leitura apenas no repositório**: o token só permitirá que o código seja clonado do repositório de origem. Se você tentar fazer push em um repositório privado onde você só tem acesso de leitura, {% data variables.product.prodname_codespaces %} solicitará que você crie uma bifurcação pessoal do repositório. O token será atualizado para ter acesso de leitura/gravação à nova bifurcação pessoal.
|
|
- **Se você tiver habilitado seu codespace para acessar outros repositórios**: quando um codespace tiver recebido [acesso em outros repositórios](/codespaces/managing-codespaces-for-your-organization/managing-access-and-security-for-your-organizations-codespaces), qualquer codespace criado por meio desse repositório terá tokens de leitura/gravação no escopo do repositório de origem. Além disso, os tokens também receberão acesso de leitura em outros repositórios indicados pelo usuário ou organização.
|
|
|
|
Os administradores da organização especificam quais repositórios devem ser considerados confiáveis. Um administrador pode [optar por não confiar](/codespaces/managing-codespaces-for-your-organization/managing-access-and-security-for-your-organizations-codespaces) em nenhum, em todos ou em alguns dos repositórios da organização. Um codespace não pode ter maiores permissões de acesso aos recursos do que a pessoa que o criou, mesmo que o administrador da organização tenha concedido acesso a todos os usuários e a todos os repositórios.
|
|
|
|
### Conexões de codespace
|
|
|
|
Você pode conectar-se ao seu codespace usando o túnel criptografado TLS fornecido pelo serviço do {% data variables.product.prodname_github_codespaces %}. Somente o criador de um codespace pode conectar-se a um codespace. As conexões são autenticadas com {% data variables.product.product_name %}.
|
|
|
|
Se você precisar permitir acesso externo a serviços em execução em um codespace, você poderá habilitar o encaminhamento de portas para acesso público ou privado.
|
|
|
|
### Encaminhamento de porta
|
|
|
|
Se você precisar conectar-se a um serviço (como um servidor web de desenvolvimento) em execução no seu codespace, você poderá configurar o encaminhamento de portas para tornar o serviço disponível na internet.
|
|
|
|
Os proprietários da organização podem restringir a capacidade de disponibilizar portas de encaminhamento publicamente ou na organização. Para obter mais informações, confira "[Como restringir a visibilidade das portas encaminhadas](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)".
|
|
|
|
**Portas encaminhadas de modo privado**: são acessíveis na Internet, mas somente o criador do codespace pode acessá-las, após a autenticação no {% data variables.product.product_name %}.
|
|
|
|
**Portas encaminhadas publicamente na sua organização**: são acessíveis na Internet, mas somente para os membros da mesma organização que o codespace, após a autenticação no {% data variables.product.product_name %}.
|
|
|
|
**Portas encaminhadas publicamente**: são acessíveis na Internet e qualquer pessoa na Internet pode acessá-las. Não é necessária autenticação para acessar portas públicas encaminhadas.
|
|
|
|
Todas as portas encaminhadas são privadas por padrão, o que significa que você precisará efetuar a autenticação antes de acessar a porta. O acesso às portas privadas encaminhadas por um codespace é controlado por cookies de autenticação, com um período de vencimento de 3 horas. Quando o cookie vencer, você deverá efetuar a autenticação novamente.
|
|
|
|
Uma porta pública encaminhada voltará automaticamente para a privada quando você remover e adicionar novamente a porta, ou se você reiniciar o codespace.
|
|
|
|
Você pode usar o painel "Portas" para configurar uma porta para acesso público ou privado, e você pode parar o encaminhamento de portas quando ela não for mais necessária. Para obter mais informações, confira "[Como encaminhar portas no seu codespace](/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace)".
|
|
|
|
## Práticas recomendadas de segurança para seus codespaces
|
|
|
|
Os codespaces são projetados para ter segurança enrijecida por padrão. Para ajudar a manter esta postura, recomendamos que você siga as práticas recomendadas de segurança durante seus procedimentos de desenvolvimento:
|
|
|
|
- Como em qualquer ferramenta de desenvolvimento, lembre-se de que você só deve abrir e trabalhar em repositórios que você conhece e confia.
|
|
- Antes de adicionar novas dependências ao codespace, verifique se elas são bem mantidas e se lançam atualizações para corrigir quaisquer vulnerabilidades de segurança encontradas nos seus codespaces.
|
|
|
|
### Usando segredos para acessar informações confidenciais
|
|
|
|
Sempre use segredos criptografados quando você deseja usar informações confidenciais (como tokens de acesso) em um codespace. Você pode acessar seus segredos como variáveis de ambiente no codespace, inclusive a partir do terminal. Por exemplo, você pode iniciar um terminal no codespace e usar `echo $SECRET_NAME ` para ver o valor de um segredo.
|
|
|
|
Os valores de segredos são copiados em variáveis de ambiente sempre que o codespace é retomado ou criado e também são sincronizados quando eles são alterados.
|
|
|
|
Os segredos não serão copiados no ambiente quando você não tem acesso de gravação ao repositório do codespace.
|
|
|
|
Para mais informações sobre segredos, consulte:
|
|
- "[Como gerenciar segredos criptografados para seus codespaces](/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces)"
|
|
- "[Como gerenciar segredos criptografados do repositório e da organização para o {% data variables.product.prodname_github_codespaces %}](/codespaces/managing-codespaces-for-your-organization/managing-encrypted-secrets-for-your-repository-and-organization-for-github-codespaces)"
|
|
|
|
### Trabalhando com contribuições e repositórios de outras pessoas
|
|
|
|
Quando você cria um codespace a partir de um branch de PR a partir de uma bifurcação, o token na área do codespace irá variar dependendo se o repositório é público ou privado:
|
|
- Para um repositório privado, o codespace recebe acesso tanto à bigurcação quanto ao principal.
|
|
- Para um repositório público, o código só terá acesso à bifurcação e à abertura de PRs no principal.
|
|
|
|
Também oferecemos proteção adicional nesses cenários não injetando nenhum dos [segredos do codespace](/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces) no ambiente.
|
|
|
|
### Práticas recomendadas adicionais
|
|
|
|
Há algumas práticas recomendadas e riscos adicionais dos quais você deve estar ciente ao usar {% data variables.product.prodname_codespaces %}.
|
|
|
|
#### Compreendendo o arquivo devcontainer.json de um repositório
|
|
|
|
Quando você cria um codespace, se um arquivo `devcontainer.json` for encontrado para seu repositório, ele será analisado e usado para configurar o codespace. O arquivo `devcontainer.json` contém recursos avançados, como a instalação de extensões de terceiros e a execução de código arbitrário fornecido em um `postCreateCommand`.
|
|
|
|
Para obter mais informações, confira "[Introdução aos contêineres de desenvolvimento](/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers)".
|
|
|
|
#### Conceder acesso por meio de funcionalidades
|
|
|
|
Certos recursos de desenvolvimento podem potencialmente adicionar risco ao seu ambiente. Por exemplo, a assinatura, segredos injetados em variáveis de ambiente, acesso de registro autenticado e acesso a pacotes podem apresentar possíveis problemas de segurança. Recomendamos que se conceda acesso apenas àqueles que dela necessitem e que se adote uma política que seja o mais restritiva possível.
|
|
|
|
#### Como usar extensões
|
|
|
|
Qualquer extensão adicional do {% data variables.product.prodname_vscode_shortname %} que você tenha instalado tem o potencial de introduzir mais risco. Para ajudar a mitigar esse risco, certifique-se de que você só instale extensões confiáveis, e que elas sejam sempre atualizadas.
|