 Se estiver algum problema, vocês dão grito aí. Ok. A gente já tá aparecendo. Aí pra vocês. Eu acho que sim. Estou aqui aparecendo. Acho que o meu vídeo não... Você tá aparecendo, Roxo. O Leonardo tá... Ok. Boa tarde, pessoal. Dá pra estar chegando aí também. Vou compartilhar aqui já a tela. O Leonardo eu não tô ouvindo, tá? Você já fundou alguma coisa? Leonardo? Posso ir começando aqui também. Tá bom. Eu vou sair aqui qualquer coisa que vocês chamam. Aqui a gente vê o que que faz, tá bom? Tá ok. Vou iniciando aqui. Vou apresentar aqui. Espero que tá todo mundo bem. Muito obrigado pela oportunidade. É um prazer estar aqui falando com vocês sobre um tema tão importante. É... Que é circuito de software. É um assunto bem importante e sobre segurança. Ainda mais a gente falando de cadeias produtivas de software, né? Isso é extremamente importante. Então, primeira coisa que eu vou me apresentar. Espero que o Leo já tenha chegado. E também até o fim da minha apresentação. Bom. Meu nome é Robson Firmino. Trabalho mais de 10 anos aí com desenvolvimento de software. Trabalhei muito tempo com integração de software. Trabalhei com plataformas de integração quando surgiu lá a arquitetura orientada a serviços, o famoso SOA. Trabalhei em vários anos com Java. Arquitetura de software baseada em Java. Trabalhei também... Hoje, trabalho com uma especialista de development no Inter. Tô gostando bastante. Uma empresa muito dinâmica. A gente precisa trabalhar. Também sou o pai de dois filhos. Você tem o Samuel de 12 anos e a Fernanda de 4 anos. E como gostei que o rapaz falou mais cedo, nos tempos vagos, eu trabalho com outras coisas. No tempo oficial, estou com eles. Vamos lá. O Leo. Ele chegou aí. Ele está aí e segue. Vamos falar um pouco da nossa agenda. O que é o software Secure Supply Chain? Vamos explicar um pouco o que é essa cadeia. Exemplos de ataques. O S-Bom, que é algo interessante para a gente entender e uma ferramenta chamada Zift. Assinatura de imagens que é talvez o carro-chefe que nós vamos falar. Essa ferramenta que assina imagens. Validação de políticas e no final, a gente vai falar um pouco vamos ter um demo aqui, espero entender tudo certo também, que é a parte prática do que nós vamos falar. Deixa eu ver se o Leo já voltou aqui. Já voltou, Leon? Ainda não. Acho que não. Vamos seguindo aqui. Bom, se a gente pegar aí nós temos visto nos últimos tempos vários casos de acesso a software de casos de segurança a gente colocou alguns exemplos do que tem acontecido no ambiente corporativo. Hoje, não somente nós temos um caso de hacker em um local tentando acessar uma plataforma mas existem problemas de hackers. Existem hoje plataformas de hackers ou seja, existe na verdade muito bem sincronizado trabalho de hacker para capturar dados para também sequestrar dados de empresas e com isso ganhar dinheiro a respeito disso dessa forma fazendo aí o sequestro. A gente tem um tomate prejuízo com cybercrime no mundo até 2025 taberando aí 10.5 trilhões isso aí nós temos uma fonte que assabe security ventures que previo isso. A gente acredita que esse número aí seja até um pouco maior do que isso seja um pouco, isso aí é uma previsão mas acreditamos que isso possa ser até maior. E esse aí é um extremo motivador para que possamos criar mecanismos e ferramentas para que a cadeia de software seja segura, para que ela seja feita de forma que tenha os mecanismos cada vez mais amigáveis para que a cadeia de software dentro de Kubernetes seja segura. Bom, quando a gente fala de supply chain nós temos aí uma cadeia ou seja, uma cadeia de desenvolvimento onde envolve pipeline e desenvolve alguns passos esses passos que são já hoje já faz. Nós temos um desenvolvedor que desenvolve código de alguma forma esse desenvolvedor ele gera código esse código ele sobe lá para um git, para uma ferramenta onde ele armazena esse código ele pode então fazer o build desse código, ou seja, ele vai compilar vai gerar pacotes desse código nesse build também serão envolvidas se o pessoal lembrar aí de Java por exemplo, vamos ter várias dependências, a gente constrói software em cima de software então vamos ter vários frameworks várias dependências que fazem o meu software ser gerado aí. No final disso eu vou gerar um pacote disso tudo vou fazer um pacote disso tudo e vou no final, alguém vai consumir isso dentro da linha de raciocínio que nós estamos colocando aqui nós vamos fazer exatamente o desenvolvimento o código fonte e qual vai ser os nossos pontos chaves que o nosso consumidor vai ser o Kubernetes está dentro da cadeia, nós estamos comentando aqui bom, quais vão ser os nossos pontos chaves aqui nós poderíamos falar aqui de alguns pontos nós vamos definir três locais onde nós vamos falar mais aqui dentro da nossa palestra então a gente vai focar aqui no empacotamento ou seja, hoje a gente empacota software dentro de imagens no consumidor ou seja, eu vou gerar imagens assinadas essa ideia eu vou ter um consumidor lá eu vou ter uma política de validação para esse consumidor, ou seja, dentro do Kubernetes eu só vou subir pacotes, ou seja, nesse caso aqui imagens vou subir recursos que sejam validados sejam assinados e também eu consigo nas dependências assinar essas dependências através do S-bon então a gente vai falar um pouquinho sobre esses itens aqui as letras A, B, até E elas dizem para a gente quais são os vários passos, os vários momentos que podem ser atacados numa cadeia então, desde o desenvolvimento se a gente não fizer um code review eu posso ser atacado por um hacker como também, eu posso não ser atacado por um hacker mas eu tenho um código que foi mal escrito que oferece vulnerabilidades então se a gente pegar esse ponto aqui por exemplo, seria um ponto onde que ou um hacker, ou talvez até a própria má construção do meu software ela indica algum problema de fonte que pode ser raqueado e o meu código pode ser substituído de alguma forma então aqui eu tenho vários pontos e a gente então dentro do nosso exemplo aqui a gente vai trabalhar com essa com esses alguns pontos aqui né, onde que vai encaixar o B, o I, o DOE o GH e o E bom, então que é esse bom pessoal, tá tudo bem a informação como eu vindo tá tudo bem tá tranquilo sim só o Leonardo que não voltou aí eu estou de olho aqui se ele voltar eu puxo, mas tá tranquilo ah, então tá bom bom, então o que que é esse bom o que é esse bom então é software view of materials do que é feito o meu software na verdade, o que acontece são informações, são metadados feito das minhas dependências ou seja, quando a gente vai construir um software e eu vi esse exemplo, eu gostei muito e se a gente pega qualquer dependência ou em dentro desse software a gente empacota dentro do nosso software é a mesma coisa de a gente pegar por exemplo um pendrive na rua chegar na nossa empresa e espetar esse pendrive na nossa equipamento, na nossa rede e nós estamos incluindo vulnerabilidades que a gente não sabe a respeito do que aquele software é feito então o esse bom, ele é uma maneira da gente saber ter informações a respeito de todo esse pacote, de toda essa cadeia, ele vai me oferecer metadados a respeito da minha do meu framework, das minhas minhas pacotes que estão sendo anexadas ao meu software das minhas dependências o que a gente precisa, a gente precisa que meu pacote seja cada vez mais transparente, é um processo seguro de desenvolvimento então eu não posso ter na minha cadeia de produção eu tenho que gerenciar esse risco eu tenho que ter esse gerenciamento de vulnerabilidades e o S-Bom é um padrão formatado onde que eu vou conseguir ter essas informações vou conseguir alexar esses artefatos então ou seja, nós vamos construir uma imagem onde dentro dessa imagem eu vou ter o S-Bom que me dê informações e através dessas informações metadados eu consigo analisar e verificar se aquela dependência ela está coerente com o meu software então aqui tem um exemplo do SPDX, o documento com tênis, o que que esse S-Bom tem? documento creation information package information file information o snippet information por exemplo, eu vou saber qual é a linguagem que aquele packet foi criado aquela dependência foi criada e daí vai bom, então aqui está um exemplo do S-Bom então aqui vai ter um software vai ter as informações metadados então aqui você vai ter identifier description a programming language então você vai saber que informações em respeito daquela daquela sua dependência bom, então o S-Bom existe uma ferramenta chamada ZICT que ela cria S-Bom ela consegue fazer isso então a gente deixou aqui um exemplo dela sendo executada e quem tiver mais interesse em buscar você pode procurar sobre essa ferramenta chamada ZICT que ela vai ter essas informações sobre o S-Bom bom, então chegando aqui nas assinaturas de imagens docker motivações então por que eu assino alguma coisa é pra que eu estabeleça confiança pra eu ter reconhecimento daquele processo então hoje não vale mais eu pegar uma imagem qualquer no caso aí que eu falei em respeito de pegar um pendrive e subir no ambiente eu pegar uma imagem qualquer e subir no meu ambiente com bernéx, se extremamente eu estou adicionando vulnerabilidades e estou deixando minha cadeia extremamente fragilizado então eu preciso um dos meios de estabelecer confiança é fazer essas assinaturas estabelecer proveniência ou seja, se eu estabeleço uma assinatura de quem qual que é a origem daquela informação eu sei quem engerou aquela imagem então eu tenho essa informação definir as testações verificação de autenticidade ou seja, eu defino atestados pra aquela pra aquela imagem e existem várias ferramentas então existem algumas ferramentas que trabalham nesse sentido a gente utilizou aqui pra fazer um exemplo e pra fazer assinatura de imagens, uma ferramenta chamada cossain vamos falar um pouquinho sobre o cossain Oi pessoal, vocês me escutam agora? Te escuto Leão Estão me vendo também? Vendo Tô te vendo Leão Tá, legal Desculpa pessoal, falha catastrófica que com certeza não roda no bernéx aqui o meu crome eu posso apresentar essa parte o cossain depois se assumo Tá bom Desculpa pessoal pelas falhas técnicas bom retomando aí do ponto que o cossain o que é o cossain na verdade né como parte desse ecossistema de cossain o cossain é para os seus times trabalharmos de forma segura principalmente com penceurs essa ferramenta então o cossain o grande objetivo dele é que ele fornecesse uma sialai que fosse fácil, intuitiva e principalmente que fornecesse os princípios de segurança básico para o pessoal conseguir assinar artefatos então quando a gente fala relacionados ao supply chain e o hobson já explicou isso a gente está falando de imagens nós estamos falando sbom nós estamos falando de scan de vulnerabilidades e o cossain hoje é uma ferramenta que está pegando muita importância principalmente depois que a gente viu todos esses ataques relativos a ransomware e outros aí famosos que está pegando bastante relevância no mundo open source e até nas empresas como uma alternativa para a gente conseguir trazer um pouco dessa verificabilidade para containers de imagens doker no geral pode para frente o processo de assinatura não é muito diferente do que a gente já conhece quando você quer assinar qualquer tipo de artefato você sempre vai trabalhar com as questões de chaves então você tem a chave privada que é de posse quem não é transferida é de posse do proprietário você tem a chave pública e qualquer um pode acessar e quando você quer assinar qualquer tipo de artefato você vai utilizar as combinações de chaves públicas e privadas de forma que você assina com a chave privada e transmite a chave pública e aí a pessoa pode utilizar a chave pública para validar se a assinatura for feito por você ou não próximo e quando a gente está falando de assinatura não é só uma questão de imagens é muito importante a gente ter em mente que daqui para frente o supply chain seguro de ponta a ponta vai ser cada vez mais demandado então a gente tem que ter ferramentas que suportem a gente assinar a imagem rodar a scan de vulnerabilidades assinar essa scan os resultados de teste o s-bon e outros artefatos que qualquer empresa achar relevante para garantir a confabilidade daquele produto de software que está sendo fornecido instalado no seu Kubernetes a próxima roda a gente criou para efeito de demo um repositório e vocês podem depois acessar aí lá nesse repositório a gente de forma bem simples para demonstrar como é que é a geração desse bom via GitHub Action na verdade como é que você gera esse bom como é que você assina uma imagem enfim podem ficar à vontade e contribuir lá também bom do ponto de vista de política de validação o que é importante é uma vez que você assinou essa imagem via pipeline sei lá de LED no Jenkins tipo de ferramenta de CI antes de você aplicar essa imagem no seu Kubernetes você vai ter que fazer validação e o Kubernetes tem seus próprios mecanismos para garantir que o que está entrando no cluster é válido esse mecanismo é bem conhecido ou Admission Controller e tem um software open source também atrelado a CNCF que é o Gatekeeper então qualquer ideia do Gatekeeper ele é uma implementação de Admission Controller que permite que você crie políticas e validações e constraints de forma bastante flexível ele é rápido tem uma linguagem é rápido nem tão rápido para você aprender para você manter para você implementar novas regras tem bastante facilidade e é totalmente integrado com o ecossistema de Kubernetes então qualquer administrador de Kubernetes consegue instalar o Gatekeeper e em poucas horas já tem alguma coisa funcional isso é importante para começar a testar pode ir para o próximo round bom do ponto de vista de 6cd a gente quis ilustrar aqui onde que entra na verdade o pipeline de 6cd a integração cotina é onde que entraria essa parte de assinatura então nessa figura de exemplo como é que funcionaria o fluxo o desenvolvedor faz o comit do código por exemplo no git no caso git hub essa figura isso vai provocar a execução de um pipeline esse pipeline vai assinar a imagem possivelmente com a sua própria chave seu próprio par e vai solicitar nesse caso por exemplo através do Gira que alguém um ser humano aprove a assinatura dessa imagem então essa pessoa vai receber essa tarefa vai aprovar e interagindo lá com o ecossistema do Cossine Sigstore essa imagem vai ser assinada utilizando padrão open de connect vai ser atrelada um e-mail né se vocês depois tiverem a curiosidade de olhar o padrão Kiles que o pessoal está implementando é justamente a possibilidade de você assinar não usando um par de chaves públicas e privadas mas usando certificados gerados, atrelados a sua identidade na web por exemplo login no Google poderia te identificar uma vez que essa imagem assinada o pipeline termina é criada no repositório lá do docker hub com todas as suas assinaturas até a próxima e do ponto de vista de entrega contínua é onde entrou de fato a validação dessas assinaturas imagina que um administrador ou um outro desenvolvedor vai rodar um pipeline de entrega contínua faz referência a uma imagem que está ou não assinada vai entrar no cuba IPI server e já está configurado para rodar o gatekeeper o gatekeeper vai fazer a avaliação das políticas que estão configuradas e se tudo der certo se estiver dentro do que é esperado essa aplicação vai ser aprovada por exemplo, a assinatura não existia ou tivesse sido forjada por outra pessoa a política vai recusar isso então nós vamos ver isso agora no demo isso aí bom, então um demo aqui a gente colocando em prática que a gente tentou explicar nos slides então a gente vai pegar a parte de uma imagem que foi gerada a gente passou para aquele processo da pipeline assinou, então a gente vai demonstrar e rodar alguns comandos que serão também validados pelo gatekeeper mais para frente então a gente montou um demo que não ia ser de nada então a primeira coisa, a gente estava lidando checando se a imagem aquela versão 0041 foi assinada por exemplo por alguém, se alguém aprovou a assinatura daquela imagem então eu preciso ter por exemplo aqui um e-mail como o Leo falou, então a própria chave do Google essa imagem que a gente buscou através do cosine ela foi aprovada a assinatura dela que é o meu e-mail então que ele trouxe essas informações eu poderia ter, além deste meio eu poderia ter vários outros eu poderia adicionar essa imagem num fluxo onde eu vou ter vários aprovadores de assinatura e vai validar essa imagem além disso também, o Leo chegou a comentar que nós temos uma assinatura que ela é feita pelo próprio gatehub através da chave pública que a gente gerou lá então a gente vai validar aqui pesquisar para a gente checar e a imagem aqui ela está assinada pelo próprio gatehub Actions que foi quem rodou para atuar então a gente tem informação que ele foi realmente assinar e junto com essa assinatura a gente tem o chat que é exatamente o git chat que é a informação de quando o desenvolvedor fez o commit então consigo também bater essa informação para saber se é exatamente a mesma coisa que não houve nenhuma mudança disso ao longo do tempo se alguém conseguiu hackear e alterar isso então a gente tem informações valiosas para a gente outra informação que está anexada a essa imagem é o s-bon são aquelas informações que a gente falou que a gente pode adicionar para as nossas dependências então junto a essa imagem que é assinada nós temos todo o s-bon relacionado a ela então aqui o s-bon inter aqui aqui ele vai trazer para a gente são metadados relacionados as dependências daquela imagem então aqui a gente tem muitas informações o name, a version o tipo, então aqui eu poderia por exemplo bloquear, criar uma validação que bloqueasse alguma dependência que a gente sabe que não deve entrar nessa imagem então eu gosto de sair aqui as informações são muitas bom, então a gente vai para a parte de implementação da política como o Leo comentou a gente usou o gatekeeper e no gatekeeper aqui ele usa uma linguagem declarativa o opa e basicamente aqui nós fizemos três violations você escreve violation aqui no opo então a gente escreveu três violations fala o seguinte ela verifica se tem um e-mail anexado lá no início da apresentação do demo a gente viu que tinha o meu e-mail o Robson termina a Robson e-mail anexado ele vai verificar se existem e-mails anexados como aprovadores dessa assinatura as próximas duas violations ela vai validar se o repositório que aquela imagem está vindo ela é um repositório que eu confio como eu comentei, se não é alguém que pegou alguma coisa uma imagem qualquer e está subindo dentro do meu governete então eu valido tanto o containers quanto o init containers para validar se estão dentro de um repositório que eu confio e essas informações que a gente escreveu esse código escrito ele vai ser batido aqui, vai ser validado contra uma constrante essa constrante do gatekeeper ela vai validar o seguinte se o meu namespace é a production se o meu e-mail é o leo gsilva se existe esse e-mail na minha assinatura é esse docker.io nesse caso a gente pode até notar o seguinte a minha imagem a imagem que eu estou validando aqui ela está assinada por Robson termina e aqui eu estou batendo aqui contra o e-mail que é o leo gsilva então provavelmente que a minha imagem não vai conseguir subir no meu ambiente governete porque está fora aqui do que deveria estar não está de acordo com as políticas então vou tentar fazer que eu deploy de um pod que não assinado de uma imagem não assinado só mostrando aqui o pod que eu estou tentando subir é uma imagem que eu estou tentando subir que é uma imagem do alpinel latest lá que não tem nenhuma assinatura que nada a ver com o meu governete nada a ver com minha linha produtiva a minha cadeia de suprimentos aqui então se eu tentar subir ela aplicar essa imagem no meu governete o que vai acontecer ele vai bater constrante de acordo com o que eu escrevi no opa e o que ele vai fazer para mim opa essa imagem você deve provar um e-mail Robson termina essa imagem provar um e-mail qualquer e ela não é de repositórios válidos ela é do repositório docker.io barralpy não é de um repositório que eu aceite só que a gente pode que eu posso mudar essas políticas de maneira bem rápida bem prática, bem dinâmica então se eu pegar meu gatekeeper eu vou atualizar a política para o meu e-mail Robson termina eu vou demonstrar para vocês que é fácil e simples a gente fazer uma atualização de configuração das políticas do gatekeeper vou aplicar essa nova configuração ok, já está aplicada no ambiente e agora o que eu vou tentar fazer vou pegar a imagem assinada que nós temos assinada com o meu aprovê e assinatura então quando eu aprovo a assinatura e o cosine assina para a gente através daquele método Keyless então vou tentar fazer o deploy dessa imagem no nosso ambiente vou imprimir aqui o pod é o exemplo que a gente tem lá 0401 já é de um repositório válido e vou tentar aplicar essa imagem assinada no nosso ambiente então olha só criamos o pod então agora foi aceito ele validou gatekeeper validou as regras of policies vamos verificar se esse cara realmente está disponível agora no ambiente acabamos de subir um pod dessa imagem assinada tem 21 segundos de idade certo? então era esse o demo que a gente tinha aqui passa para você aqui novamente acho que os pontos importantes que a gente queria trazer para vocês no tempo que a gente tinha é que essa questão de DevOps foi muito falada no passado mas eu acho que é cada vez mais relevante dado que a quantidade de eventos de cybercrimes que tem acontecido estão aumentando muita gente indo para cloud mas ainda é muito complicado tocar projetos de segurança ou projetos relativos a qualquer um desses assuntos de supply chain seguro entender ferramentas demanda treinamento gente especializado então não podemos deixar para amanhã temos que trazer esses assuntos para os nossos líderes para as nossas empresas hoje é uma coisa que a gente aprendeu usando um pouco o co-sign é que o exa fundamental você não pode dar para o seu desenvolvedor ferramentas extremamente complexas porque para que ele for trabalhar com um ecossistema complexo ele vai eventualmente tentar aborlar aquilo porque sempre vai ter um prazo apertado sempre tem alguma coisa que vai atrapalhar então é importante dar uma boa experiência não só para quem manda muito bem nesse sentido e trabalhar com cyber segurança não é ainda uma coisa trivial acredito que nunca seja nunca se torne trivial mas precisa planejamento então não é a eu quero colocar um supply chain seguro eu vou simplesmente é sei lá, baixar aqui o co-sign vou baixar os it vou sair colocando isso no meu diante e tá pronto, não a gente tem que estudar e a gente tem que ter projetos consistentes para isso como tudo que você fez e é isso pessoal a mensagem que a gente queria passar hoje os contatos estão aí estão na exposição onde se tem alguma pergunta aqui para a gente deixar aqui você verifica as perguntas a primeira pergunta do clebe, a proteção de runtime seria algo parecido com o IPS na verdade quando a gente está falando de proteção de runtime no Kubernetes o gatekeeper se eu entender bem sua pergunta o gatekeeper está fazendo esse papel de proteção das requisições que entram no cluster oi, Leonardo que era da palestra anterior da palestra anterior deixa eu ver se tem alguma nova eu não achei nenhum pessoal não fez nenhuma pergunta ah entendi eu estava monitorando aqui se alguém tiver alguma pergunta use o Q&A e o pessoal responde aqui mas também a gente está estourando no tempo aqui e essa é a hora do a pausa para o almoço também se vocês querem fazer mais um comentário por mim é um obrigado pela oportunidade obrigado todo mundo que acompanhou a gente aqui precisando saber mais sobre security supply chain pode procurar a gente ficar à vontade, estamos à disposição muito obrigado os organizadores por esse tempo por esse espaço e fica em nossos contatos para falar que nós estamos disponíveis eu peço desculpa mais uma vez pela PAN computacional agradeço novamente a oportunidade Panato complementando o que você falou, você está correto realmente não é um produto do google o Kossai ele é um produto open source tem muita gente de outros indifíciles contribuindo então acho que valeu pela sua dica ali no chat e é isso, agradeço pessoal o contato está à disposição um abraço obrigado um abraço pessoal a gente vai fazer uma pausa agora voltaremos as 2 e 5 do horário do Brasil e a gente vai desligar o streaming e vai ficar parado até a volta bom almoço para todos outra coisa, se tiverem dúvidas ainda podem colocar no chat que as pessoas vão estar aqui respondendo ainda valeu, bom almoço