# Versões imutáveis

Saiba mais sobre versões imutáveis e como elas podem ajudar a manter a integridade da cadeia de fornecedores de software.

**Versões imutáveis** são versões em que os ativos e a marca Git associada não podem ser alterados após a publicação. O uso desse tipo de versão aumenta a segurança bloqueando ataques da cadeia de suprimentos. Os invasores não podem:

* Injete vulnerabilidades ou malware nas versões atuais do projeto.
* Faça alterações em recursos e tags que possam interromper os fluxos de trabalho dos desenvolvedores.

## O que os lançamentos imutáveis protegem

Ao ativar versões imutáveis, as seguintes proteções são aplicadas:

* **As marcas git não podem ser movidas**: depois que uma versão imutável é publicada, sua marca Git associada é bloqueada para uma confirmação específica, não pode ser alterada e não pode ser excluída enquanto a versão existe. Se você excluir a versão imutável, poderá excluir a tag, mas não poderá reutilizar o mesmo nome de tag.
* **Os ativos de versão não podem ser modificados ou excluídos**: todos os arquivos anexados à versão (como binários e arquivos) são protegidos contra modificação ou exclusão.

Além disso, a criação de uma versão imutável gera automaticamente um **atestado de versão**, que é um registro criptograficamente verificável de uma versão que contém a marca de versão, o SHA de commit e os ativos de versão. Os consumidores podem usar esse atestado para garantir que as versões e artefatos que estão usando correspondam exatamente às versões publicadas GitHub .

> \[!NOTE]
> As versões imutáveis incluem proteção contra ataques de ressurreição de repositório. Mesmo que você exclua um repositório e crie um novo com o mesmo nome, não será possível reutilizar tags que estavam associadas a versões imutáveis no repositório original.

Se uma versão for imutável, você verá <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-lock" aria-label="lock icon" role="img"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>**Imutável**" abaixo do título na página de lançamento.

## Práticas recomendadas para publicação de versões imutáveis

Recomendamos que você use o fluxo de trabalho a seguir para publicar uma versão imutável.

1. Crie a versão como um rascunho.
2. Anexe todos os recursos associados à versão preliminar.
3. Publique a versão do rascunho.

Isso garante que todos os ativos estejam disponíveis antes que a liberação se torne imutável, evitando a necessidade de contornar restrições de imutabilidade.

## Próximas etapas

Para saber como habilitar versões imutáveis para seu repositório ou organização, confira [Como impedir alterações em suas versões](/pt/code-security/how-tos/secure-your-supply-chain/establish-provenance-and-integrity/prevent-release-changes).

Para saber como garantir que uma versão e os ativos locais não tenham sido alterados, confira [Como verificar a integridade de uma versão](/pt/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/verify-release-integrity).