Inscreva-se no nosso blog

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
Private registry running

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.

Read full bio

Navegue por canal

automation icon

Automação

Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes

AI icon

Inteligência artificial

Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente

open hybrid cloud icon

Nuvem híbrida aberta

Veja como construímos um futuro mais flexível com a nuvem híbrida

security icon

Segurança

Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias

edge icon

Edge computing

Saiba quais são as atualizações nas plataformas que simplificam as operações na borda

Infrastructure icon

Infraestrutura

Saiba o que há de mais recente na plataforma Linux empresarial líder mundial

application development icon

Aplicações

Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações

Original series icon

Programas originais

Veja as histórias divertidas de criadores e líderes em tecnologia empresarial