Um registro privado pode ser útil para armazenar imagens de container do Linux para suas aplicações em uma infraestrutura interna, controlada e potencialmente mais segura.
Os containers Linux são tecnologias que permitem empacotar e isolar aplicações com todo o seu ambiente de runtime, ou seja, com todos os arquivos necessários para executá-las. Isso facilita a movimentação da aplicação contida entre ambientes (desenvolvimento, teste, produção etc.).
A Red Hat foi reconhecida como líder no relatório Magic Quadrant™ do Gartner® de 2023
A capacidade de execução e a visão abrangente da Red Hat garantiram à empresa o primeiro lugar na categoria Gestão de Containers do relatório Magic Quadrant™ 2023, do Gartner.
Neste artigo, mostrarei como criar um registro privado pronto para SSL/TLS com uma postura de segurança mais forte que pode ser usada para armazenar containers em geral, além de como integrá-lo ao Red Hat OpenShift para poder realizar implantações desconectadas do OCP. Ele também pode ser usado nos casos em que o OperatorHub não tem acesso à internet.
Requisitos
Vamos precisar dos seguintes requisitos:
- FQDN: registry.rhbrlabs.com
- SO: Red Hat Enterprise Linux 8.6+
- SELinux: Enforcing
- Firewalld: ativado
- Registro: Podman
- Ferramentas do Apache
- Volume: 100 Gb montados em /data
Esse registro é totalmente compatível com instalações desconectadas do OpenShift.
Instalação
Uma instalação para maximizar a segurança do sistema consiste em usar criptografia, além das funcionalidades de segurança já disponíveis no Linux.
Crie os diretórios necessários:
[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}
Certificados
Gere certificados para o registro de containers. Neste exemplo, estamos criando certificados válidos por 10 anos:
[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout /data/registry/certs/registry.rhbrlabs.com.key -x509 -days 3650 \ -out /data/registry/certs/registry.rhbrlabs.com.crt \ -subj "/C=US/ST=NorthCarolina/L=Raleigh/O=Red Hat/OU=Engineering/CN=registry.rhbrlabs.com" \ -addext "subjectAltName = DNS:registry.rhbrlabs.com"
O sistema operacional precisa confiar nos certificados que foram gerados.
Copie o certificado gerado para o diretório confiável de âncoras e execute update-ca-trust:
[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/
[root@registry ~]# update-ca-trust
Contas de usuário
Para controlar o acesso ao nosso registro, precisaremos criar contas de usuário. No exemplo a seguir, criaremos uma conta para o registro de usuário.
Gere um arquivo de autenticação para o registro de imagem:
[root@registry ~]# dnf -y install httpd-tools
[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678
Segredo de HTTP
Além da conta de usuário, precisaremos de um segredo para aumentar a confiabilidade do acesso.
Gere um segredo aleatório:
[root@registry ~]# date | md5sum
10f207a4cbba51bf00755b5a50718966
Software de registro
Com os dados necessários em mãos, é hora de criar o registro.
Crie o registro de containers usando a imagem docker.io/library/registry:2:
[root@registry ~]# dnf -y install podman
[root@registry ~]# podman create --name ocp-registry --net host -p 5000:5000 \ -v /data/registry/data:/var/lib/registry:z -v /data/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \ -e "REGISTRY_HTTP_SECRET=10f207a4cbba51bf00755b5a50718966" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.rhbrlabs.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.rhbrlabs.com.key docker.io/library/registry:2
O comando acima vai gerar uma mensagem como esta:
Trying to pull docker.io/library/registry:2... Getting image source signatures Copying blob fd4a5435f342 done Copying blob 213ec9aee27d done Copying blob 4583459ba037 done Copying blob b136d5c19b1d done Copying blob 6f6a6c5733af done Copying config dcb3d42c17 done Writing manifest to image destination Storing signatures Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use 22633f37262a4ab2d64fc8beb44bb80618b11802974fb2f45d31d98db3cf14e8
O registro agora estará pronto para uso. No entanto, precisamos de uma maneira de controlar o início e a interrupção do serviço.
Controle de inicialização
Crie um arquivo UNIT para que seu registro inicie automaticamente o container na inicialização:
[root@registry ~]# cat /etc/systemd/system/ocp-registry.service
[Unit] Description=OCP Registry [Service] Restart=always ExecStart=/usr/bin/podman start -a ocp-registry ExecStop=/usr/bin/podman stop -t 10 ocp-registry [Install] WantedBy=network-online.target
Inicie o container:
[root@registry ~]# systemctl daemon-reload
[root@registry ~]# systemctl enable --now ocp-registry.service
Registro privado em execução
Firewall
Como estamos usando um firewall local, precisaremos autorizar a porta do serviço de registro.
Permita a porta TCP 5000 no Firewalld:
[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload
Verifique se o registro está funcionando
Agora vamos verificar o acesso ao nosso novo registro.
Verifique se a autenticação e o SSL/TLS confiável estão funcionando:
[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog
{"repositories":[]}
Integração com o Red Hat OpenShift
Se você for usar esse registro junto com o OCP, crie um arquivo no formato base64 com as informações de autenticação.
Gere um arquivo temporário com as informações de autenticação para instalações desconectadas do OpenShift:
[root@registry ~]# cat <<EOF > ~/registry-secret.json "registry.rhbrlabs.com:5000": { "email": "registry@redhat.com", "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)" } EOF
Palavras finais
Seu novo registro privado com recursos adicionais de segurança já está funcionando. Ter um serviço de registro privado é uma boa maneira de controlar o acesso e atender a padrões de segurança mais rígidos, já que os serviços de registro públicos são mais suscetíveis a problemas de segurança.
Neste post, orientei você a criar do zero um registro com segurança aprimorada. Apesar de ser uma solução funcional, ela carece de funcionalidades avançadas, como alta disponibilidade, espelhamento, cache e georreplicação, que já estão presentes em soluções mais robustas.
Todas essas funções, além da verificação de vulnerabilidades de containers, suporte ao armazenamento de objetos e escalabilidade automática, estão integradas ao Red Hat Quay.
A plataforma de registro de containers Red Hat Quay oferece segurança aprimorada para armazenamento, distribuição e governança de containers e artefatos nativos em nuvem em qualquer infraestrutura. Ela está disponível como um componente independente ou pode ser executada no Red Hat OpenShift.
Sobre o autor
Andre Rocha is a Consultant at Red Hat focused on OpenStack, OpenShift, RHEL and other Red Hat products. He has been at Red Hat since 2019, previously working as DevOps and SysAdmin for private companies.
Navegue por canal
Automação
Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes
Inteligência artificial
Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente
Nuvem híbrida aberta
Veja como construímos um futuro mais flexível com a nuvem híbrida
Segurança
Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias
Edge computing
Saiba quais são as atualizações nas plataformas que simplificam as operações na borda
Infraestrutura
Saiba o que há de mais recente na plataforma Linux empresarial líder mundial
Aplicações
Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações
Programas originais
Veja as histórias divertidas de criadores e líderes em tecnologia empresarial
Produtos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Red Hat Cloud Services
- Veja todos os produtos
Ferramentas
- Treinamento e certificação
- Minha conta
- Suporte ao cliente
- Recursos para desenvolvedores
- Encontre um parceiro
- Red Hat Ecosystem Catalog
- Calculadora de valor Red Hat
- Documentação
Experimente, compre, venda
Comunicação
- Contate o setor de vendas
- Fale com o Atendimento ao Cliente
- Contate o setor de treinamento
- Redes sociais
Sobre a Red Hat
A Red Hat é a líder mundial em soluções empresariais open source como Linux, nuvem, containers e Kubernetes. Fornecemos soluções robustas que facilitam o trabalho em diversas plataformas e ambientes, do datacenter principal até a borda da rede.
Selecione um idioma
Red Hat legal and privacy links
- Sobre a Red Hat
- Oportunidades de emprego
- Eventos
- Escritórios
- Fale com a Red Hat
- Blog da Red Hat
- Diversidade, equidade e inclusão
- Cool Stuff Store
- Red Hat Summit