Categorias
Linux Segurança

Apache Guacamole + Cloudflare Zero Trust – Tutorial Completo!

Categorias
Linux Segurança

Acesso Remoto RDP e SSH com Apache Guacamole (Ubuntu 22.04 e 23.10)

Apache Guacamole é um aplicativo de desktop remoto poderoso e sem cliente que permite acessar máquinas e servidores remotos usando um navegador da web. Ele oferece suporte a protocolos populares como VNC, RDP e SSH e utiliza HTML5 para conexões remotas perfeitas. Neste tutorial fiz o processo de instalação do Apache Guacamole como um contêiner Docker no Ubuntu 23.10, ele funciona também no Ubuntu 22.04 LTS.

Para iniciar a instalação, é recomendado que você tenha a última versão do Docker instalado no seu servidor.

Vamos iniciar instalando as dependências necessárias.

apt install ca-certificates curl gnupg lsb-release -y

Adicione a chave GPG e o repositório do docker.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Atualize os repositórios e instale o Docker Engine.

apt update -y
apt install docker-ce docker-ce-cli containerd.io -y

Você vai precisar também do Docker Compose

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

Agora vamos fazer o download das imagens do Guacamole Client e Server do Docker Registry.

Download da imagem do Guacamole Server

docker pull guacamole/guacd

Download da imagem do Guacamole Client

docker pull guacamole/guacamole

Verifique as imagens que foram baixadas

docker images

Iniciando o Container do Apache Guacamole MySQL

Faça o download e inicie o container.

docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=meu_password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server

Crie a pasta para armazenar o MySQL

mkdir -p /opt/guacamole/mysql

Gere o script de inicialização.

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql

Copie o script de inicialização do MySQL para o container Docker MySQL.

docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d

Conecte no banco MySQL dentro do container.

docker exec -it guacamoledb bash

Liste o script fr inicialização MySQL.

cd /docker-entrypoint-initdb.d/
ls

Você deverá ver o arquivo 01-initdb.sql listado.

Conecte na console do MySQL.

mysql -u root -p

Mude para o banco guacdb e inicialize o banco do Guacamole.

use guacdb;
source 01-initdb.sql;

Verifique todas as tabelas, se foram criadas.

show tables;

As tabelas serão listadas como abaixo.

Crie o usuário do banco e atribua a senha e as permissões.

create user guacadmin@'%' identified by 'password@111';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';
flush privileges;
exit;

Saia de dentro do contianer MySQL.

exit

Verifique se o container está executando

docker ps

Você verá um resultado como abaixo.

Inicie o container do Guacamole Server

docker run --name guacamole-server -d guacamole/guacd

Veja os resultados no log

docker logs --tail 10 guacamole-server

Verifique se o container está executando.

docker ps

Inicie o container do Guacamole Client.

docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password@111 -d -p 9090:8080 guacamole/guacamole

Verifique se o conatiner está executando.

docker ps

Acessando o Dashboard do Apache Guacamole

http://ip-do-seu-servidor:9090/guacamole

Usuário: guacadmin
Senha: guacadmin


Dentro do Guacamole, clique no usuário no canto direito superior, e vá em Settings.

A partir de então você já pode personalizar as configurações de idioma, fuso horário, alterar a senha.

Para criar um acesso RDP, clique em Conexões, Nova Conexão. Preencha com os dados conforme abaixo, Colocando o nome do PC, Grupo e Protocolo (no caso RDP).

Defina as configurações do servidor conforme abaixo, marque a opção “Ignorar certificado do servidor” para evitar erros de conexão.

Eu costumo desabilitar o áudio, pois evita problemas de perda de conexão em algumas versões e lentidão.

Em seguida salve a conexão, vá no seu usuário e client em Home, em seguida clique no seu servidor da conexão remota.

Pronto, sua conexão remota já está funcionando.

Para criar uma conexão Linux, o processo é da mesma maneira, selecionando o protocolo SSH.

Em seguida preencha com as informações do seu servidor.

Vá para Home e clique na sua conexão do servidor.

Pronto, seu servidor já está acessível pelo Guacamole.

Recomendo ativar protocolos de usuários e senhas complexos para manter seu acesso seguro.

Categorias
Inteligência Artificial e Machine Learning

Seu ChatGPT local: Como rodar o Llama 3.1 localmente com o Open WebUI

Agora você pode ter a sua própria IA local com seus recuros, neste tutorial vamos fazer a instalação do Ollama utilizando os modelos Llama 3.2 de 3B e Codegemma de 7B com o OpenWebUI via Docker no Ubuntu 24.04 LTS.

Pré-requisitos:

  • Sistema Operacional: Ubuntu 24.04 LTS.
  • Docker: Instale o Docker e Docker Compose.
  • Modelos Ollama: Llama 3.2 de 3B e Codegemma de 7B.
  • Requisitos de hardware: Tenha no mínimo 16 GB de RAM e espaço em disco suficiente para os modelos (~30GB).

Passo 1: Atualização do sistema

Atualize o sistema para garantir que tudo esteja funcionando corretamente.

sudo apt update && sudo apt upgrade -y

Passo 2: Instalação do Docker e Docker Compose

Se o Docker ainda não estiver instalado, execute os seguintes comandos:

Instale o Docker:

    sudo apt install docker.io -y

    Adicione seu usuário ao grupo Docker

    sudo usermod -aG docker $USER

    Instale o Docker Compose:

    sudo apt install docker-compose -y

    Passo 3: Instalação do Ollama com Docker

    Baixe a imagem do Ollama usando Docker: Crie um arquivo docker-compose.yml para configurar o Ollama e o OpenWebUI.

      version: '3'
      services:
        ollama:
          image: ollama/ollama:latest
          container_name: ollama-server
          ports:
            - "11434:11434"
          volumes:
            - ./models:/app/models
          command: ollama serve
          environment:
            - OLLAMA_MODELS_DIR=/app/models
      
        openwebui:
          image: abdel/openwebui:latest
          container_name: openwebui
          ports:
            - "8080:8080"
          depends_on:
            - ollama
          environment:
            - OLLAMA_SERVER_URL=http://ollama-server:11434

      Suba os containers: Navegue até a pasta onde o docker-compose.yml foi salvo e execute:

      docker-compose up -d

      Passo 4: Download dos modelos Llama 3.2 e Codegemma

      Dentro do container Ollama, faça o download dos modelos:

      Acesse o container do Ollama:

        docker exec -it ollama-server bash

        Baixe os modelos Llama 3.2 e Codegemma:

        ollama pull llama:3.2
        ollama pull codegemma:7B

        Verifique se os modelos foram baixados corretamente:

        ollama models

        Passo 5: Configuração do OpenWebUI

        Com o OpenWebUI rodando no container, você pode acessá-lo via navegador no endereço:

        http://<IP_do_seu_servidor>:8080

        Configure criando uma conta e ajuste suas configurações.

        Dentro do Open WebUI, vá em Admin Panel, em seguida Settings e Models, veja se os modelos foram baixados corretamente e estão aparecendo como na tela abaixo.

        Categorias
        Linux

        Aumentar tamanho de partição no Linux com LVM

        Para aumentar o tamanho de uma partição no Linux de forma bem simples e rápida, podemos usar os seguintes comandos abaixo.

        Este servidor em questão, estava com o disco principal /dev/xvda com o tamanho de 50GB, e eu aumentei ele para 500GB.

        Executando um df -h, podemos observar o tamanho da partição principal.

        Executando agora um fdisk -l, podemos ver o tamanho das partições no disco.

        Vou sugerir o uso de growpart porque é mais direto para ajustar partições com GPT.

        Execute o comando abaixo para redimensionar a partição /dev/xvda3

        sudo growpart /dev/xvda 3

        Agora que a partição foi expandida, precisamos informar ao LVM que há mais espaço disponível no disco.

        Use o comando abaixo para redimensionar o volume físico associado à partição.

        sudo pvresize /dev/xvda3

        Após o redimensionamento do volume físico, o próximo passo é expandir o volume lógico para usar todo o espaço disponível:

        sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

        precisamos redimensionar o sistema de arquivos para utilizar o novo espaço. Se você estiver usando ext4, pode rodar o seguinte comando:

        sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

        Agora executando um df -h, vemos o novo tamanho da partição.

        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 7 – Governança e Administração)

        Definição de Preço

        Governança e Administração na OCI: Detalhamento Técnico sobre Preços

        Introdução

        Nós abordaremos o tema dos preços, que, embora complexo em muitos provedores de Cloud, é simplificado na OCI. A OCI oferece preços transparentes e competitivos, frequentemente mais baixos que os dos concorrentes. Vamos explorar os modelos de preços suportados pela OCI.

        Modelos de Preços Suportados

        Pay as You Go (Pague pelo Uso)

        O modelo Pay as You Go é baseado no consumo de recursos. Você paga apenas pelos recursos que utiliza, sem compromisso antecipado ou período mínimo de serviço. O uso é medido e cobrado conforme necessário. Este modelo é aplicável à maioria dos recursos da OCI.

        Preços Baseados em Consumo

        Para alguns recursos, como a plataforma serverless gerenciada chamada Functions, a OCI adota o modelo de preços baseados em consumo. Nesse modelo, você é cobrado apenas quando consome o recurso. Isso difere do Pay as You Go, onde você paga pelos VMs mesmo que estejam ociosos.

        Annual Universal Credits (Créditos Universais Anuais)

        Neste modelo, você se compromete com um pool anual de fundos, recebendo em troca economias significativas. No entanto, é necessário utilizar esses créditos dentro de 12 meses. Se o uso de recursos exceder os créditos, os custos adicionais são cobrados conforme o modelo Pay as You Go. Os descontos variam conforme o tamanho e o termo do acordo.

        Monthly Universal Credits (Créditos Universais Mensais)

        Este é um modelo semelhante ao Annual Universal Credits, mas com um compromisso mensal. Para mais detalhes, consulte a documentação da OCI.

        Bring Your Own Licenses (Traga Suas Próprias Licenças)

        Este modelo permite que os clientes reutilizem licenças on-premises na Cloud, reduzindo os custos gerais. Esse modelo é vantajoso para quem já possui licenças e deseja migrar para a OCI.

        Fatores que Impactam os Preços

        Tamanho do Recurso

        O custo dos recursos é diretamente proporcional ao seu tamanho. Recursos maiores consomem mais e, portanto, custam mais. Os preços são baseados no consumo e no tipo de recurso utilizado.

        Transferência de Dados

        A transferência de dados é um fator significativo nos custos, podendo representar até um quarto da fatura. As aplicações estão sempre comunicando, seja com usuários finais ou internamente entre componentes da infraestrutura. Na OCI, a transferência de dados entre domínios de disponibilidade (ADs) dentro da mesma região é gratuita, ao contrário de alguns provedores que cobram por isso, penalizando a alta disponibilidade.

        Tipo de Recurso

        O tipo de recurso também determina o preço. Máquinas virtuais, bare metal e serverless têm pontos de preços distintos. Além disso, trazer suas próprias licenças altera o modelo de preços.

        Preços Uniformes Globalmente

        A OCI aplica os mesmos preços em todas as regiões globais, diferentemente de muitos provedores que variam os preços por localização. Isso simplifica a previsibilidade dos custos para empresas globais.

        Custos de Transferência de Dados

        A transferência de dados pode ser um dos componentes mais caros da sua fatura. No caso de aplicações com alta transferência de dados, a OCI oferece custos significativamente mais baixos, especialmente para tráfego de saída, que é até 10 vezes mais barato que outros provedores. Isso resulta em economias substanciais, especialmente para aplicações com grande uso de transferência de dados.

        A OCI oferece três modelos de preços principais: Pay as You Go, Annual Universal Credits, e Bring Your Own Licenses. Os preços são simples, transparentes e competitivos, com custos de transferência de dados muito mais baixos que os dos concorrentes. Para mais informações detalhadas, consulte a documentação oficial da Oracle.

        Gestão de Custos na OCI

        Vamos explorar as ferramentas que a OCI oferece para ajudar você a gerenciar seus custos de maneira eficaz.

        Orçamentos OCI

        A primeira ferramenta disponível são os Orçamentos OCI. Os orçamentos permitem que você monitore os custos em sua tenância. Após criar um orçamento para um compartimento, você pode configurar alertas que notificam caso um orçamento esteja previsto para ser excedido ou se os gastos ultrapassarem um determinado valor.

        Por exemplo, você pode definir um orçamento de R$ 1.000 e outro de R$ 100. O sistema fornecerá previsões e notificações caso você esteja próximo de exceder esses valores ou se já os tiver excedido. Esta é uma maneira importante de gerenciar seus custos e ser notificado quando os gastos ultrapassarem suas previsões ou planos.

        Análise de Custos

        A segunda ferramenta disponível é a Análise de Custos. Como o nome indica, essa ferramenta permite analisar seus custos após terem sido incorridos. É uma excelente maneira de revisar os custos passados e fazer ajustes para o futuro. Se houver elementos que você deseja mudar, esta é uma ótima maneira de identificar áreas de otimização.

        Relatórios de Uso

        Outra ferramenta importante são os Relatórios de Uso. Atualmente, esses relatórios são baixados em formato CSV e são gerados diariamente. Eles mostram os dados de uso de cada recurso em sua tenância. Os arquivos CSV são armazenados em um bucket de armazenamento de objetos que é acessível usando uma política de tenâncias cruzadas. Isso permite que você visualize os dados de uso não apenas em sua tenância, mas também em múltiplas tenâncias, se estiver utilizando mais de uma.

        Limites de Serviço

        Além disso, há ferramentas para gerenciar Limites de Serviço, cota e uso. Como em qualquer Cloud, limitamos a quantidade de recursos que você pode executar em uma tenância tradicional para prevenir fraudes e mau uso. No entanto, você sempre pode ajustar seus limites para um serviço específico, submetendo uma solicitação de suporte. A ferramenta de limites de serviço fornece uma visão geral dos limites atuais, detalhados por domínios de disponibilidade, permitindo que você mergulhe nos detalhes.

        Compartimentos e Cotas

        Por fim, os Compartimentos são entidades lógicas que você pode usar para isolar recursos e ter um melhor controle de acesso. Ao utilizar compartimentos, você tem a capacidade de configurar Cotas de Compartimento. Com isso, você pode definir o número máximo de recursos de cloud que podem ser usados em um compartimento específico. Por exemplo, você pode permitir que um compartimento use apenas 10 máquinas virtuais, ou pode desativar completamente certos tipos de recursos, como recursos Exadata, para prevenir mau uso e economizar custos.

        As ferramentas de Gestão de Custos da OCI incluem orçamentos, relatórios de uso, análise de custos, configuração de cotas, ajuste de limites de serviço e muito mais. É altamente recomendável consultar a documentação da Oracle para aprender mais sobre todas as maneiras de gerenciar seus custos na OCI.

        Links Úteis para Complementação:

        Tagging

        Tagging na Oracle Cloud Infrastructure (OCI)

        Tagging é uma capacidade extremamente importante dentro da Oracle Cloud Infrastructure (OCI), e você definitivamente deve aproveitá-la ao máximo. Vamos discutir mais detalhadamente sobre essa funcionalidade.

        O que é Tagging?

        No cerne, o que é tagging? Tags são basicamente pares de chave-valor que você pode usar para organizar melhor seus recursos na nuvem. Por exemplo, em uma instância específica, você pode adicionar tags como “environment” com o valor “production” e “project” com o valor “alpha”. É possível adicionar várias tags, mas sempre verifique os limites de serviço para saber quantas tags podem ser aplicadas a um objeto específico na nuvem.

        Tags são pares simples de chave-valor, onde a chave é o identificador da tag e o valor é o valor que você deseja atribuir. A ideia é que, ao gerenciar centenas ou milhares de recursos na nuvem, criando aplicações e arquiteturas complexas, você possa identificá-los facilmente utilizando essas tags.

        Por que usar tags?

        1. Organização de Recursos:

        • O primeiro motivo para usar tags é a organização dos seus recursos. Com uma grande quantidade de recursos e contas na nuvem, tags oferecem um mecanismo simples para melhor organizar tudo. Isso facilita a identificação e o gerenciamento dos recursos.

        2. Gestão de Custos:

        • O segundo motivo é a gestão de custos. Com todas essas tags aplicadas aos recursos, você pode agrupá-los e descobrir o custo de uso desses recursos. Como o modelo de preços na nuvem é baseado no consumo, tags ajudam a identificar quais recursos estão gerando quais custos.

        3. Controle de Acesso Baseado em Tags:

        • Outro uso importante das tags é o controle de acesso baseado em tags. Você pode controlar o acesso aos recursos com base nas tags, não apenas nos usuários e grupos. Isso permite a criação de políticas de acesso ainda mais poderosas e específicas.

        Tipos de Tags na OCI

        Tags de Forma Livre:

        • As tags de forma livre são pares simples de chave-valor sem um esquema definido ou restrições de acesso. Por exemplo, uma tag com a chave “environment” e o valor “production”.

        Tags Definidas:

        • As tags definidas oferecem mais recursos e controle. Essas tags são contidas dentro de um namespace, que é um contêiner para um conjunto de definições de chaves de tags. Você pode especificar um namespace, como “operations”, e definir várias tags dentro dele, criando um esquema organizado.

        Namespace e Políticas

        Namespace:

        • O namespace é um contêiner para um conjunto de tags. Por exemplo, um namespace chamado “operations” pode conter tags como “environment” com o valor “production”. As definições de chaves de tags especificam as chaves e os tipos de valores permitidos (por exemplo, strings, valores específicos).

        Políticas:

        • As tags definidas também suportam políticas que controlam quem pode aplicá-las. Isso significa que não qualquer pessoa pode usar essas tags definidas, apenas aqueles especificados nas políticas. Você pode, por exemplo, permitir que apenas administradores de operações apliquem uma determinada tag.

        Uma coisa importante a lembrar é que, uma vez definido, um namespace não pode ser deletado, mas pode ser aposentado e não utilizado mais. Isso é útil para fins de governança e auditoria, mantendo um registro dos namespaces utilizados em sua conta.

        Tagging é uma funcionalidade essencial e muito útil na nuvem. Na OCI, levamos o tagging a um nível superior com as tags definidas, proporcionando uma organização e controle mais robustos dos seus recursos.

        Links para Documentação Complementar

        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 6 – Segurança)

        A Oracle Cloud tem um foco bem diferenciado na parte de segurança, até por ser um ambiente mais simplificado, suas configurações de segurança tem alguns pontos de fácil implementação.

        Abaixo vou ilustrar uma introução básica sobre o modelo de segurança compartilhado geralmente utilizado nas Clouds em geral.

        Modelo de Responsabilidade de Segurança Compartilhado

        Introdução ao Modelo de Responsabilidade de Segurança Compartilhada

        O modelo de responsabilidade de segurança compartilhada é um princípio fundamental no contexto de serviços em nuvem. Ele delineia as responsabilidades distintas entre o provedor de serviços em nuvem e o cliente, assegurando que ambos compreendem e executam suas respectivas tarefas para manter a segurança e a conformidade do ambiente. Esse modelo é crucial, pois reconhece que a segurança é uma responsabilidade coletiva e que ambas as partes devem colaborar para mitigar riscos e proteger dados.

        Exemplos de Modelos de Responsabilidade de Segurança Compartilhada

        1. Infraestrutura como Serviço (IaaS)
        • Responsabilidade do Provedor de Serviços (PS):
          • Segurança física dos data centers onde os servidores estão hospedados.
          • Hardware e software de virtualização, garantindo que a infraestrutura subjacente seja segura e que quaisquer vulnerabilidades sejam tratadas rapidamente.
          • A segurança da rede e a proteção contra DDoS no nível da infraestrutura.
        • Responsabilidade do Cliente:
          • Gerenciamento do sistema operacional, patches e atualizações de software.
          • Configuração da rede virtual, incluindo firewalls e regras de segurança.
          • Controle de acesso e gerenciamento de identidades, assegurando que apenas usuários autorizados possam acessar recursos.
          • Criptografia de dados em repouso e em trânsito.
        1. Plataforma como Serviço (PaaS)
        • Responsabilidade do Provedor de Serviços (PS):
          • Gerenciamento do sistema operacional subjacente, patches e atualizações.
          • Segurança da plataforma de desenvolvimento, incluindo servidores de aplicação e banco de dados.
          • Implementação de controles de segurança e conformidade para as ferramentas fornecidas na plataforma.
        • Responsabilidade do Cliente:
          • Configuração e gestão das aplicações desenvolvidas na plataforma.
          • Gerenciamento de dados, incluindo criptografia e controle de acesso.
          • Implementação de medidas de segurança nas aplicações, como autenticação, autorização e auditoria.
        1. Software como Serviço (SaaS)
        • Responsabilidade do Provedor de Serviços (PS):
          • Segurança da aplicação SaaS, incluindo patches, atualizações e manutenção.
          • Proteção dos dados armazenados na aplicação, garantindo que sejam criptografados e protegidos contra acessos não autorizados.
          • Disponibilidade e confiabilidade da aplicação, assegurando que ela esteja operacional e acessível.
        • Responsabilidade do Cliente:
          • Gerenciamento de usuários e controle de acesso, garantindo que apenas usuários autorizados possam acessar a aplicação.
          • Configuração de segurança dentro da aplicação, como políticas de senha e autenticação multifator.
          • Monitoramento de uso e comportamento, identificando e respondendo a atividades suspeitas.

        O modelo de responsabilidade de segurança compartilhada é vital para uma operação segura e eficiente na nuvem. Compreender e implementar corretamente esse modelo permite que tanto os provedores de serviços quanto os clientes trabalhem juntos para criar um ambiente seguro e resiliente, minimizando riscos e garantindo a proteção dos dados e serviços.

        Modelo de Responsabilidade Compartilhada da Oracle Cloud

        O modelo de responsabilidade compartilhada da Oracle Cloud divide as tarefas de segurança e conformidade entre a Oracle e os clientes. A compreensão clara dessas responsabilidades é crucial para garantir um ambiente de nuvem seguro e eficiente.

        Responsabilidades da Oracle:

        1. Segurança Física: Proteção das instalações de data centers, incluindo controle de acesso físico, vigilância e monitoramento ambiental.
        2. Infraestrutura: Manutenção e proteção do hardware e software que compõem a infraestrutura da nuvem.
        3. Rede: Segurança da rede que conecta os data centers e os serviços de nuvem, incluindo proteção contra ataques DDoS e outras ameaças de rede.
        4. Hipervisor: Segurança do hipervisor que gerencia as máquinas virtuais e isola as diferentes instâncias dos clientes.

        Responsabilidades do Cliente:

        1. Dados: Proteção e criptografia dos dados armazenados e em trânsito, gerenciamento de backup e recuperação de dados.
        2. Aplicativos: Segurança dos aplicativos implantados na nuvem, incluindo patches, atualizações e configuração segura.
        3. Identidade e Acesso: Gerenciamento de identidades, autenticação de usuários, configuração de permissões e controles de acesso.
        4. Configurações de Segurança: Definição e aplicação de políticas de segurança, configuração de firewalls, redes virtuais e outros mecanismos de segurança na nuvem.

        Comparação com o Modelo On-Premise

        Modelo On-Premise

        No modelo on-premise, a organização é inteiramente responsável por todos os aspectos da infraestrutura de TI, desde a instalação física até a segurança de dados e aplicativos.

        1. Infraestrutura Física: A empresa deve adquirir, instalar e manter hardware (servidores, roteadores, switches, etc.) e garantir a segurança física das instalações.
        2. Gerenciamento de Rede: Responsabilidade completa pela configuração, manutenção e segurança da rede interna, incluindo firewalls, roteadores e switches.
        3. Hardware e Software: Instalação, configuração, manutenção e atualização de todo o hardware e software utilizado, incluindo sistemas operacionais e aplicativos.
        4. Segurança de Dados: Proteção e criptografia de dados, backup, recuperação e políticas de retenção de dados.
        5. Conformidade e Auditoria: Garantir que todas as operações de TI estejam em conformidade com regulamentações aplicáveis e realizar auditorias regulares.

        Resumo das Diferenças

        • Oracle Cloud: A responsabilidade pela segurança é dividida entre a Oracle (infraestrutura, rede, hipervisor) e o cliente (dados, aplicativos, identidade e acesso, configurações de segurança).
        • On-Premise: A organização é inteiramente responsável por todas as camadas de segurança e manutenção da infraestrutura.

        Essa divisão de responsabilidades na Oracle Cloud permite que as empresas aproveitem a infraestrutura segura e gerenciada da Oracle, concentrando-se mais em suas operações e menos na manutenção e segurança de TI.

        Segurança em Camada de Profundidade da Oracle Cloud

        A Oracle Cloud utiliza o conceito de segurança em camada de profundidade, ou Defense in Depth.

        A segurança em camada de profundidade é uma abordagem estratégica de segurança que utiliza múltiplas camadas de defesa para proteger nossos dados e recursos críticos contra ameaças e ataques. Essa estratégia é baseada no princípio de que nenhuma medida de segurança isolada é infalível. Assim, implementamos várias camadas de proteção que trabalham juntas, aumentando a resiliência e a segurança geral do sistema. Vamos explorar cada uma dessas camadas em detalhes.

        1. Segurança Física

        A primeira linha de defesa na segurança em camada de profundidade é a segurança física dos data centers da Oracle. Isso envolve:

        • Controle de Acesso: Apenas pessoal autorizado pode entrar nos data centers, e isso é rigorosamente monitorado.
        • Monitoramento Ambiental: Proteção contra desastres naturais, falhas de energia e outras ameaças físicas.

        A proteção física é fundamental, pois qualquer comprometimento nessa camada pode levar a brechas em todas as outras camadas subsequentes.

        2. Segurança de Rede

        A próxima camada é a segurança de rede, que inclui:

        • Firewalls: Barrando tráfego não autorizado e prevenindo ataques de rede.
        • Segurança de Perímetro: Utilização de IDS/IPS (Sistemas de Detecção/Prevenção de Intrusões) para identificar e bloquear atividades maliciosas.
        • Proteção contra DDoS: Medidas para mitigar ataques de negação de serviço distribuída, garantindo que nossos serviços permaneçam disponíveis mesmo sob ataque.

        Estas medidas garantem que o tráfego de rede seja monitorado e controlado, protegendo nossos sistemas contra invasões e acessos não autorizados.

        3. Segurança de Infraestrutura

        A infraestrutura da Oracle Cloud também é protegida por várias camadas de segurança:

        • Hipervisor Seguro: Isolamento eficaz das máquinas virtuais, impedindo que uma VM comprometida afete outras.
        • Patching e Atualizações: Aplicação regular de patches e atualizações de segurança para corrigir vulnerabilidades conhecidas.

        Manter a infraestrutura segura é essencial para prevenir ataques que possam explorar vulnerabilidades do hardware ou do software base.

        4. Segurança de Aplicação

        Para as aplicações que rodamos na Oracle Cloud, a segurança também é crítica:

        • Gestão de Identidade e Acesso (IAM): Controle de acesso baseado em funções (RBAC), autenticação multifator (MFA) e políticas de segurança robustas.
        • Configuração Segura: Adoção de práticas recomendadas de configuração para minimizar vulnerabilidades nos aplicativos.

        Essas medidas garantem que apenas usuários autorizados possam acessar e modificar os aplicativos, reduzindo o risco de comprometimento interno.

        5. Segurança de Dados

        Os dados são o coração de nossos sistemas e precisam ser protegidos adequadamente:

        • Criptografia: Criptografia de dados em repouso e em trânsito utilizando algoritmos robustos.
        • Gerenciamento de Chaves: Uso de serviços de gerenciamento de chaves (KMS) para controlar e proteger chaves criptográficas.

        A criptografia assegura que, mesmo que os dados sejam interceptados, eles não possam ser lidos ou utilizados por pessoas não autorizadas.

        6. Monitoramento e Resposta a Incidentes

        Uma camada crucial é a capacidade de monitorar e responder a incidentes:

        • Logs e Monitoramento: Coleta e análise contínua de logs de segurança para detectar atividades suspeitas.
        • Resposta a Incidentes: Planos e procedimentos bem definidos para responder rapidamente a incidentes de segurança.

        Monitorar constantemente nosso ambiente nos permite detectar e responder rapidamente a possíveis ameaças, minimizando o impacto de qualquer incidente de segurança.

        7. Conformidade e Governança

        Finalmente, mas não menos importante, temos a conformidade e a governança:

        • Políticas de Segurança: Implementação de políticas e controles de segurança alinhados com padrões e regulamentações de conformidade.
        • Auditorias e Relatórios: Realização de auditorias regulares e geração de relatórios para garantir a conformidade contínua com as normas aplicáveis.

        Estas práticas ajudam a garantir que estamos seguindo as melhores práticas e cumprindo com todas as exigências legais e regulatórias.

        Em resumo, a segurança em camada de profundidade da Oracle Cloud é uma abordagem abrangente e multifacetada que integra várias medidas de segurança em diferentes níveis. Desde a segurança física dos data centers até a proteção avançada de dados e o monitoramento constante, cada camada trabalha em conjunto para criar um ambiente de nuvem seguro e resiliente.

        Entender e implementar essa estratégia é fundamental para qualquer profissional de TI que deseja garantir a segurança e a conformidade de seus sistemas na nuvem.

        Você é responsável pela segurança na nuvem. O que isso significa? Significa que você é responsável pelos dados, pelos endpoints (dispositivos móveis ou PCs que acessam os serviços), pela gestão de contas e acesso, e pela gestão de identidades e acessos. Além disso, se você está utilizando sistemas operacionais, deve garantir que eles estejam atualizados e devidamente corrigidos. Esse é o modelo na nuvem: algumas responsabilidades são transferidas para o provedor de nuvem e outras permanecem com você.

        Vamos agora explorar o portfólio de segurança da OCI. Neste slide, apresento os casos de uso e os serviços disponíveis na OCI, para que você compreenda não apenas os serviços, mas também o contexto em que operam.

        O primeiro serviço é o Web Application Firewall (WAF), que protege aplicações contra tráfego malicioso e indesejado da internet. Ele pode ajudar a mitigar ataques DDoS na camada 7. Também temos o serviço de firewall de rede, que monitora sua rede para atividades maliciosas e pode ajudar na detecção e prevenção de intrusões. Esta camada é toda sobre a proteção da infraestrutura.

        A camada acima desta é sobre a gestão de identidade e acesso, que lida principalmente com seus usuários que têm acesso aos seus sistemas. Quem são esses usuários e qual nível de acesso eles têm? Que permissões eles possuem nos seus sistemas?

        Temos também serviços como a autenticação multifator (MFA). A MFA é um método de autenticação que requer o uso de mais de um fator para verificar a identidade de um usuário. Há ainda outros serviços nesta camada.

        A próxima camada é sobre proteção do sistema operacional e das cargas de trabalho. Assim como nas camadas anteriores, esta camada também possui muitos serviços. Vou tocar rapidamente em alguns deles. As instâncias protegidas são um tipo de máquina virtual que oferece segurança adicional para clientes que precisam atender a requisitos rigorosos de conformidade e segurança.

        Por exemplo, uma das características das instâncias protegidas é o Secure Boot. O que ele faz é que, quando uma VM é iniciada, ela usa apenas software confiável devido ao Secure Boot. Há várias outras características também.

        Temos também o serviço de host dedicado de VM, que é uma máquina bare metal single-tenant dedicada a você, onde você pode executar suas VMs. E temos o serviço de Gerenciamento de SO (OS Management), que monitora e gerencia atualizações e patches, não apenas para uma única máquina, mas literalmente para milhares de máquinas, em escala. Esta camada é toda sobre proteção do sistema operacional e das cargas de trabalho.

        A próxima camada é sobre proteção de dados, que é extremamente crítica. Os dois primeiros componentes que você vê aqui estão relacionados a um serviço chamado Vault. Este serviço ajuda a gerenciar centralmente as chaves de criptografia que protegem seus dados e as credenciais secretas, como senhas, que você usa para acessar recursos.

        Também temos um serviço de certificados, que permite criar e gerenciar autoridades certificadoras (CAs) e os próprios certificados. Esta camada é toda sobre serviços que ajudam a atender aos casos de uso para proteção de dados.

        Finalmente, temos a camada de detecção e remediação, também conhecida como gerenciamento da postura de segurança na nuvem (Cloud Security Posture Management). A ideia é melhorar a postura de segurança de uma organização. Os serviços aqui monitoram continuamente seu ambiente e, se detectarem qualquer tipo de configuração incorreta ou atividades de usuários/operadores, podem notificar você e até remediar automaticamente o problema. O primeiro serviço listado aqui é o Cloud Guard, que faz o gerenciamento da postura de segurança na nuvem.

        Há também o serviço de Security Zones. Pense nisso como compartimentos designados como zonas seguras que cumprem com as políticas de segurança da Oracle. Você pode definir políticas como “recursos não podem ter acesso público”, “criptografia é necessária”, etc. E os recursos que você define nessas zonas de segurança irão cumprir essas políticas de segurança.

        Em resumo, esta é uma visão geral muito elevada dos serviços de segurança. Espero que isso tenha fornecido uma boa visão de como esses serviços de segurança são categorizados com base nos casos de uso e como são implementados nessa mecânica de defesa em profundidade, onde a segurança está embutida em diferentes camadas da infraestrutura.

        Então, como tudo isso funciona? Como você pode ver neste gráfico, você tem um ambiente onde possui algumas redes virtuais e está usando vários serviços de segurança, seja varredura de vulnerabilidades, auditoria, serviço de bastion, Vault ou o serviço de gerenciamento de identidade e acesso.

        Nas próximas lições, entraremos em muitos desses serviços em detalhes. Mas lembre-se, temos um conjunto muito amplo e extenso de serviços de segurança. Então, recapitulando, na nuvem, quando você migra para a nuvem, basicamente obtém esse modelo de segurança compartilhada, e você é responsável por alguns aspectos de segurança enquanto o provedor de nuvem cuida de outros aspectos.

        E a segurança não é apenas um serviço ou um complemento. Existe um conjunto extenso de serviços disponíveis em diferentes camadas da infraestrutura. Vimos alguns deles. Nas próximas lições, vamos explorar alguns desses em maiores detalhes.

        CLOUD GUARD

        Oracle Cloud Guard: Um Guia Técnico Detalhado

        Oracle Cloud Guard, uma funcionalidade única disponível dentro da Oracle Cloud Infrastructure (OCI).

        O que é o Oracle Cloud Guard?

        O Oracle Cloud Guard é um serviço que se enquadra na categoria de Gerenciamento de Postura de Segurança na Nuvem (Cloud Security Posture Management). Ele ajuda a monitorar e identificar potenciais problemas de segurança e, em seguida, remediá-los. Um aspecto particularmente interessante do Cloud Guard é sua capacidade de automatizar completamente a remediação.

        Principais Aspectos do Cloud Guard

        O Cloud Guard opera em dois aspectos principais:

        1. Detecção de Problemas: A detecção pode ser feita de várias maneiras, incluindo a verificação de configurações e o monitoramento de atividades.
        2. Aplicação de Respostas: A resposta a problemas detectados pode ser automatizada, aplicando correções imediatamente.

        Como Funciona na Prática?

        1. Especificação de Alvos

        O primeiro passo é especificar um alvo (target). Um alvo define o escopo dos recursos a serem examinados. Alvos podem ser compartimentos da OCI e seus compartimentos filhos. Em outras palavras, um alvo nada mais é do que os recursos a serem examinados.

        2. Detectores

        Detectores são componentes do Cloud Guard que identificam problemas com recursos ou ações de usuários e alertam quando um problema é encontrado. Por exemplo, se houver uma instância pública onde não deveria haver, ela será sinalizada. Se houver um bucket público, ele também será sinalizado.

        3. Problemas

        Problemas são potenciais questões de segurança. Eles funcionam como notificações de que uma configuração ou atividade é uma potencial questão de segurança.

        4. Respondedores

        Respondedores fornecem notificações e ações corretivas para problemas de segurança. Por exemplo, se uma instância estiver pública, você pode pará-la. Se um bucket estiver público, você pode desativá-lo ou torná-lo privado. Você pode decidir quais tipos de respondedores deseja utilizar.

        Cenário de Exemplo

        Considere um bucket público que você deseja tornar privado para alinhar com sua postura de segurança. Primeiro, o Cloud Guard monitora a configuração do bucket no compartimento em questão. Se o bucket for público, o Cloud Guard aciona um alerta indicando um problema crítico.

        Fluxo de Trabalho

        1. Detecção: O Cloud Guard detecta o bucket público e cria um problema, atribuindo um risco crítico e notificando sobre isso.
        2. Resposta: Os respondedores verificam se estão habilitados para esse tipo de problema. Se sim, podem desencadear eventos na nuvem, notificações ou acionar funções OCI (serverless), como enviar uma mensagem no Slack.
        3. Remediação: Um operador do Cloud Guard, seguindo uma política escrita, verifica se tem permissão para remediar o problema. Se permitido, o Cloud Guard torna o bucket privado, resolvendo o risco crítico e restaurando a segurança.

        Benefícios do Cloud Guard

        O Cloud Guard permite detectar e corrigir automaticamente problemas de segurança, oferecendo um fluxo de trabalho transparente e eficiente. Isso ajuda a manter a postura de segurança da sua infraestrutura na nuvem de forma automatizada e contínua.

        Em resumo, o Oracle Cloud Guard é um serviço de Gerenciamento de Postura de Segurança na Nuvem que monitora, identifica e remedia problemas de segurança, com a capacidade de automação completa das respostas. Esperamos que esta lição tenha sido útil.

        Para mais detalhes, consulte a documentação do Oracle Cloud Guard.

        Security Zones e Security Advisor

        Vamos explorar esses dois serviços cruciais para a segurança na OCI de maneira detalhada e técnica.

        Security Zones

        O que são Security Zones?

        Security Zones são locais configurados dentro da sua infraestrutura onde a segurança não pode ser desabilitada. Basicamente, uma Security Zone é um compartimento designado onde um conjunto específico de políticas de segurança, chamadas de “receitas de Security Zone”, são aplicadas e rigorosamente reforçadas. Essas políticas são projetadas para garantir que todos os recursos dentro desse compartimento sigam as melhores práticas de segurança.

        Funcionamento das Security Zones

        Para entender melhor, imagine que você tem dois compartimentos, compartimento A e compartimento B. Você pode designar o compartimento B como uma Security Zone. Isso significa que qualquer recurso criado ou movido para o compartimento B deve cumprir com as políticas de segurança definidas.

        As políticas podem abranger diversos serviços principais, incluindo:

        • Networking: Por exemplo, se a política exigir que todas as sub-redes sejam privadas, qualquer tentativa de criar uma sub-rede pública será negada.
        • Armazenamento: As políticas podem exigir que todas as chaves de criptografia sejam gerenciadas pelo cliente. Se um usuário tentar usar chaves gerenciadas pelo provedor, a operação será negada.
        • Computação e Bancos de Dados: Políticas específicas podem ser aplicadas para garantir a segurança desses serviços.

        Analogia com um Cofre Seguro

        Pense na sua tenancy (locação) como sua casa. Nem tudo na sua casa precisa de segurança máxima, mas alguns itens, como passaportes, documentos importantes e joias, são guardados em um cofre seguro. Da mesma forma, nem todos os recursos na sua tenancy precisam de segurança máxima, mas aqueles que precisam devem estar em uma Security Zone. Esses recursos terão políticas rígidas aplicadas a eles, e qualquer violação dessas políticas resultará na negação da operação.

        Security Advisor

        O que é o Security Advisor?

        O Security Advisor é um serviço unificado que combina as funcionalidades do Cloud Guard, Security Zone e outros serviços de segurança da OCI em uma solução coesa. Ele fornece uma visão abrangente de como a segurança deve ser gerenciada na OCI, orientando os usuários através das melhores práticas e requisitos de segurança.

        Funcionalidades do Security Advisor

        O Security Advisor oferece suporte para vários serviços, incluindo:

        • Armazenamento de Objetos e Arquivos: Por exemplo, ele pode garantir que os buckets de armazenamento não sejam públicos.
        • Volumes de Bloco e Máquinas Virtuais: Políticas podem ser aplicadas para garantir o uso de chaves de criptografia gerenciadas pelo cliente.

        O Security Advisor guia os usuários no processo de criação e configuração de recursos em uma Security Zone, garantindo que todas as etapas e requisitos de segurança sejam cumpridos.

        Exemplo Prático

        Um exemplo prático seria a criação de um bucket de armazenamento. O Security Advisor não só verifica se o bucket atende aos requisitos de segurança, como também orienta o usuário sobre como configurá-lo corretamente, desde o uso de chaves gerenciadas pelo cliente até a configuração de políticas de acesso.

        O Security Zones são compartimentos designados onde a segurança é reforçada e não pode ser desabilitada. O Security Advisor combina várias capacidades de segurança, incluindo Security Zone e Cloud Guard, para fornecer uma abordagem coesa e integrada de segurança na OCI.

        Um modelo de cenário usando Security Zone

        Referências

        Para mais detalhes, você pode consultar a documentação oficial da Oracle:

        Conceitos Básicos de Criptografia na Oracle Cloud Infrastructure (OCI)

        Vamos explorar o que é a criptografia, os diferentes tipos de algoritmos de criptografia, o que significa criptografia simétrica versus criptografia assimétrica, entre outros tópicos. Vamos começar com os conceitos básicos.

        O que é Criptografia?

        A criptografia é usada para transformar dados em texto claro (plaintext) em texto cifrado (ciphertext). Texto cifrado significa uma série de letras e números aleatórios que os humanos não conseguem entender. Texto claro é legível, mas uma vez criptografado, ele se torna ilegível sem a chave correta.

        Criptografia e Descriptografia

        A criptografia transforma o texto claro em texto cifrado, enquanto a descriptografia é o processo reverso que transforma o texto cifrado de volta em texto claro. Para realizar esses processos, utilizamos um componente essencial chamado chave (key). Uma chave é uma sequência de números ou letras que, quando processada através de um algoritmo criptográfico, pode criptografar ou descriptografar dados.

        Chave de Criptografia e Par de Chaves

        Uma chave de criptografia ou par de chaves é gerado para um algoritmo específico e pode ser usado para criptografia e, em alguns casos, para assinatura digital. O processo visualmente funciona assim:

        • Criptografia: Você pega os dados em texto claro e usa a chave gerada para um algoritmo específico, convertendo-os em texto cifrado.
        • Descriptografia: O texto cifrado é transformado de volta em texto claro usando a mesma chave (no caso de criptografia simétrica) ou uma chave diferente (no caso de criptografia assimétrica).

        Criptografia em Repouso e em Trânsito

        Criptografia em Repouso

        Dados em repouso são aqueles armazenados em um dispositivo físico, como um servidor, banco de dados ou conta de armazenamento. A criptografia de dados em repouso garante que os dados sejam ilegíveis sem as chaves necessárias para descriptografá-los. Se um atacante obtiver um disco rígido com dados criptografados, ele não conseguirá ler esses dados sem acesso às chaves de criptografia.

        Criptografia em Trânsito

        Dados em trânsito são aqueles que se movem de um local para outro, como pela internet ou através de uma rede privada. A criptografia em trânsito protege os dados de atacantes externos e fornece um mecanismo para transmitir dados com risco limitado de exposição. O HTTPS é um exemplo de criptografia em trânsito.

        Tipos de Criptografia

        Criptografia Simétrica

        Na criptografia simétrica, uma única chave é usada para criptografia e descriptografia. Por exemplo, se João quer enviar uma mensagem para Mike, ele usará uma chave secreta para criptografar a mensagem. Mike, que possui a mesma chave, poderá descriptografar a mensagem.

        Criptografia Assimétrica

        Na criptografia assimétrica, chaves diferentes são usadas para criptografia e descriptografia. Um par de chaves é gerado: uma chave pública (que pode ser conhecida por outros) e uma chave privada (conhecida apenas pelo proprietário). Qualquer pessoa pode criptografar mensagens usando a chave pública, mas apenas o detentor da chave privada pode descriptografá-las. A segurança depende do segredo da chave privada.

        Algoritmos de Criptografia

        AES (Advanced Encryption Standard)

        AES é um algoritmo de criptografia simétrica que usa a mesma chave para criptografar e descriptografar dados. Ele pode utilizar chaves de 128, 192 ou 256 bits.

        RSA

        RSA é um algoritmo de criptografia assimétrica onde uma chave pública criptografa os dados e uma chave privada descriptografa. RSA é mais intensivo computacionalmente e mais lento que AES.

        ECDSA (Elliptic Curve Digital Signature Algorithm)

        ECDSA é um algoritmo de criptografia de chave pública baseado em curvas elípticas. Ele gera chaves menores que os algoritmos de assinatura digital tradicionais, sendo utilizado principalmente para assinatura digital, não para criptografia de dados.

        Módulo de Segurança de Hardware (HSM)

        Um Módulo de Segurança de Hardware (HSM) é um dispositivo físico que protege e gerencia chaves digitais, realizando funções de criptografia e descriptografia. HSMs são resistentes a adulteração e certificadas por padrões internacionais, como o FIPS 140-2 Nível 3. No contexto da OCI, o serviço chamado Vault utiliza HSMs certificados para garantir a segurança das chaves de criptografia.

        Características dos HSMs:

        • Resistência a adulterações.
        • Requer autenticação baseada em identidade.
        • Apaga as chaves ao detectar tentativas de adulteração.

        Para mais informações, você pode consultar a documentação oficial da Oracle:

        Serviço OCI Vault

        Vamos explorar o que é o serviço OCI Vault. O OCI Vault é um serviço gerenciado que permite gerenciar centralmente chaves de criptografia e credenciais secretas. O Vault elimina a necessidade de armazenar chaves de criptografia e segredos em arquivos de configuração ou no código. Então, o que são essas chaves e segredos?

        Uma chave especifica como transformar texto claro em texto cifrado durante a criptografia e como transformar texto cifrado em texto claro durante a descriptografia. Segredos são credenciais, como senhas, certificados, chaves SSH ou tokens de autenticação que você pode usar com os serviços da Oracle Cloud Infrastructure. Este serviço específico permite gerenciar centralmente essas chaves de criptografia e credenciais secretas.

        Centralização e Segurança

        A ideia é que você não precise armazenar essas informações em arquivos de configuração ou no código, pois isso pode levar a brechas de segurança. Agora, existem dois modos de proteção para chaves: software e módulos de segurança de hardware (HSM). No OCI, temos módulos de segurança de hardware que atendem à certificação FIPS 140-2 nível III. Essa certificação é um padrão federal para alguns desses módulos HSM. Mas qual é a diferença entre software e HSM?

        A chave mestra protegida por um HSM é armazenada em um dispositivo de módulo de segurança de hardware e não pode ser exportada do HSM. Ela permanece dentro do HSM. Todas as operações criptográficas envolvendo a chave também acontecem no HSM.

        Por outro lado, uma chave mestra protegida por software é armazenada em um servidor e, portanto, pode ser exportada do servidor para realizar operações criptográficas no cliente, em vez de no servidor.

        Quando menciono servidor aqui, basicamente significa seu host de computador ou o host de armazenamento onde o armazenamento remoto ou o armazenamento de objetos é armazenado. Então, essa é a grande diferença entre gerenciar as chaves em HSM e gerenciá-las em software.

        Algoritmos Suportados

        O serviço Vault suporta os algoritmos AES, RSA e ECDSA. Qual é a diferença entre eles?

        • AES: É um algoritmo simétrico, onde a mesma chave criptografa e descriptografa os dados.
        • RSA: É uma criptografia assimétrica, onde a chave pública criptografa os dados e a chave privada descriptografa os dados.
        • ECDSA: As chaves são usadas na assinatura digital, mas não podem ser usadas para criptografar ou descriptografar dados.

        Portanto, há vários casos de uso e vários algoritmos simétricos e assimétricos suportados por este serviço específico. As chaves são integradas com outros serviços do OCI. Você pode girar suas chaves mestras, o que evita a necessidade de realizar uma nova criptografia completa.

        Conceitos Básicos

        O modo de operação do Vault é chamado de criptografia em envelope (envelope encryption). Pense nisso como uma hierarquia de dois níveis para chaves. A criptografia real ocorre com chaves chamadas de chaves de criptografia de dados. Elas são usadas para criptografar dados de clientes. E as chaves mestras de criptografia realmente criptografam as chaves de dados.

        Você pode usar políticas de IAM para autorizar o acesso às chaves mestras. Assim, nem todos têm acesso a essas chaves. Além disso, você pode fazer auditoria de logs para monitorar todas as atividades relacionadas às chaves, garantindo a segurança do seu Vault com políticas e logs de auditoria.

        Benefícios e Considerações

        Os benefícios da criptografia em envelope incluem facilidade de gerenciamento, limitação do raio de explosão e o fato de que você está usando chaves mestras, o que não gera uma recriptografia completa dos dados. Você só precisa girar a chave mestra. No entanto, é importante ter cuidado: se a chave mestra for excluída, não há como recuperar os dados. Por isso, as chaves são excluídas suavemente com um intervalo de sete dias. Você deve fazer os backups necessários.

        Lembre-se de que o Vault não pode ser excluído imediatamente. Você pode agendar a exclusão configurando um período de espera, que pode variar de 7 a 30 dias. O Vault e todas as chaves criadas dentro dele são excluídos no final desse período de espera, e todos os dados protegidos por essas chaves não estarão mais acessíveis após a exclusão do Vault. Uma vez excluído, o Vault não pode ser recuperado, razão pela qual o período de 7 a 30 dias existe por design.

        Exemplo Prático

        Vamos analisar um exemplo de como isso funciona com um serviço OCI. Suponha que você tenha um objeto em um bucket de armazenamento de objetos. Você faz o upload de alguns dados em texto claro. A primeira coisa que o serviço faz é criptografá-lo. A criptografia está ativada por padrão. Você pode trazer suas próprias chaves. Caso contrário, o serviço realiza a criptografia por padrão.

        O serviço de armazenamento de objetos chama o serviço Vault e solicita a geração de uma chave de dados. O serviço Vault retorna uma chave de dados e também a chave de dados criptografada com uma chave mestra. A seguir, o armazenamento de objetos usa essa chave de dados para criptografar os dados em texto claro e descarta a chave de dados. Mas no bucket, ele mantém o objeto criptografado e a chave de dados criptografada.

        Quando uma solicitação é feita para descriptografar esses dados, a chave de dados criptografada é enviada como parte da solicitação ao Vault. O Vault verifica a chave de dados criptografada, identifica a chave mestra e retorna a chave de dados. Esta chave de dados é então usada para descriptografar os dados em texto claro.

        O OCI Vault é um serviço que você pode usar para gerenciar centralmente suas chaves e credenciais secretas. Ele possui muitos recursos avançados, como vimos em alguns exemplos rápidos de como a criptografia em envelope funciona.

        Links Úteis

        Para mais informações, consulte a documentação oficial:


        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 5 – Database)

        Neste módulo vamos abordar os tipos de serviços disponíveis de bancos de dados dentro da Oracle Cloud Infrastructure.

        A Oracle Cloud disponibiliza 3 tipos de serviços de bancos de dados, o primeiro deles é o Oracle Database Service, que trata-se do serviço de banco de dados da Oracle disponibilizado a partir de instâncias de máquinas virtuais com a configuração de um único nó ou dois nós e capacidade de armazenamento a partir de Block Volume.

        O serviço de banco de dados da Oracle oferece algumas automatizações de ciclo de vida, como backups, por exemplo. Se você precisar provisionar um banco de dados, você pode utilizar como bancos de teste por exemplo a partir de um nó único ou ambientes de produção com dois nós de bancos por exemplo.

        A segunda oferta de banco de dados, é o Exadata Database Service de Infraestrutura Dedicada, que é uma combinação da Oracle envolvendo hardware e softwares gerenciados pela Oracle em ambiente dedicado ao cliente, para executar suas cargas de trabalho de banco de dados Oracle. Este é um serviço Co-Gerenciado, onde toda a infraestrutura é gerenciada pela Oracle e o banco de dados pelo cliente.

        A terceira oferta de banco de dados disponibilizado pela Oracle é o Autonomous Database, que é um serviço de banco de dados autônomo que oferece patches de atualização, e ajustes totalmente automatizados enquanto o serviço está rodando, sem nenhum tipo de parada ou intervenção humana. Este banco é auto-gerenciável, auto-protegido e auto-reparável que evita erros humanos e gerenciamentos manuais.

        No ambiente de Exadata Infrastructure, você tem dois modos, o dedicado e o compartilhado. No ambiente compartilhado, você somente implementa o seu banco de dados e a Oracle gerencia todo o ambiente de infraestrutura, enquanto no ambiente dedicado, a Oracle disponibiliza de forma dedicada toda uma estrutura de hardware, software, rede e banco de dados, de forma exclusiva.

        A Oracle ainda disponibiliza o Cloud@Customer, que é uma solução no qual a Oracle disponibiliza no seu Data Center, a infraestrutura do Exadata, que permite atender requisitos regulatórios, armazenamento de dados locais, baixa latência de rede, enquanto ao mesmo tempo você pode executar o seus recursos da Oracle Cloud a partir da Cloud pública da Oracle.

        E você ainda pode dentro deste modelo de produto executar bancos de dados Autonomous Database.

        A partir disso você tem uma visão geral dos serviços de banco de dados disponibilizados pela Oracle Cloud e seus modelos.

        Autonomous Database

        O banco de dados Autonomouse Database é um modelo de banco de dados que utiliza Machine Learning para automatizar o processo de backup, atualizações e segurança, assim como tarefas de gerenciamento de rotina, tradicionalmente executadas por um DBA. A ideia é que todos esses processos de manutenção, atualização, segurança e infraestrutura sejam automatizados, de modo não a substituir um DBA, mas sim para que ele possa se concentrar a tarefas mais importantes com relação ao negócio em si.

        No contexto do Autonomous Database, você tem o recurso de self-repairing, que garante o reparo automático do seu banco de dados em caso de falhas.

        E você tem o self-driving, que permite otimizações automáticas de banco de dados sem intervenção manual.

        Como mostrado na imagem acima, a ideia é a automzação de todos os recursos de infraestrutura associado aos recursos de Machine Learning, eliminando tarefas manuais e repetitivas.

        Você tem portanto dois tipos de alocação do recursos para o Autonomous Database, o compartilhado e dedicado.

        E dentro do modelo de Autonomous Database, você tem dois tipos de carga de trabalho, o Autonomous Transaction Processing (ATP) e Autonomous Data Warehouse (ADW),

        O ATP trabalha com processamento de transações, enquando o ADW trabalha com processamento de dados analíticos online.

        O intuito aqui é mostrar o tipos de recursos e a sua aplicação, não é aplicar conceitos e técnicas de DBA.

        Para estes dois tipos de cargas de trabalho, ainda tempos outros dois tipos de carga de trabalho que são o Autonomouse JSON Database (AJD) e o APEX Service.

        O AJD é o ATP projetado para o desenvolvimento de aplicativos NoSQL com arquivos JSON, no qual ele é otimizado para esta tarefa, o APEX Service é recurso de escopo e tipo de carga de trabalho de preço mais baixo do Autonomous Database que permite o a criação e implantação de aplicativos APEX low code.

        Material de referência

        https://www.oracle.com/autonomous-database

        Documentação

        https://docs.oracle.com/en/database/autonomous-database-cloud-services.html

        MySQL

        A Oracle Cloud oferece o serviço do MySQL que é um dos produtos de seu portfólio de banco de dados como solução de banco de dados na Oracle Cloud.

        Você pode executar bancos de dados MySQL na Oracle Cloud como serviço de forma rápida, prática e sem a preocupação de gerenciamento de infraestrutura de um banco de dados MySQL.

        Dentro do ambiente você pode executar patches, atualizações e rotinas básicas do seu banco de dados e usar os recursos de computação elástica, permitindo que seu banco se torne facilmente escalável e disponível, podendo aumentar e diminuir recursos de computação e armazenamento, fazer replicações, ainda com todos os recursos de segurança disponíveis, ainda reduzindo seu custo de propriedade.

        As particularidades deste serviço do MySQL na Oracle Cloud são a alta disponibilidade e o HeatWave.

        Você pode executar o MySQL em uma instância standalone, como uma única instância do MySQL como banco de dados. E também pode executar ele no modo High Availability (Alta disponibilidade) com 3 nós de instâncias do MySQL em diferentes domínios de disponibilidades ou com diferentes domínios de falha, com failover automático e zero perda de dados.

        Sua aplicação se conecta a um determinado endpoint de comunicação, e em caso de indisponibilidade de algum nó, o MySQL Database Service fará automaticamente a mudança para outro ponto de disponibilidade sem perda de dados e sem exigir a reconfiguração da sua aplicação.

        O MySQL HeatWave é o serviço do MySQL de aceleração de consulta e alto desempenho integrado por ordem de consulta de transações e análise de dados.

        Com o HeatWave você elimina a necessidade de processos caros, demorados e complexos de de replicação do dados e movimentação/integração de dados para um banco de dados de análise separado.

        O MySQL HeatWave permite desempenho de consulta acelerado usando armazenamento de dados em memória.

        O Online Analytical Processing (OLAP) no MySQL HeatWave permite principalmente que o MySQL lide com eficiência otimizando suas consultas de bancos de dados.

        Este recurso está disponível exclusivamente dentro da Oracle Cloud e AWS

        Material de referência

        https://www.oracle.com/br/mysql

        Documentação

        https://docs.oracle.com/en-us/iaas/mysql-database/index.html

        Oracle NoSQL Database

        O Oracle NoSQL Database é o serviço de banco de dados NoSQL disponibilizado pela Oracle Cloud que trata os dados de forma de lista longa. Um serviço totalmente gerenciado, elástico e de alta desempenho, feito para leitura de dados em grandes volumes em milisegundos com alta largura de banda em altas cargas de trabalho, com um modelo de armazenamento variado.

        Seu banco de dados por suportar vários modelos de documento, chave-valor, esquema fixo, etc. Tudo com uma única interface de aplicação, com segurança em nível empresarial, controle de acesso robusto, podendo gerenciar todos os tipos de acesso. Tudo isso com um custo operacional muito baixo por estar executando na nuvem.

        Você tem o uso de APIs-REST com diferentes ferramentas de desenvolvimento, podendo ainda permitir o uso Multi-Cloud com uma única interface com ambientes On-Premise e outras Clouds fora da Oracle Cloud.

        Os bancos de dados NoSQL tem diversos usos, sendo utilizado para dados em larga escala em ambientes como Aplicações mobile, IoT, Avaliação 360, Big Data, Games, Redes sociais, Anúncios online, etc.

        Material de referência

        https://www.oracle.com/br/database/nosql

        Documentação

        https://docs.oracle.com/en/database/other-databases/nosql-database/24.1/concepts.html

        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 4 – Storage)

        Introdução ao Storage na OCI

        No Oracle Cloud Infrastructure (OCI), o armazenamento é um componente fundamental que permite armazenar e gerenciar dados de maneira eficiente e segura. O OCI oferece várias soluções de armazenamento para atender a diferentes necessidades de negócios. Neste módulo, exploraremos detalhadamente os principais tipos de armazenamento oferecidos pela OCI, suas características, casos de uso e exemplos práticos.

        1. Object Storage

        O Object Storage é uma solução escalável e durável para armazenar dados não estruturados, como arquivos de log, backups, imagens e vídeos. Ele é projetado para alta durabilidade e acessibilidade.

        Características:

        • Escalabilidade: Armazena uma quantidade ilimitada de dados.
        • Durabilidade: Replica dados automaticamente em múltiplos domínios de falha.
        • Acessibilidade: Dados acessíveis via API RESTful.
        • Segurança: Suporte a criptografia em repouso e em trânsito. E também pode usar chave pré-autenticada. E acesso privado de recursos OCI.
        • Serviço Regional: Você cria um bucket para ser usado em uma região podendo ser público.
        • Armazenamento: Várias camadas de armazenamento, em múltiplos tiers.

        Casos de Uso:

        • Armazenamento de dados de backup.
        • Armazenamento de arquivos de mídia (imagens, vídeos).
        • Logs e arquivos de dados analíticos.

        Exemplo Prático:

        # Criando um bucket no Object Storage usando o OCI CLI
        oci os bucket create --name my_bucket --compartment-id <compartment_id>
        
        # Fazendo upload de um arquivo para o bucket
        oci os object put --bucket-name my_bucket --name my_file.txt --file /path/to/file.txt
        

        Recursos do Object Storage na OCI

        Componentes Principais

        A imagem fornecida descreve os principais recursos do Object Storage na Oracle Cloud Infrastructure (OCI). Vamos detalhar cada um desses componentes:

        1. Object

        • Descrição: Um objeto no Object Storage é a unidade fundamental de armazenamento. Cada objeto consiste em dados e metadados associados.
        • Componentes:
          • Dados do Objeto: O conteúdo real do arquivo ou dados que estão sendo armazenados.
          • Metadados do Objeto: Informações adicionais sobre o objeto, como tipo de arquivo, tamanho, data de criação, permissões, entre outros.

        Exemplo: Se você armazena uma imagem chamada “foto.jpg”, os dados do objeto seriam a própria imagem, enquanto os metadados podem incluir informações como a data em que a foto foi tirada, o formato da imagem, etc.

        2. Bucket

        • Descrição: Um bucket é um contêiner que armazena objetos. Ele fornece uma maneira de organizar e agrupar objetos no Object Storage.
        • Características:
          • Armazenamento em Bucket: Todos os objetos são armazenados dentro de um bucket.
          • Nome Único na Tenancy: Cada bucket deve ter um nome único dentro de uma tenancy (ambiente de locação).
          • Hierarquia Plana: O Object Storage usa uma hierarquia plana, o que significa que não há sub-buckets dentro de um bucket. Todos os objetos estão no mesmo nível dentro do bucket.

        Exemplo: Você pode criar um bucket chamado “meu_bucket_imagens” para armazenar todas as suas imagens. Dentro deste bucket, você pode ter objetos como “foto1.jpg”, “foto2.png”, etc.

        3. Namespace

        • Descrição: Um namespace é uma entidade lógica que atua como um contêiner de nível superior para todos os buckets e objetos dentro de uma tenancy.
        • Características:
          • Entidade Lógica: Agrupa todos os buckets e objetos sob uma única identidade.
          • Nome Global Único: Cada tenancy possui um namespace com um nome único globalmente, garantindo que não haja conflito de nomes entre diferentes tenancies.

        Exemplo: Se o namespace da sua tenancy for “empresa_xyz”, todos os seus buckets e objetos estarão agrupados sob esse namespace. Portanto, você pode ter um bucket “meu_bucket_imagens” e um objeto “foto1.jpg” referenciado como “empresa_xyz/meu_bucket_imagens/foto1.jpg”.

        Tiers de Object Storage na OCI

        O Oracle Cloud Infrastructure (OCI) Object Storage oferece diferentes níveis (tiers) de armazenamento para atender a várias necessidades de negócios e otimizar os custos de armazenamento. Os três principais tiers de Object Storage são:

        1. Standard Storage (Armazenamento Padrão)
        2. Infrequent Access Storage (Armazenamento de Acesso Infrequente)
        3. Archive Storage (Armazenamento de Arquivo)

        Vamos detalhar cada um desses tiers:

        1. Standard Storage (Armazenamento Padrão)

        Descrição:

        • O tier de Armazenamento Padrão é destinado a dados que requerem acesso frequente e imediato.
        • Ideal para dados que são frequentemente lidos ou escritos.

        Características:

        • Alta Disponibilidade: Acesso rápido e contínuo aos dados.
        • Desempenho: Projetado para alta performance em termos de leitura e escrita.
        • Durabilidade: Alta durabilidade com replicação automática de dados em múltiplos domínios de falha.
        • Custo: Maior custo de armazenamento em comparação aos outros tiers devido ao acesso rápido e frequente aos dados.

        Casos de Uso:

        • Dados de aplicações em tempo real.
        • Conteúdo de sites e mídias.
        • Arquivos de log e dados analíticos que precisam ser acessados frequentemente.

        2. Infrequent Access Storage (Armazenamento de Acesso Infrequente)

        Descrição:

        • O tier de Armazenamento de Acesso Infrequente é destinado a dados que são acessados com menos frequência, mas ainda exigem acesso rápido quando necessário.
        • Oferece um custo-benefício para dados que não são acessados diariamente, mas ainda precisam estar disponíveis sem demora.

        Características:

        • Disponibilidade: Dados disponíveis quase instantaneamente.
        • Desempenho: Menor performance em comparação ao Armazenamento Padrão, mas ainda adequado para acesso ocasional.
        • Durabilidade: Mesma durabilidade do Armazenamento Padrão com replicação automática de dados.
        • Custo: Menor custo de armazenamento do que o Armazenamento Padrão, mas pode haver custos adicionais por acesso.

        Casos de Uso:

        • Dados históricos de negócios.
        • Arquivos de backup que precisam ser recuperados ocasionalmente.
        • Dados de conformidade que não são acessados frequentemente.

        3. Archive Storage (Armazenamento de Arquivo)

        Descrição:

        • O tier de Armazenamento de Arquivo é destinado a dados que são raramente acessados e podem tolerar um tempo de recuperação mais longo.
        • Ideal para arquivamento a longo prazo de dados que não precisam de acesso imediato.

        Características:

        • Disponibilidade: Maior tempo de recuperação, com recuperação dos dados levando horas.
        • Desempenho: Não destinado para acesso rápido; projetado para armazenamento de longo prazo.
        • Durabilidade: Mesma durabilidade dos outros tiers com replicação automática de dados.
        • Custo: Menor custo de armazenamento, ideal para dados que raramente precisam ser acessados.

        Casos de Uso:

        • Arquivamento de registros financeiros e legais.
        • Backups a longo prazo.
        • Dados de conformidade e regulatórios.

        Exemplo de Uso dos Tiers

        Migração de Dados entre Tiers:

        # Movendo um objeto do Standard Storage para o Archive Storage
        oci os object put --bucket-name my_bucket --name my_file.txt --file /path/to/file.txt --storage-tier Archive
        
        # Movendo um objeto do Archive Storage para o Standard Storage (necessário download e upload novamente)
        oci os object get --bucket-name my_bucket --name my_file.txt --file /path/to/file.txt
        oci os object put --bucket-name my_bucket --name my_file.txt --file /path/to/file.txt --storage-tier Standard

        Os diferentes tiers de Object Storage da OCI permitem que as organizações escolham a melhor opção de armazenamento com base nas suas necessidades de acesso aos dados e considerações de custo. Entender quando usar cada tier ajuda a otimizar os custos de armazenamento enquanto garante que os dados estão disponíveis conforme necessário.

        Auto-Tiering no Object Storage da OCI

        O Auto-Tiering no Oracle Cloud Infrastructure (OCI) é um recurso avançado que otimiza automaticamente a colocação de dados nos tiers de armazenamento mais apropriados com base nos padrões de acesso. Esse mecanismo inteligente monitora o uso dos dados e migra automaticamente objetos entre o Armazenamento Padrão, Acesso Infrequente e Arquivo, conforme necessário. Isso garante que os dados frequentemente acessados estejam disponíveis rapidamente no tier de alto desempenho, enquanto dados acessados raramente são movidos para tiers de menor custo, maximizando a eficiência e reduzindo os custos operacionais sem a necessidade de intervenção manual.

        Conclusão

        O Object Storage na OCI é estruturado de forma a fornecer uma maneira eficiente e organizada de armazenar grandes volumes de dados não estruturados. Compreender esses recursos – objetos, buckets e namespaces – é crucial para utilizar efetivamente o serviço de Object Storage, garantindo organização, segurança e acessibilidade dos seus dados.

        Se precisar de mais informações ou exemplos práticos, sinta-se à vontade para perguntar!

        2. Block Storage

        O Block Storage é uma solução de armazenamento em bloco que oferece volumes de alto desempenho que podem ser anexados a instâncias de computação. Esta solução consiste em manter os dados persistentes e duráveis.

        Você pode criar e atachar discos nas suas instâncias, desatachar e excluir os discos e ainda manter os discos e presenvar os dados após excluir suas instâncias.

        Tiers de Block Volumes na OCI

        No Oracle Cloud Infrastructure (OCI), os Block Volumes oferecem três tiers de desempenho para atender a diferentes necessidades de carga de trabalho: Basic, Balanced e High Performance. Cada um desses tiers possui características específicas em termos de desempenho e custo, permitindo que os usuários escolham a opção mais adequada para suas aplicações.

        1. Basic Performance (Desempenho Básico)

        Descrição:

        • O tier Basic é ideal para cargas de trabalho que não requerem alta performance de IOPS (operações de entrada/saída por segundo).
        • Destinado a armazenamento de dados a um custo reduzido.

        Características:

        • IOPS: Até 2 IOPS por GB.
        • Throughput: Até 60 KB/s por GB.
        • Latência: Latência moderada, adequada para dados que não são acessados frequentemente.
        • Custo: O mais baixo entre os três tiers, ideal para economizar em custos de armazenamento.

        Casos de Uso:

        • Dados de backup.
        • Arquivos de log e dados arquivados.
        • Cargas de trabalho de desenvolvimento e teste que não são sensíveis a desempenho.

        2. Balanced Performance (Desempenho Balanceado)

        Descrição:

        • O tier Balanced é uma opção intermediária que oferece um equilíbrio entre custo e desempenho.
        • Adequado para uma ampla gama de aplicações que requerem desempenho consistente.

        Características:

        • IOPS: Até 60 IOPS por GB.
        • Throughput: Até 480 KB/s por GB.
        • Latência: Baixa latência, adequada para aplicações que necessitam de desempenho consistente.
        • Custo: Moderado, oferecendo um bom compromisso entre custo e desempenho.

        Casos de Uso:

        • Bancos de dados transacionais.
        • Aplicações de negócios.
        • Sistemas de arquivos de uso geral.

        3. High Performance (Alto Desempenho)

        Descrição:

        • O tier High Performance é projetado para cargas de trabalho que exigem alta performance de IOPS e baixa latência.
        • Ideal para aplicações críticas que dependem de desempenho rápido e consistente.

        Características:

        • IOPS: Até 75 IOPS por GB.
        • Throughput: Até 600 KB/s por GB.
        • Latência: Muito baixa, garantindo resposta rápida para aplicações de alta demanda.
        • Custo: Mais alto entre os três tiers, refletindo o desempenho superior oferecido.

        Casos de Uso:

        • Aplicações OLTP (Processamento de Transações Online).
        • Bancos de dados de alta performance.
        • Grandes sistemas de processamento de dados em tempo real.

        Comparação dos Tiers de Block Volumes

        TierIOPS MáximoThroughput MáximoLatênciaCusto
        BasicAté 2 IOPS/GBAté 60 KB/s/GBModeradaBaixo
        BalancedAté 60 IOPS/GBAté 480 KB/s/GBBaixaModerado
        High PerformanceAté 75 IOPS/GBAté 600 KB/s/GBMuito BaixaAlto

        Os diferentes tiers de Block Volumes na OCI permitem que as organizações escolham a melhor opção de desempenho e custo para suas cargas de trabalho. Entender as características de cada tier ajuda a otimizar o desempenho das aplicações enquanto gerencia os custos de forma eficaz. Seja para armazenamento de dados a baixo custo, aplicações de uso geral ou necessidades de alta performance, a OCI oferece uma solução de Block Volume adequada para cada caso.

        Encriptação dos Block Volumes na OCI

        A Oracle Cloud Infrastructure (OCI) oferece recursos avançados de encriptação para proteger os dados armazenados nos Block Volumes. A encriptação é fundamental para garantir a segurança e conformidade dos dados, protegendo informações sensíveis contra acessos não autorizados. A imagem fornecida destaca dois aspectos principais da encriptação dos Block Volumes: Bring Your Own Keys (BYOK) e In-Transit Encryption.

        1. Encriptação em Repouso

        Descrição:

        • Todos os Block Volumes na OCI são encriptados em repouso por padrão usando chaves de encriptação gerenciadas pela OCI.
        • Isso garante que os dados estejam protegidos contra acessos não autorizados enquanto estão armazenados nos volumes.

        Características:

        • Criptografia Automática: Todos os dados são automaticamente encriptados antes de serem gravados no armazenamento.
        • Chaves Gerenciadas pela OCI: OCI gerencia as chaves de encriptação de forma transparente para o usuário, proporcionando uma camada adicional de segurança.

        2. Bring Your Own Keys (BYOK)

        Descrição:

        • O recurso BYOK permite que os usuários tragam suas próprias chaves de encriptação para usar com os Block Volumes.
        • Isso proporciona um nível adicional de controle sobre a segurança das chaves de encriptação.

        Características:

        • Gerenciamento de Chaves: Usuários podem criar e gerenciar suas próprias chaves de encriptação usando o serviço Oracle Cloud Infrastructure Vault.
        • Segurança Aprimorada: Oferece controle total sobre as chaves de encriptação, permitindo conformidade com políticas de segurança específicas.

        Benefícios:

        • Conformidade: Atende a requisitos regulatórios e de conformidade que exigem controle total sobre as chaves de encriptação.
        • Flexibilidade: Permite aos usuários integrar sua infraestrutura de segurança existente com a OCI.

        Exemplo:

        • Criar uma chave de encriptação no OCI Vault e usá-la para encriptar um Block Volume.

        3. In-Transit Encryption

        Descrição:

        • A encriptação em trânsito protege os dados enquanto eles são transferidos entre a instância de computação e o Block Volume.
        • Garante que os dados não sejam interceptados ou modificados durante a transmissão.

        Características:

        • TLS (Transport Layer Security): OCI utiliza o protocolo TLS para encriptar dados em trânsito.
        • Proteção de Dados: Garante que os dados estejam seguros enquanto são transferidos, protegendo contra ataques man-in-the-middle.

        Exemplo Prático de Configuração

        Criar e Anexar um Block Volume com Encriptação:

        1. Criação do Volume:
           oci bv volume create --compartment-id <compartment_id> --availability-domain <availability_domain> --size-in-gbs 100 --display-name my_volume
        1. Anexar o Volume a uma Instância:
           oci compute volume-attachment create --volume-id <volume_id> --instance-id <instance_id> --type paravirtualized
        1. Configurar BYOK:
        • Criar uma chave no OCI Vault:
        oci kms management key create --compartment-id --key-shape '{"algorithm":"AES","length":"256"}' --display-name my_key
        • Usar a chave criada para encriptar o volume:
        oci bv volume update --volume-id --kms-key-id

        A encriptação dos Block Volumes na OCI oferece uma camada robusta de segurança para proteger dados em repouso e em trânsito. Com a possibilidade de usar chaves gerenciadas pela OCI ou trazer suas próprias chaves (BYOK), os usuários têm flexibilidade e controle total sobre a segurança de seus dados. A combinação de encriptação em repouso e em trânsito garante que os dados estejam protegidos contra acessos não autorizados e ameaças durante todo o ciclo de vida do armazenamento.

        Características:

        • Desempenho: Oferece alta IOPS e baixa latência.
        • Durabilidade: Dados replicados automaticamente para proteção contra falhas.
        • Flexibilidade: Possibilidade de redimensionar volumes sem interrupção.
        • Segurança: Suporte a criptografia em repouso e em trânsito.

        Casos de Uso:

        • Armazenamento de dados de aplicação.
        • Sistemas de arquivos.
        • Bases de dados.

        Exemplo Prático:

        # Criando um volume de Block Storage usando o OCI CLI
        oci bv volume create --compartment-id <compartment_id> --availability-domain <availability_domain> --size-in-gbs 50 --display-name my_volume
        
        # Anexando o volume a uma instância de computação
        oci compute volume-attachment create --volume-id <volume_id> --instance-id <instance_id> --type paravirtualized
        

        Os volumes podem ser de modo shareable, permitindo que várias VMs ao mesmo tempo possam ler e gravar os dados dentro do mesmo volume.

        Os Block Volumes podem ser redimensionados (sempre para cima) de modo online e a qualquer momento no seu ambiente.

        Você pode fazer a replicação dos seus Block Volumes entre regiões, de modo que pode usar este recurso como Disaster Recovery, Migração de dados, e expansão da sua estrutura. Esta replicação é feita de forma assíncrona de uma região para outra.

        Você ainda pode agrupar os Block Volumes em grupos, de modo que os Volumes Groups permitem backups automatizados, backups de múltiplos volumes entre instâncias, e um fácil gerenciamento destes volumes.

        3. File Storage

        O serviço de File Storage da Oracle Cloud Infrastructure (OCI) oferece um sistema de arquivos distribuído altamente disponível e escalável, projetado para ser utilizado por aplicações que necessitam de um armazenamento compartilhado. A imagem fornecida ilustra a estrutura hierárquica do armazenamento de arquivos e os sistemas de arquivos distribuídos suportados, destacando suas características principais.

        Estrutura Hierárquica de Documentos

        Descrição:

        • O File Storage organiza documentos em diretórios nomeados em uma estrutura hierárquica, começando do diretório raiz (root).
        • A hierarquia permite uma organização clara e estruturada dos dados, facilitando a navegação e gerenciamento.

        Características:

        • Hierarquia: Diretórios organizados de forma lógica e hierárquica, semelhante aos sistemas de arquivos tradicionais.
        • Facilidade de Uso: Permite a criação, deleção, leitura, escrita, compartilhamento e bloqueio de arquivos de maneira intuitiva.

        Sistemas de Arquivos Distribuídos

        Descrição:

        • O File Storage da OCI é compatível com os principais protocolos de sistema de arquivos distribuídos, como NFS (Network File System) para Linux e SMB (Server Message Block) para Windows.
        • Esses protocolos permitem que o File Storage seja montado em diferentes sistemas operacionais, proporcionando flexibilidade e interoperabilidade.

        Características:

        • Suporte a Vários Sistemas Operacionais: Compatível com UNIX (Linux) e Windows.
        • Operações Completas: Suporta operações completas de arquivos, incluindo criação, deleção, leitura, escrita, compartilhamento e bloqueio.
        • Suporte Amplo: Compatível com todos os principais sistemas operacionais e hipervisores.
        • Sem Necessidade de Software Cliente Adicional: Geralmente não requer software cliente adicional para acesso.
        • Acesso via Redes: Proporciona acesso ao armazenamento de arquivos através de redes, permitindo uso remoto e compartilhado.

        Protocolos Suportados

        • NFS (Network File System): Protocolo usado principalmente em sistemas UNIX/Linux para compartilhar diretórios e arquivos.
        • Uso: Ideal para aplicações Linux que requerem um sistema de arquivos compartilhado.
        • SMB (Server Message Block): Protocolo usado principalmente em sistemas Windows para compartilhamento de arquivos e impressoras.
        • Uso: Adequado para ambientes Windows que necessitam de compartilhamento de arquivos.

        Benefícios do File Storage na OCI

        • Alta Disponibilidade: Projetado para fornecer alta disponibilidade, garantindo que os dados estejam sempre acessíveis.
        • Escalabilidade: Capaz de escalar conforme a necessidade, suportando grandes volumes de dados sem comprometer o desempenho.
        • Desempenho: Oferece alto desempenho para aplicações que requerem acesso rápido e consistente aos dados.
        • Segurança: Inclui mecanismos robustos de segurança, como encriptação em trânsito e em repouso, controle de acesso baseado em IAM (Identity and Access Management) e integração com o OCI Vault para gerenciamento de chaves.

        Exemplo Prático de Montagem de File System

        Montar um sistema de arquivos NFS em uma instância Linux:

        1. Criar um Sistema de Arquivos no OCI:
           oci fs file-system create --compartment-id <compartment_id> --availability-domain <availability_domain> --display-name my_file_system
        1. Obter o Alvo de Montagem:
           oci fs mount-target list --compartment-id <compartment_id>
        1. Montar o Sistema de Arquivos na Instância Linux:
           sudo mount -t nfs <mount_target_ip_address>:/<file_system_export> /mnt/my_file_system

        Conclusão

        O File Storage da OCI é uma solução poderosa e flexível para armazenamento compartilhado de arquivos, oferecendo suporte a protocolos amplamente utilizados como NFS e SMB. Sua capacidade de escalar, juntamente com características de alta disponibilidade e segurança, torna-o ideal para uma variedade de aplicações empresariais e cargas de trabalho que necessitam de um sistema de arquivos robusto e confiável.

        Características:

        • Escalabilidade: Suporta crescimento dinâmico do sistema de arquivos.
        • Durabilidade: Alta disponibilidade e proteção de dados.
        • Compatibilidade: Suporte a NFSv3.
        • Segurança: Criptografia de dados em repouso e em trânsito.

        Casos de Uso:

        • Compartilhamento de arquivos entre instâncias de computação.
        • Armazenamento de dados de aplicação que requerem acesso simultâneo.
        • Repositórios de conteúdo.

        Exemplo Prático:

        # Criando um sistema de arquivos no File Storage usando o OCI CLI
        oci fs file-system create --compartment-id <compartment_id> --availability-domain <availability_domain> --display-name my_file_system
        
        # Montando o sistema de arquivos em uma instância de computação
        sudo mount -t nfs <mount_target_ip_address>:/<file_system_export> /mnt/my_file_system
        

        4. Archive Storage

        Descrição: O Archive Storage é uma solução de armazenamento de baixo custo para dados que são raramente acessados, ideal para arquivamento a longo prazo.

        Características:

        • Baixo Custo: Preço competitivo para armazenamento a longo prazo.
        • Durabilidade: Mesma durabilidade do Object Storage.
        • Segurança: Suporte a criptografia em repouso e em trânsito.

        Casos de Uso:

        • Armazenamento de dados de conformidade e regulatórios.
        • Arquivos de backup a longo prazo.
        • Dados históricos que não precisam de acesso frequente.

        Exemplo Prático:

        # Movendo um objeto do Object Storage para o Archive Storage
        oci os object put --bucket-name my_archive_bucket --name my_archive_file.txt --file /path/to/file.txt --storage-tier Archive
        

        Conclusão do módulo

        Neste módulo, exploramos os principais tipos de armazenamento oferecidos pela Oracle Cloud Infrastructure, incluindo Object Storage, Block Storage, File Storage e Archive Storage. Compreender as características e casos de uso de cada tipo de armazenamento é fundamental para selecionar a solução mais adequada às necessidades do seu ambiente.

        Nos próximos módulos, continuaremos a explorar outros serviços e funcionalidades da OCI que são essenciais para a certificação OCI Foundations Associate.

        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 3 – Computação)

        Neste módulo do preparatório para a certificação Foundations Associate da Oracle Cloud, vamos abordar os pontos relativos a Computação no ambiente da OCI, no que diz respeito a instâncias como servidores virtuais, servidores bare metal, containeres e OKE, que é o Kubernetes da OCI.

        COMPUTE

        A OCI disponibiliza servidores no formato de servidores virtuais (instâncias) e servidores físicos (bare metal) e Host Dedicado como recursos de computação para atender os mais diversos tipos de cargas de trabalho, visando escalabilidade, alta disponibilidade e baixo custo.

        A arquitetura de CPU nestes ambientes de servidores da OCI são disponibilizados em OCPUs arquitetura (x86/64) com processadores Intel e AMD, e ARM, onde você pode customizar OCPUs e memória no shape da sua máquina de acordo com a sua necessidade. Diferente de ambientes como a AWS, na OCI você pode ajustar a memória a sua necessidade independente de ser obrigatório mudar o shape da CPU e vice-versa.

        Abaixo um exemplo de como pode ser customizado o seu shape no momento da configuração da sua instância.

        Na imagem acima veja que na tela de customização, para cada tipo de shape você tem os valores máximos de OCPU e memória que podem ser configurados, além da arquitetura do processador que você possui em cada tipo de shape.

        Quando você seleciona o shape já irá notar que irá aparecer uma caixa como esta abaixo com os valores estimados ao seu tipo de shape selecionado.

        Diferenças entre os tipos de servidores na OCI

        Servidores Virtuais

        Nos servidores virtuais você tem a facilidade de ter um ambiente Multi Tenant, e baixo custo, possibilidade de uma customização variada de shape, forte isolamento de segurança e estão em um ambiente compartilhado de recursos.

        Servidores Bare Metal

        Nos servidores Bare Metal você tem um sistema operacional diretamente instalado para execução das suas aplicações e cargas de trabalho.

        Host Dedicado

        Nos Hosts Dedicados você tem a possibilidade de executar suas VMs internas dentro dele como um Hypervisor, disponibilizando um ambiente dedicado para suas VMs, e neste ambiente somente as suas VMs são executadas.

        Recomendo dar uma olhada na documentação de Shapes de Computação da OCI sobre o assunto.

        https://docs.public.oneportal.content.oci.oraclecloud.com/en-us/iaas/compute-cloud-at-customer/topics/compute/compute-shapes.htm#compute-shapes

        A OCI oferece servidores com 3 opções de arquitetura de processadores, AMD Epic, Intel Xeon e ARM Ampere Altra. E você pode perceber nas comparações de Benchmark fazendo algumas pesquisas que os processadores ARM Ampere tem um desempenho maior que processadores AMD e Intel, nos quais podem ser observados em testes com servidores web, API gateways e microserviços.

        Obs.: Testes de benchmark feitos com sysbench cpu

        Na OCI você tem possibilidade de criar VMs com recursos preemptivos, onde você pode executaruma carga maior quando você tem a execução de maiores cargas de trabalho, um tempo de vida mais curto, mais direcionada a execução de cargas específicas, mantendo um custo menor por não ter a necessidade de manter a configuração de carga disponível durante todo o tempo, garantindo um custo geralmente até 50% menor.

        Ao criar a sua instância, você tem a opção de fazer vários ajustes na configuração do seu shape.

        Você tem os tipos de capacidade On-demand, que disponibiliza sua VM em tempo integral na configuração do shape escolhido, Capacidade Preemptiva, onde você pode utilizá-la para execução de cargas específicas com um custo menor, Capacidade Reservada que permitem reservar instâncias com antecedência para que a capacidade esteja disponível para suas cargas de trabalho quando você precisar, Host Dedicado que permite a você ter uma máquina com recursos totalmente dedicados para execução das suas aplicações com todos os recursos dela dedicados e sem opção de compartilhamento do processamento com outros clientes e Cluster de Computação que disponibiliza um grupo de computação de alto desempenho (HPC), GPU ou instâncias otimizadas que estão conectadas a uma rede de alta largura de banda e latência ultrabaixa.

        Abaixo vou detalhar melhor cada um destes tipos.

        On-Demand

        Pague apenas pela capacidade de computação que você usa. Com a capacidade sob demanda, você paga pela capacidade computacional por segundo e, dependendo do formato, paga apenas pelas horas em que suas instâncias estiverem em execução. A disponibilidade de capacidade não é garantida ao lançar grandes cargas de trabalho.

        Preemptiva

        A capacidade preemptiva permite economizar dinheiro usando instâncias preemptivas para executar cargas de trabalho que só precisam ser executadas por breves períodos ou que podem ser interrompidas quando a capacidade for recuperada. As instâncias preemptivas se comportam da mesma forma que as instâncias de computação regulares, mas a capacidade é recuperada quando é necessária em outro lugar e as instâncias são encerradas.

        Reserva de Capacidade

        Reserve capacidade para uso futuro e garanta que a capacidade esteja disponível para criar instâncias do Compute sempre que você precisar delas. A capacidade reservada é usada quando você executa instâncias na reserva. Quando estas instâncias são encerradas, a capacidade é devolvida à reserva e a capacidade não utilizada na reserva aumenta. A capacidade reservada não utilizada é medida de forma diferente da capacidade reservada utilizada.

        Host Dedicado

        Execute instâncias de VM em servidores dedicados que sejam de um único locatário e não sejam compartilhados com outros clientes. Esse recurso permite atender aos requisitos regulatórios e de conformidade para isolamento que impedem o uso de infraestrutura compartilhada. Você também pode usar esse recurso para atender aos requisitos de licenciamento baseados em nó ou host que exigem o licenciamento de um servidor inteiro.

        Cluster de Computação

        Um cluster de computação é um grupo de computação de alto desempenho (HPC), GPU ou instâncias otimizadas que estão conectadas a uma rede de alta largura de banda e latência ultrabaixa. Cada nó no cluster é uma máquina bare metal localizada próxima fisicamente dos outros nós. Uma rede de acesso remoto direto à memória (RDMA) entre nós fornece latência tão baixa quanto microssegundos de um dígito, comparável a clusters HPC locais.

        Ao criar um cluster de computação, você cria um grupo de rede RDMA vazio. Após a criação do grupo, você poderá adicionar instâncias ao grupo ou excluir instâncias do grupo. Os clusters de computação permitem gerenciar instâncias no cluster individualmente e você pode ter diferentes tipos de instâncias no cluster.

        Domínio de Falha (Fault Domain)

        A OCI disponibiliza recursos de Domínio de Falha, que são zonas de disponibilidade dos recursos baseados na região de escolha no qual você executa seus recursos.

        No exemplo abaixo eu estou mostrando a opção dos domínios de falha na região de saopaulo-sa, onde temos a opção de selecionar qual domínio de falha Domain ou deixar que a OCI escolha o melhor domínio de falha para você.

        Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade contém três domínios de falha. Os domínios de falha fornecem antiafinidade: eles permitem distribuir suas instâncias para que elas não fiquem no mesmo hardware físico em um único domínio de disponibilidade. Uma falha de hardware ou evento de manutenção de hardware de computação que afeta um domínio de falha não afeta instâncias em outros domínios de falha.

        Para controlar o posicionamento de suas instâncias de computação, instâncias de sistema de BD bare metal ou instâncias de sistema de BD de máquina virtual, você pode especificar opcionalmente o domínio de falha para uma nova instância ou pool de instâncias no momento da execução. Se você não especificar o domínio de falha, o sistema selecionará um para você. O Oracle Cloud Infrastructure faz um posicionamento antiafinidade de melhor esforço em diferentes domínios de falha, ao mesmo tempo em que otimiza a capacidade disponível no domínio de disponibilidade. Para alterar o domínio de falha de uma instância de computação, edite o domínio de falha. Para alterar o domínio de falha de uma instância de sistema de BD bare metal ou de máquina virtual, encerre-a e inicie uma nova instância no domínio de falha preferencial.

        Use domínios de falha para fazer o seguinte:

        Proteja-se contra falhas inesperadas de hardware.
        Proteja-se contra interrupções planejadas devido à manutenção de hardware de computação.

        Desenho sobre a computação básica na OCI.

        No desenho acima partimos do conceito que você tem a sua instância com seus recursos atachados nela, mas que estão em um modo de alta disponibilidade, pois como sabemos, hardwares falham a todo o momento, então seguindo uma abordagem em que os recursos são atachados mas não dependentes de estarem no mesmo hardware, você garante alta disponibilidade e fácil migração, mudanças de configurações e shapes.

        Scaling

        As instâncias na OCI podem ter o scaling tanto verticalmente quanto horizontalmente.

        O Scaling vertical, você pode definir ajustando o shape de sua instâncias definindo os novos CPU Types, quantidade de OCPUs e memória, como mostrado na imagem abaixo.

        Você pode fazer o scaling do seu shape aumentando ou diminuindo as configurações, e este shape precisa seguir os mesmos requisitos de hardware, por exemplo, se você tiver uma instância rodando Ubuntu em ARM, não poderá trocar o shape dela para Intel ou AMD e vice-versa.

        Lembrando, que neste tipo de scaling, você tem um downtime, pois é necessário desligar sua instância para alterar o shape.

        Autoscaling

        Você tem a forma de dimensionar o seu scaling de forma horizontal, fazendo com que sejam adicionados mais instâncias da mesma forma que você possui uma instância para que elas trabalhem em conjunto, de forma horizontal. E neste caso você pode também aumentar ou diminuir a quantidade de instâncias.

        Você pode utilizar escalonamento horizontal para prevenir problemas com sua máquina, problemas com sobrecarga de recursos, colocando mais máquinas trabalhando em paralelo com seus recursos, podendo atender mais demanda de acessos ao seu site/ambiente.

        O recurso de Autoscaling na OCI não tem custo adicional, somente os recursos que você utiliza de computação e load balance adicionais.

        Você pode criar um config, que é template de um recurso que esteja rodando como uma VM, que incluem seus recursos como shape, subnet, VNICs, metadados, storage, etc. Com seu template criado então você cria um pool de instâncias, no qual você tem o controle total, podendo dar o start/stop, terminate em todas elas ao mesmo tempo, podendo ainda colocar em diferentes domínios de disponibilidades, diferentes data centers.

        Então com seu pool criado, você pode escrever suas regras de scaling, definindo tamanho inicial e tamanho máximo, definindo se a CPU ou memória atingirem um percentual X estipulado por você, então são iniciados novos recursos ou removidos recursos sem uso, tudo de forma automática.

        Os recursos de computação da OCI possuem ainda uma variedade de sistemas operacionais como Windows Server, Oracle Linux, Ubuntu e outros sistemas operacionais na lista de configuração do Shape e também no Marketplace.

        Oracle OKE (Oracle Kubernetes Engine)

        O OKE é o recurso de uso de Containeres na OCI utilizando o Kubernetes. Se você ainda não tem conhecimento sobre Conteineres, Docker e Kubernetes, recomendo fortemente que acesse o conteúdo do canal Linuxtips do Jeferson Fernando, pois lá é um ótimo conteúdo para referência e aprendizado de Docker e Kubernetes.

        Referência de Docker e Kubernetes

        https://github.com/badtuxx/DescomplicandoDocker

        https://github.com/badtuxx/DescomplicandoKubernetes

        https://www.youtube.com/channel/UCJnKVGmXRXrH49Tvrx5X0Sw

        Enfim, vamos colocar aqui uma definição básica da diferença entre VMs e Containeres.

        Nas máquinas virtuais, você tem um SO e recursos alocados para cada uma das suas VMs, para então poder ter as dependências/bibliotecas e então ter a sua aplicação, com tudo isso consumindo recursos para ter replicado em cada uma das VMs de cada aplicação.

        No Conteiner, você não tem a camada do Hypervisor, ao invés dele você já tem o Conteiner Runtime junto com o SO da sua máquina e a partir de então você tem as dependências/bibliotecas necessárias para a sua aplicação diretamente no seu conteiner, enconomizando diversos recursos que seriam destinados ao SO, otimizando muito o uso do seu hardware, economizando recursos de CPU, memória e storage, além de redução de tempo de inicialização, pois sua aplicação é iniciada em segundos, sem ter que carregar um novo sistema operacional da VM para iniciar.

        Além de todos os benefícios de economia de recursos e tempo, o que mais levamos em consideração é a portabilidade extremamente fácil, pois você tem uma imagem com toda a sua aplicação e dependências necessárias para sua inicialização, e uma vez que você gerou essa imagem, você pode executar ele em qualquer outro ambiente.

        Uma vez que você criou seus conteineres, você precisa garantir a comunicação entre eles, e você poderá aumentar ou diminuir a quantidade de conteineres de acordo com a sua carga. Então você poderá implantar, gerenciar, aumentar, reduzir de acordo com sua necessidade de forma automática, e para isso você utilizará um orquestrador de conteineres, é neste momento que entra o Kubernetes. E com o Kubernetes você poderá executar aplicativos em conteineres em qualquer escala de tempo sem interrupção alguma.

        Você pode dimensionar aplicativos em conteineres assegurando a utilização ideal de forma orquestrada e simplificada.

        O Kubernetes é um serviço gerenciável, escalável e de alta disponibilidade, desenvolvido em código aberto, utilizado para criação de clusters, suporte a CLI/API, suporte a instâncias ARM e GPUs, suporte a autoscaling e atualizações do cluster.

        Na estrutura de um cluster, você tem o Node (nó), que é a máquina na qual o Kubernetes está instalado, depois você tem o Worker Node (nó de trabalho) que é onde os conteineres são iniciados pelo Kubernetes, e os Node Pool que são os grupos de nós, e você tem os Pods que são os grupos de um ou mais conteineres com armazenamento compartilhado e os recursos de rede e um arquivo de especificação para executar os conteineres dentro do Pod.

        Com essa estrutura a Oracle gerencia, programa e monta a alta disponibilidade no ambiente gerenciado pela própria Oracle Cloud com o Control Plane Node.

        Este serviço de gerenciamento não é cobrado pela Oracle, e ele mesmo gerencia o schedule, autoscaling, falha de nós e disponibilidade. E como o etcd é gerenciado pela Oracle, ele se encarrega de backup do cluster que está armazenado lá.

        Você tem 2 tipos de cluster de OKE na OCI, o Enhanced Clusters (Cluster Aprimorado), com o SLA da Oracle e o Basic Clusters (Cluster Básico) que possuem funcionalidades básicas e nenhum recurso aprimorado e com um SLA menor.

        Quando você cria os seus Nodes, você tem duas opções também, os Nodes Virtuais, no qual os updates e patches de segurança são gerenciados pela pela própria Oracle, e também os Nodes Gerenciados, onde voc6e tem o controle total das suas configurações para utilizar de acordo com suas necessidades, mas as atualizações e toda a gestão é feito por sua conta.

        Container Workload na OCI

        Os conteineres se tornaram o modelo preferido para implantar as aplicações, devido a facilidade de empacotamento, padronização e escalabilidade. Você pode fazer seus testes em conteineres, quando seu aplicativo ainda não é grande e não est[a em uma fase de consumo de muitos recursos, portanto, com conteineres você pode usar de maneira simples, rápida e segura.

        Você pode provisionar uma máquina virtual mesmo que não vá utilizar o Kubernetes, colocando o SO, camada de conteiner runtime, o que lhe gera mais complexidade, pois precisará cuidar de patches, gerenciar e monitorar sua VM.

        Com a instância de conteiner você fica somente com a sua camada de aplicação, não precisando se preocupar com todo o resto do gerenciamento, focando somente na sua aplicação.

        Com as instâncias de conteiner você elimina a complexidade operacional, sem precisar gerenciar uma infraestrutura. Você somente fornece a imagem do seu conteiner e a OCI se encarrega de todos os recursos para que você possa executar, isso já com todas as configurações, requisitos, bibliotecas, etc. Sabe aquela frase “Na minha máquina funciona”? Então… vai exatamente igual.

        E você pode executar vários conteineres dentro de uma instância de conteiner, isso tudo é projetado para execução de diversas cargas de trabalho. Em questão de segurança, um ponto forte é o isolamento completo do seu ambiente.

        Serveless com Functions OCI

        Oracle Cloud Infrastructure (OCI) Functions é um serviço baseado em contêiner que permite aos desenvolvedores criar, executar e escalar funções sem precisar gerenciar a infraestrutura subjacente. O Functions é uma implementação de computação serverless que se integra perfeitamente com outros serviços OCI.

        Serverless é uma arquitetura de computação em nuvem que permite aos desenvolvedores criar e executar aplicativos sem a necessidade de gerenciar a infraestrutura subjacente. Em uma arquitetura serverless, a alocação e gerenciamento de servidores são completamente abstraídos do desenvolvedor, permitindo foco total no desenvolvimento do código e na lógica de negócios.

        Qual é o principal propósito do Oracle Cloud Infrastructure Functions?

        O principal propósito do Oracle Cloud Infrastructure (OCI) Functions é permitir que os desenvolvedores criem, executem e escalem funções de forma automatizada e sem a necessidade de gerenciar a infraestrutura subjacente. Este serviço de computação serverless executa código em resposta a eventos ou solicitações HTTP, oferecendo escalabilidade automática e cobrança baseada no uso.

        Uma ilustração do funcionamento e recursos de Functions na OCI.

        Funcionamento do Functions OCI

        1. Criação e Implementação:
          • Os desenvolvedores escrevem código em linguagens suportadas (como Python, Java, Node.js, Go) e empacotam-no como uma função.
          • Essa função é implementada em um ambiente gerenciado pela OCI, onde pode ser executada sob demanda.
        2. Escalabilidade Automática:
          • Functions escala automaticamente com base no número de solicitações recebidas, garantindo que as funções sejam executadas eficientemente sem intervenção manual.
        3. Eventos e Triggers:
          • As funções podem ser acionadas por uma variedade de eventos, como mudanças em um bucket do Oracle Object Storage, mensagens em um stream, ou diretamente através de uma API HTTP.
        4. Cobrança por Uso:
          • A cobrança é baseada na quantidade de recursos utilizados durante a execução da função, proporcionando um modelo de pagamento por uso que pode resultar em economia significativa.

        Comparação com Outras Soluções

        1. Servidores Bare Metal:
          • Complexidade de Gerenciamento: Bare metal requer gestão completa de hardware e software, incluindo instalação, configuração e manutenção.
          • Escalabilidade Manual: A escalabilidade é manual e pode ser demorada, exigindo planejamento antecipado.
          • Custo: Pode ser mais caro devido ao uso constante de recursos, mesmo quando o servidor está ocioso.
        2. Máquinas Virtuais (VMs):
          • Gestão Parcial de Infraestrutura: As VMs reduzem a complexidade em comparação com bare metal, mas ainda requerem gerenciamento de SO, patches e capacidade.
          • Escalabilidade Manual: Embora mais flexível que bare metal, a escalabilidade das VMs ainda pode ser menos ágil do que soluções serverless.
          • Custo: O custo é baseado no tempo de execução da VM, independentemente do uso real dos recursos.
        3. Contêineres:
          • Orquestração Necessária: Contêineres oferecem flexibilidade e eficiência, mas requerem sistemas de orquestração como Kubernetes para gerenciar a escalabilidade e disponibilidade.
          • Escalabilidade Gerenciada: Embora escalável, a complexidade de gerenciamento e orquestração pode ser alta.
          • Custo: Pode ser mais eficiente em termos de recursos, mas ainda exige pagamento por capacidade provisionada.
        4. Functions OCI:
          • Infraestrutura Abstrata: Não há necessidade de gerenciar servidores ou contêineres; a OCI gerencia a infraestrutura.
          • Escalabilidade Automática: Escala instantaneamente com base na demanda sem intervenção manual.
          • Modelo de Preços Eficiente: Paga-se apenas pelo tempo de execução da função, resultando em potencial economia significativa.

        Pontos Positivos do Uso de Functions na OCI

        1. Simplicidade: Desenvolvedores podem focar no código e lógica de negócios sem se preocupar com a infraestrutura subjacente.
        2. Eficiência de Custo: O modelo de cobrança por uso garante que você só paga pelos recursos que realmente usa.
        3. Escalabilidade: A escalabilidade automática assegura que as funções possam lidar com variações de carga sem necessidade de intervenção manual.
        4. Integração: Fácil integração com outros serviços OCI, facilitando a construção de soluções completas e eficientes.
        5. Segurança: Beneficia-se da segurança integrada e das práticas recomendadas da OCI, incluindo gerenciamento de identidade e acesso (IAM) e isolamento de rede.

        Conclusão

        OCI Functions proporciona uma solução poderosa e flexível para execução de código em uma arquitetura serverless, permitindo que desenvolvedores construam aplicações de maneira eficiente e escalável, reduzindo a complexidade de gerenciamento de infraestrutura e otimizando custos.

        Categorias
        OCI - Certificação

        Certificação OCI Foundations Associate 2024 (Módulo 2 – Networking)

        A parte de Networking dentro do ambienteda Oracle Cloud pode ser bastante complexa, porém na abordagem da certificação Foundations Associate da OCI, ela não é abordada de uma forma tão complexa. Os pontos abordados na parte Networking da Foundations Associate são com relação a explicaçõ dos recursos básicos, como, VCNs, NAT Gateway, Internet Gateway, o DRG (Dynamic Routing Gateway) que é o ponto de conexão para outros serviços de outras redes, como conexão com sua rede On-Premise e outras Clouds usando o Fast Connect e VPN Site-to-Site e o Local Peering que permite a conexão entre 2 ou mais redes dentro da Oracle Cloud.

        VCN

        O que é uma VCN?

        Uma VCN é uma rede virtual dentro da Oracle Cloud, definida por software. Então, pense em uma VCN como se fosse um Switch virtual, onde você pode configurar seus endereçamentos de rede, roteamento e de uma forma básica definir políticas de acesso usando Security Lists para permitir acesso aos seus recursos e aplicações de forma segura.

        Dentro da VCN você ainda tem atribuições de NAT Gateway, que permitem que seus recursos como servidores e clusters terem o acesso de outbound (saída) a internet, Internet Gateway que permitem que pela internet você tenha acesso aos seus recursos com inbound (entrada) e o Service Gateway, que permite a comunicação com outros recursos dentro da OCI como buckets Object Storage por exemplo.

        Isso tudo pode permitir que suas instâncias se comuniquem entre si, se comuniquem com outras VCNs, em outras regiões, com recursos On-Premise e/ou com recursos em outras clouds. Isso tudo de forma escalável e com alta disponibilidade.

        Exemplo de como funciona a configuração básica de uma VCN.

        Observando essa topologia da VCN e suas subnets, podemos observar que ela tem a notação de um CIDR, a partir do endereçamento das suas VCNs, você pode criar diversas outras subnets (sub-redes) dentro da sua VCN, seguindo o enderaçamento pertinente dela. Como na foto a VCN possui um endereçamento 10.0.0.0/16, você pode criar diversas outras subnets dentro dela como 10.0.0.0/24, 10.0.1.0/24, 10.0.2.0/24, 10.10.0.0/23, e por aí vai, todos dentro do endereçamento da sua VCN.

        Para quem ainda não tem uma habilidade muito abrangente na parte de endereçamento de rede, sugiro fazer algumas pesquisas por endereçamentos de rede e CIDR.

        Uma dica que ajuda, é a calculadora de rede https://jodies.de/ipcalc que pode lhe ajudar a calucular o tamanho da redes e usar os endereçamentos com os parâmetros que desejar.

        Exemplo da comunicação dos recursos dentro de uma VCN.

        No cenário acima nós temos máquinas em uma subnet pública e em uma subnet privada dentro de uma VCN, dentro destas subnets estamos utilizando os recursos de Internet Gateway, NAT Gateway e Service Gateway.

        Internet Gateway

        O Internet Gateway permite que você utilize a comunicação de forma bi-direcional de modo que suas máquinas em uma subnet possam se comunicar com a internet e você possa estabelecer a comunicação através da internet com as suas máquinas, publicando um web server por exemplo na porta 80 por exemplo.

        Então na imagem acima, vemos em as máquinas na subnet pública estão recebendo comunicação da internet de forma que podem ser acessíveis e também podem se comunicar com a internet.

        NAT Gateway

        O NAT Gateway permite que você utilize a comunicação de forma unilateral com a internet de modo que seus serviços se comuniquem com a internet, mas não possam ser acessados publicamente, como na imagem acima.

        Na subnet privada as máquinas podem acessar a internet (outbound) para se comunicar com sites e serviços, mas não podem receber conexões da internet.

        Service Gateway

        O Service Gateway funciona como uma ponde de conexão com as suas instâncias, clusters e servidores com outros recursos da Oracle Cloud como buckets Object Storage, File Storage, Bastions, Database Services e outros recursos, que podem ser vistos aqui nesta documentação abaixo.

        https://www.oracle.com/br/cloud/networking/service-gateway/service-gateway-supported-services/

        Dynamic Routing Gateway (DRG)

        O Dynamic Routing Gateway ou DRG é um roteador virtual que fornece a comunicação com o tráfego privado com sua rede on-premise ou outra cloud por exemplo atrávés da internet.

        Na imagem acima vemos um Dynamic Routing Gateway (DRG) conectado a um Fast Connect que permite o acesso a uma rede on-premise e a uma VPN Site-to-Site permitindo a comunicação com outra rede on-premise com a subnet privada dentro da nossa VCN.

        VCN Routing (Roteamento da VCN)

        O roteamento da VCN permite que você possa definir a comunicação com as rede com os quais deseja se comunicar na sua VCN, o acesso a internet e o acesso a suas rede on-premise por exemplo.

        No exemplo abaixo mostramos um exemplo de como funciona a tabela de roteamento.

        O que podemos observar é o seguinte, temos a comunicação da nossa VCN com duas subnets, na subnet privada, vamos supor que temos máquinas de uma aplicação e um banco de dados, nós temos a comunicação na Route Table da subnet de forma que permite a comunicação com a rede 0.0.0.0/0 para o NAT Gateway, pois vamos supor que os servidores precisem acessar a internet para baixar patches ou atualizações, e temos a comunicação com as redes 192.168.0.0/24 e 172.16.0.0/24 que são nossas duas redes On-Premise.

        Mostrando o exemplo de como as tabelas de roteamento ficam definidas dentro das nossas subnets.

        Aqui abaixo eu tenho 2 subnets do meu LAB.

        Aqui nós temos o exemplo de como ficaria nossa tabela de roteamento para a comunicação da nossa subnet com o ambiente das nossas 2 rede On-Premise

        Vejamos que a rede 0.0.0.0/0 está setada para o NAT Gateway e as redes 192.168.0.0/24 e 172.16.0.0/24 estão setadas para o DRG.

        Local Peering Connection

        O Local Peering permite você conectar várias redes dentro do seu ambiente da Oracle Cloud. Por padrão este recurso não vem criado automaticamente com a criação das suas VCNs.

        Se as suas redes estiverem todas na mesma região, você pode utlizar o Local Peering para conectá-las entre si.

        Na imagem acima você pode observar a comunicação e a tabela de roteamento para as conexões de Local Peering.

        Remote Peering Connection

        O Remote Peering Connection permite você conectar várias redes dentro do seu ambiente da Oracle Cloud quando estão em regiões diferentes. Por padrão este recurso não vem criado automaticamente com a criação das suas VCNs.

        Neste cenário você pode interconectar suas regiões para o tráfego local, o tráfego que não é para a internet.

        Segurança da VCN

        Security Lists (Listas de Segurança)

        As Security Lists são basicamente as suas regras de firewall associadas diretamente a sua subnet. Todas as regras que você aplicar a sua Security List, estarão diretamente associadas as todas as suas máquinas/instâncias dentro daquela subnet que está atrelada a esta Security List.

        Na imagem acima podemos ver como são atribuídas as regras de firewall em uma Security List, quando você atribui por exemplo, a abertura da porta 80 da forma que está na subnet pública, todas as instâncias que estarão dentro dessa subnet terão a porta 80 aberta de modo a aceitarem conexões, visto que a regra está como “Ingress”, que é o atributo que permite a conexão externa.

        Já na outra regra que está como “Egress”, ela permite a saída da conexão se originando pelas máquinas da rede 10.0.2.0/24 na porta .

        Temos o atribudo de “Stateful” que é o monitoramento de estado, a diferença entre o “Stateful” para o “Stateless”, é que o Stateful permite a comunicação desta conexão sempre na vice-versa, sem a necessidade de configuração adicional.

        Para um melhor entendimento sobre Security Lists, recomendo uma consulta na documentação oficial netse link abaixo.

        https://docs.oracle.com/pt-br/iaas/Content/Network/Concepts/securitylists.htm#Security_Lists

        Network Security Group (NSG)

        Nós temos ainda o recurso de Network Security Group, que é o Grupo de Segurança de Rede, ele tem o funcionamento semelhante ao Security List, porém a aplicação dele é diretamente a uma interface de rede ou grupo de interfaces de rede.

        Na imagem acima podemos ver a atribuição de regras que estão configuradas entre os NSGs, refinando o acesso entre as instâncias sem afetar as liberações nas Security Lists.

        Portanto, entendemos que a diferença entre as Security Lists para NSG é que o NSG se aplica diretamente a interface de rede ou grupos de interfaces de rede, enquanto a Security List se aplica diretamente a subnet envolvendo todas as instâncias que estejam dentro dela.

        Para um melhor entendimendo, recomendo uma consulta sobre NSGs na documentação oficial neste link abaixo.

        https://docs.oracle.com/pt-br/iaas/Content/Network/Concepts/networksecuritygroups.htm

        Load Balancer

        O recurso de Load Balancer é uma maneira de você obter alta disponibilidade e escalabilidade dos seus recursos dentro da OCI.

        A maneira como o Load Balancer funciona, é também conhecido como um Proxy Reverso, você tem um Load Balancer para acessar vários clients, estes clients chegam até o Load Balancer, o Load Balancer faz o proxy deste tráfego para vários servidores de backend. Fazendo não somente a proteção destes servidores de backend, mas também garantindo alta disponibilidade da sua aplicação, caso um dos servidores não esteja disponível, ele ainda garantirá a alta disponibilidade da aplicação.

        O Load Balancer também vai garantir a escalabilidade pois se muitos clients chegarem até o Load Balancer mais servidores de backend para sua aplicação.

        Há 2 tipos de Load Balancer na OCI, o Load Balancer de Aplicação, que atua na camada 7 do modelo OSI, fazendo HTTP e HTTPS e o Load Balancer de Rede, que opera nas camadas 3 e camada, podendo gerenciar o tráfego nas camadas de TCP, UDP e ICMP.

        Load Balancer de Aplicação

        Os Load Balancers são Flexíveis e com shapes dinâmicos, permitindo você ter um controle da sua carga e tráfego.

        O Load Balancer na OCI possui um limite máximo de tráfego podendo ir de 10 Mbps até 8 Gbps, lembrando que para cada limite máximo há valores de cobrança diferenciados.

        Você pode deixar o seu Load Balance configurado de forma dinâmica, de modo que ao atingir o limite máximo da atual configuração, ele automaticamente muda para a configuração seguinte.

        Os Load Balancers podem ser configurados de forma Pública ou Privado, sendo que o Load Balancer público estará disponível para a internet através de um IP Público e o Load balancer privado será para dimensionamento de suas cargas de trabalho internas, como um tráfego de banco de dados, por exemplo.

        Load Balancer de Rede

        O Load Balancer de Rede também pode ser criado de forma pública ou privada e suporta escalabilidade e alta disponibilidade.

        Por qual motivo um Load Balancer de Rede deve ser utilizado ao invés de um Load Balancer de Aplicação?

        O Load Balancer de Rede é muito mais rápido que um Load Balancer de Aplicação, ele tem uma latência muito menor, porém, ele não faz o tratamento de HTTP/HTTPS, não faz a inspeção de pacotes e não trabalha com certificados SSL, que é uma das principais funcionalidades do Load Balancer de Aplicação.

        Portanto, se você estiver procurando a inteligência no roteamento de HTTP e HTTPS, o Load Balancer de Aplicação é o mais recomendado, agora se você estiver buscando velocidade e baixa latência e pode fazer a tratamento de SSL diretamente no seu servidor/aplicação, então o Load Balancer de Rede é o mais indicado.

        Para um melhor entendimento sobre Load Balancers da OCI, recomendo a consulta da documentação oficial no link abaixo.

        https://docs.oracle.com/en-us/iaas/Content/Balance/Concepts/balanceoverview.htm