Skip to content

Uma meneira de integrar mais segurança ao seu CI e seu código!

Notifications You must be signed in to change notification settings

SecurityForCloudBuilders/securePipeline

Repository files navigation

securePipeline

Uma meneira de integrar mais segurança ao seu CI e seu código!

Cloud Formation Scan

snykpipe

Você precisará:

  • 1 Conta da AWS com usuário com direitos de administrador e com credencias de Git para o AWS CodeCommit;
  • Ter o Git instalado localmente na sua máquina;
  • 1 Conta já criada no Trend Micro Cloud One ;
  • Ter o Trend Micro - Smart Check instalado e pronto;
  • Ter um Cluster no AWS Elastic Container Service - ECS e um Service nesse cluster já criado;

Links para refêrencia:

Essa demo irá criar:

  • 1 Template no AWS CloudFormation ou 3 Templates se usar todos os CFTs nesse Repositório;
  • 1 Repositório no AWS CodeCommit;
  • 2 Build/ Projetos de Compilação no AWS CodeBuild;
  • 1 Pipeline no AWS CodePipeline;
  • 1 Bucket no AWS S3;
  • 11 Parâmetros no AWS Systems Manager;
  • 2 Roles no AWS IAM Role;
  • 1 Registry Privado e 1 Repositório no AWS ECR - Elastic Container Registry;
  • 1 Tópico no SNS



Como Usar:


👇 CONFIGURAÇÕES ADICIONAIS/ OPCIONAIS
⚡ USANDO O AWS CODECOMMIT

Caso você já tenha algum repositório no CodeCommit, pode pular essa etapa e testar o seu código já existente.


1- Clone o Repositório para a sua máquina: https://github.com/SecurityForCloudBuilders/Protect-a-Vulnerable-WebApplication.git

git clone https://github.com/SecurityForCloudBuilders/Protect-a-Vulnerable-WebApplication.git

2- Execute o template codecommit.repository.template.yaml na Console da AWS -> Cloud Formation

codecommitFormation

nomepilha

tags

criarpilha

2.5- Espere até que essa Stack apareça como "CREATE_COMPLETE"

createcomplete

3- Vá até o serviço "CodeCommit", nele irá aparecer um novo repositório vazio chamado "MyVulnerableApp"

servicecodecommit

4- Nessa mesma tela, do lado direito do nome desse repo, clique no botão azul "HTTPS" que aparece abaixo da frase "Clonar URL"

repo

5- Também Clone esse Repositório para a sua máquina. Copie todo o conteúdo do primeiro repo (Protect-a-Vulnerable-WebApplication) e cole nesse diretório/ repositório (MyVulnerableApp)

diretorio

6- Faça o push para o AWS CodeCommit do repositório (MyVulnerableApp)

git add .

git commit -m "My first Commit"

git push

🍕 CRIAÇÃO DE UM REGISTRY PRIVADO NO AWS ELASTIC CONTAINER REGISTRY (ECR)

Caso você já tenha alguma imagem no ECR, pode pular essa etapa e testar a sua imagem já existente.

1- Execute o template ecr.registry.template.yaml na Console da AWS -> Cloud Formation

ecr1

2- Esse template precisa que você providencie 2 parâmetros. O primeiro é o nome que quer para o seu Repositório RepositoryName e o outro é o ECRScan com os valores de [true] ou [false] para caso queira utilizar também o escaneamento de imagens disponivel no próprio ECR

ecr2

ecr3

ecr4

3- Espere até que essa Stack apareça como "CREATE_COMPLETE"

ecr5

4- Para ir até o Registry criado, vá até o serviço "Elastic Container Registry", para isso, nessa mesma tela do Cloud Formation e no template que acabou de ser criado, clique na aba "Saída" ou "Outputs", e clique no link que aparece ao lado do nome "RegistryName"

ecr6

5- Clique no botão "View push commands", siga as instruções que aparecem na tela e faça o push da sua imagem;

ecr7

ecr8

5.5- Caso queira, nesse repositório você tem um Dockerfile para usar como exemplo: https://github.com/SecurityForCloudBuilders/Protect-a-Vulnerable-WebApplication/blob/master/Dockerfile




✋ USANDO O AWS CODEBUILD E CODEPIPELINE

7- Agora, faça o deploy do template "main.pipeline.template.yaml". Para isso, vá até o serviço do "Cloud Formation"

pipeformation

8.5- Esse template precisa que você providencie 15 parâmetros.

  • Para encontrar o Snyk Token.

  • Para pegar o seu Smart Check Token, consulte a API.

  • E no caso do parâmetro "SmartCheckURL" coloque a URL do Smart Check mais /api/scans.

    Por exemplo: https://smartcheck.example.com/api/scans
    

param

iamcreate

7.5- Espere até que essa Stack apareça como "CREATE_COMPLETE"

createcomplete

8- Para ver o resultado do Scan, vá ate o serviço "CodePipeline", para isso, nessa mesma tela do Cloud Formation e no template que acabou de ser criado, clique na aba "Saída" ou "Outputs", e clique no link que aparece ao lado do nome "SecurePipeline"

templateoutputs

9- Você será redirecionado para o Pipeline criado que já está sendo executado. Na segunda etapa com o nome "Scan-The-Code-With-Snyk-CLI", clique em detalhes

startpipe

goingpipe

10- Você será redirecionado para o "CodeBuild" e diretamente na compilação onde acontece o escaneamento do código. Vá até as últimas linhas do Log da Compilação.

11- Nessas últimas linhas verá que foi gerado um link "Explore this snapshot at https://app.snyk.io/org/mais-alguma-coisa-aqui", copie esse link e cole no seu navegador.

resultscan

12- O report com os findings estará todo detalhado nele.

snyk

13- Agora será a etapa de Aprovação Manual, você reberá um email (no endereço de email que colocou nos paramêtros do Template) com o link do Pipeline para fazer a aprovação ou se ainda estiver na console, clique no botão "Revisão". Coloque uma justificativa, e "Aprove" ou "Rejeite". Faça essa decisão baseado no número de Vulnerabilidades achadas na etapa anterior!

pipe28

pipe29

pipe30

14- Caso você aprove, irá passar para a próxima etapa. Caso rejeite, irá falhar o Pipeline e não avançará para a próxima etapa.

pipe31

15- Logo após a fase "Scan-The-Code-With-Snyk-CLI" for executada com êxito. A terceira etapa desse Pipeline começara a executar, e a fazer o escaneamento da Imagem de um container. Clique em detalhes.

pipe20

pipe21

16- Você será redirecionado para o "CodeBuild" e diretamente na compilação onde acontece o escaneamento da imagem. Vá até as últimas linhas do Log da Compilação.

17- Nessas últimas linhas verá que aparecerá:

pipe22

17.5 - Vá até a console do SmartCheck , na coluna esquerda, clique em "Scans" . A imagem já estará sendo escaneada. Clique no Scan dessa imagem ou espere ela concluir e veja os resultados do Scan.

pipe19

pipe23

18- Logo após a conclusão do Scan, será feito o build e o push da imagem para o Registry no ECR.

pipe25

pipe26

pipe27

19- Agora será a etapa de Aprovação Manual, você reberá um email (no endereço de email que colocou nos paramêtros do Template) com o link do Pipeline para fazer a aprovação ou se ainda estiver na console, clique no botão "Revisão". Coloque uma justificativa, e "Aprove" ou "Rejeite". Faça essa decisão baseado no número de Vulnerabilidades achadas na etapa anterior!

pipe32

pipe33

20- A próxima etapa é fazer o Deploy para no Fargate no ECS. Para isso, você terá que colocar o nome do seu Container e qual o Registry que ele está no arquivo imagedefinitions.json . Clique em "Detalhes" para ser redirecionado para o serviço do AWS ECS - Elastic Container Service.

pipe34

pipe35

pipe36



WARNING:

    - Este projeto é para o propósito de Demostrações! 
    - Não foi criado para ser usado em produção ou com dados sensiveis!