anúncios

sexta-feira, 22 de dezembro de 2023

Rust: Uma Jornada pela Linguagem de Programação de Alto Desempenho

Rust é uma linguagem de programação moderna, de baixo nível e alto desempenho, projetada para fornecer controle sobre recursos de sistema, enquanto evita muitos dos bugs comuns em sistemas de software.

Criada pela Mozilla Research, a linguagem foi anunciada ao público em 2010 e desde então tem ganhado popularidade entre desenvolvedores que buscam eficiência, segurança e concorrência.

História e Filosofia

A história do Rust remonta ao trabalho de Graydon Hoare, um engenheiro da Mozilla, que começou o projeto em 2006. A linguagem foi inicialmente concebida como um projeto pessoal de Hoare e, posteriormente, evoluiu para um projeto de código aberto apoiado pela Mozilla Foundation.

A filosofia do Rust é baseada em três pilares: segurança, velocidade e concorrência. Rust visa proporcionar um ambiente de programação onde os desenvolvedores possam escrever código que seja rápido e seguro, sem sacrificar a concorrência.

Paradigma e Foco de Atuação

Rust é uma linguagem multiparadigma, mas é fortemente influenciada pelo paradigma de programação funcional. Ela oferece suporte tanto a programação imperativa quanto à programação funcional, permitindo que os desenvolvedores escolham a abordagem mais adequada para suas necessidades.

O foco principal do Rust está na criação de sistemas seguros e eficientes. Isso é alcançado através de um sistema de tipos forte e de propriedade, que ajuda a prevenir bugs como null pointer dereferences e data races. Rust também é conhecida por seu sistema de empréstimo (borrow checker), que permite o gerenciamento seguro de memória sem a necessidade de um coletor de lixo.

Instalação do Rust no GNU/Linux (Debian) e Derivados

Usando o rustup

Para instalar o Rust no GNU/Linux (Debian) e derivados, o método recomendado é usar o rustup, um gerenciador de versões para o Rust.

Siga os passos abaixo:

Abra um terminal e digite.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Siga as instruções na tela para concluir a instalação.

Após a instalação, abra um novo terminal ou execute source $HOME/.cargo/env para atualizar o ambiente.

Instalação do Rust no Windows

No Windows, o rustup também é a maneira recomendada de instalar o Rust. Siga estes passos:

Baixe e execute o instalador do rustup disponível em https://rustup.rs/ .

Siga as instruções na tela para concluir a instalação.

Após a instalação, abra um novo prompt de comando ou reinicie para atualizar o ambiente.

Exemplo de Hello World em Rust

Agora que o Rust está instalado, vamos criar um simples programa "Hello, World!" para testar o ambiente. Abra seu editor de texto preferido e crie um novo arquivo chamado main.rs com o seguinte conteúdo:

fn main() {
println!("Hello, World!");
}

Salve o arquivo e, no terminal, navegue até o diretório onde o arquivo está localizado e execute o seguinte comando para compilar e executar o programa:

rustc main.rs

./main

Você deverá ver a saída "Hello, World!" na tela.

Considerações finais

Rust representa uma abordagem inovadora para o desenvolvimento de software de sistema, combinando segurança, desempenho e concorrência. Com uma comunidade ativa e crescente, a linguagem continua a evoluir, oferecendo aos desenvolvedores uma alternativa poderosa e moderna para a criação de software robusto e eficiente. Se você busca desafios e deseja explorar uma linguagem que redefine os padrões de programação de sistemas, Rust é certamente uma escolha empolgante.

Referências

https://www.rust-lang.org/pt-BR

Feito!

terça-feira, 12 de dezembro de 2023

Garanta a segurança de suas imagens de contêiner: Como assinar e proteger seus deployments com Cosign

A assinatura de imagens de contêiner com Cosign é uma prática importante para garantir a integridade e a autenticidade das imagens utilizadas em ambientes de contêiner. Cosign é uma ferramenta que permite assinar e verificar imagens, tornando-as mais seguras.

Por que é importante assinar as imagens de contêiner?

A assinatura de imagens de contêiner com Cosign é importante por várias razões:

Integridade da imagem: Ao assinar uma imagem, você pode verificar se ela não foi alterada após a assinatura. Isso ajuda a garantir que a imagem que está sendo executada é a mesma que foi originalmente criada e assinada.

Autenticidade: A assinatura fornece uma maneira de garantir a origem da imagem. Você pode ter certeza de que a imagem foi criada pela entidade que possui a chave de assinatura.

Segurança: A utilização de imagens de contêiner assinadas ajuda a evitar a execução de imagens maliciosas ou não confiáveis, o que pode ser crucial em ambientes de contêiner.

Conformidade: Em ambientes onde a conformidade é importante, a assinatura de imagens pode ser um requisito para cumprir regulamentos de segurança e governança.

Segue os procedimentos para o Cosign, gerar o par de chaves pública e privada para assinatura, assinar a imagem do container.

curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"

mv cosign-linux-amd64 /usr/local/bin/cosign

chmod +x /usr/local/bin/cosign

cosign generate-key-pair

Crie um Dockerfile para sua aplicação

Com o Dockerfile criado, pode fazer o build da imagem, conforme segue:

docker build -t usuario/nome-imagemm:1.0 .

Verifique a imagem buildada

docker images | grep nome-imagem

Publicar a imagem no Docker Hub

docker push usuario/nome-imagem:1.0

Assinar a imagem com a chave privada

cosign sign -key cosign.key usuario/nome-imagem:1.0

Verificar a imagem com a chave pública

cosign verify -key cosign.pub usuario/nome-imagem:1.0

Considerações finais

Assinar imagens de contêiner com ferramentas como o Cosign é uma prática crucial para garantir a integridade, autenticidade e segurança das imagens que você utiliza. Especialmente em ambientes de contêiner, onde a portabilidade e a confiabilidade são essenciais, a assinatura de imagens desempenha um papel fundamental na prevenção de ameaças e na garantia de que você está executando apenas o código que deseja.

Você está disposto a assumir o controle da segurança das suas imagens de contêiner a partir de hoje?

Assinar suas imagens de contêiner não é apenas uma medida de segurança, mas também uma responsabilidade para qualquer pessoa ou organização que trabalha com contêineres. É uma camada adicional de proteção que pode evitar potenciais problemas de segurança e garantir que você esteja utilizando apenas imagens confiáveis.

Portanto, não deixe a segurança de suas imagens de contêiner ao acaso. Considere seriamente a assinatura de suas imagens a partir de hoje para fortalecer a integridade e a autenticidade de seus aplicativos em ambientes de contêiner. Afinal, a segurança é um compromisso contínuo e a prevenção é sempre mais eficaz do que a correção.

Feito!