Ensaie a remediação de segredos com segurança
Excluir uma credencial vazada do arquivo mais recente não a revoga nem a remove do histórico. O provedor da credencial é a autoridade sobre sua validade.
[!CAUTION] Nunca crie nem faça commit de um token real para este exercício. Não contorne a proteção de push, publique um repositório intencionalmente vulnerável nem cole valores de segredos no Copilot. O laboratório principal é uma simulação e não contata nenhum provedor.
Resumo do laboratório

Ilustração conceitual original (SVG)
| Em resumo | Sua rota |
|---|---|
| Nível e tempo | 300; 45 minutos (estimativa de facilitação) |
| Ação inicial | Use apenas o marcador de treinamento e diferencie a simulação da ação do provedor. |
| Materiais do aluno | Baixe 12-secrets.zip |
| Workspace | Abra a raiz do kit extraído; execute a baseline de . relativa a essa raiz |
| Verificação inicial esperada | Os testes base fornecidos passam. |
| Ajuda de configuração | Baixe, extraia, Git local e GitHub opcional |
[!NOTE] Remover um literal não revoga sua autoridade.
Conceitos · Primeira tarefa · Lista de evidências · Redefinir
Objetivos de aprendizagem
- Separe triagem, revogação, remediação de código, revisão da exposição e prevenção.
- Use evidências para justificar o encerramento de um alerta.
- Reconheça o que uma simulação local não consegue comprovar.
Antes de começar
Prepare 12-secrets com a configuração comum.
Node 24 é suficiente. A verificação de segredos em repositórios privados depende do plano e da política;
não torne um repositório público para habilitar uma funcionalidade do laboratório.
Conceitos e casos de uso
| Ação | Estabelece | Não estabelece |
|---|---|---|
| Remover um literal | O arquivo atual não o contém mais | Revogação pelo provedor |
| Revogar/rotacionar com o proprietário | A credencial antiga perde autoridade | Que nenhum acesso não autorizado ocorreu no passado |
| Revisar exposição/histórico | Escopo da exposição e consumidores dependentes | Exclusão automática de todas as cópias remotas |
| Fechar um alerta | Um encaminhamento documentado | Segurança se nenhuma mitigação foi realizada |
| Proteção de push | Prevenção para padrões com suporte | Detecção de todos os segredos possíveis |
Cenário do exercício
A fixture descreve uma exposição simulada de token de serviço usando somente o valor
TRAINING_ONLY_NOT_A_CREDENTIAL. Intencionalmente, não contém token ativo nem credencial
no formato de um provedor. Sua saída é um plano de resposta a incidentes, não uma alegação de que
o GitHub detectou ou revogou alguma coisa.
Tarefa 1 - Leia o incidente e estabeleça o escopo
-
Inspecione
incident.jsoneresponse.json. -
Identifique proprietário, consumidor hipoteticamente afetado, escopo da exposição e evidências ausentes.
-
Em Ask:
This is a simulation with no real credential. Draft the triage questions: owner, provider, exposure locations, validity, dependent consumers, and possible misuse. Do not request or print a token value. -
Mantenha os fatos não verificados identificados como perguntas.
Tarefa 2 - Planeje a remediação começando pela revogação
Use esta sequência:
---
config:
theme: base
look: classic
themeVariables:
darkMode: false
background: "#ffffff"
primaryColor: "#f5f5f5"
primaryTextColor: "#111111"
primaryBorderColor: "#555555"
secondaryColor: "#e0e0e0"
secondaryTextColor: "#111111"
secondaryBorderColor: "#666666"
tertiaryColor: "#bdbdbd"
tertiaryTextColor: "#111111"
tertiaryBorderColor: "#444444"
lineColor: "#444444"
textColor: "#111111"
mainBkg: "#f5f5f5"
nodeBorder: "#555555"
clusterBkg: "#ffffff"
clusterBorder: "#999999"
edgeLabelBackground: "#ffffff"
actorBkg: "#e0e0e0"
actorBorder: "#555555"
actorTextColor: "#111111"
actorLineColor: "#777777"
signalColor: "#333333"
signalTextColor: "#111111"
labelBoxBkgColor: "#f5f5f5"
labelBoxBorderColor: "#777777"
labelTextColor: "#111111"
loopTextColor: "#111111"
activationBkgColor: "#bdbdbd"
activationBorderColor: "#555555"
noteBkgColor: "#f5f5f5"
noteTextColor: "#111111"
noteBorderColor: "#777777"
attributeBackgroundColorOdd: "#f5f5f5"
attributeBackgroundColorEven: "#e0e0e0"
---
stateDiagram-v2
accTitle: Ciclo simulado de remediação de segredos
accDescr: A triagem leva à revogação coordenada com o proprietário, à correção dos consumidores, à revisão da exposição e à prevenção antes de um encerramento documentado.
state "Triagem" as Triage
state "Revogar" as Revoke
state "Substituir" as Replace
state "Revisar exposição" as ReviewExposure
state "Prevenir" as Prevent
state "Encerrar" as Close
[*] --> Triage
Triage --> Revoke: Coordenar com o proprietário da credencial
Revoke --> Replace: Atualizar os consumidores afetados com segurança
Replace --> ReviewExposure: Inspecionar o histórico e as evidências de acesso
ReviewExposure --> Prevent: Adicionar proteções e verificação
Prevent --> Close: Registrar o encaminhamento
Close --> [*]
Legenda. Os nós arredondados são etapas da resposta, as setas mostram sua ordem e os círculos preenchidos indicam o início/fim do exercício. Os rótulos descrevem o ponto de controle de evidências.
Explicação. A sequência impede que “excluir a string e fechar o alerta” seja considerado remediação. Em um incidente real, a revogação e a coordenação com os consumidores seguem o processo de incidentes do proprietário; este diagrama não executa essas operações.
- Adicione os seis IDs de etapas da fixture a
response.jsonna ordem revisada. - Para cada um, declare as evidências que seriam necessárias.
- Inclua um plano de interrupção para os consumidores afetados. Nunca registre a credencial substituta em logs.
- Proponha somente uma alteração de código de escopo definido: ler um valor nomeado de configuração, falhar claramente se ele estiver ausente e evitar um valor alternativo de “desenvolvimento” fixo no código.
Tarefa 3 - Verifique o plano, não um incidente fabricado
node --test --test-concurrency=1 policy.test.mjs
node verify.mjs
Os testes da política devem passar. O verificador de resposta rejeita o projeto inicial em branco; após a conclusão, valida somente a ordem das etapas e as descrições das evidências.
Depois, coloque temporariamente o encerramento antes da revogação. Confirme que o verificador falha e restaure o plano correto.
Tarefa 4 - Inspeção autorizada opcional no GitHub
Se você já possui um repositório com alertas legítimos e tem autorização para inspecioná-los, revise a aba Security e registre somente metadados com informações sensíveis ocultadas. Não crie um alerta vazando um token. Mantenha as ações no provedor manuais e aprovadas separadamente. Use os motivos de alerta documentados atualmente; não descarte um segredo real como “usado em testes”.
Se o Actions, o faturamento ou a política bloquear a funcionalidade, a simulação continua utilizável. Registre “Operações do GitHub/provedor não executadas” nas evidências.
Verifique seu trabalho
- Nenhuma credencial foi gerada, incluída em commit, impressa ou enviada a um modelo.
- A resposta separa revogação, substituição, histórico/exposição e prevenção.
- Fechar um alerta exige evidências, não a ausência de um literal.
- Uma resposta reordenada falha localmente.
- Os resultados da simulação não são apresentados como verificação do provedor ou do GitHub.
Solução de problemas
Não se espera um alerta do GitHub para o marcador de treinamento. Um commit mais recente limpo não comprova que o histórico esteja limpo. Não reescreva o histórico Git compartilhado nem remova a credencial de outra pessoa sem o processo de incidentes aprovado pelo proprietário.
Prática independente
Escreva uma lista de verificação de implantação para substituir um segredo revogado sem expor o substituto nos logs. Use valores provisórios e nenhuma infraestrutura real.
Restauração
Restaure somente response.json na sua cópia. Feche a sessão de aprendizagem. Não há
credenciais, repositórios, serviços pagos ou recursos de nuvem a remover no laboratório principal.