Configurando Instâncias para Serviços de Chamada

Uma instância de computação do Compute Cloud@Customer pode ser configurada para permitir que os aplicativos em execução na instância chamem serviços e gerenciem recursos semelhantes à forma como os usuários do Compute Cloud@Customer chamam serviços para gerenciar recursos.

O recurso de serviço IAM que permite que as instâncias sejam atores autorizados (ou controladores) para executar ações nos recursos de serviço é chamado de controlador de instâncias.

Execute as seguintes etapas para configurar e usar uma instância como principal:

Configurando Firewalls de Instância para Permitir Serviços de Chamada

Esta seção descreve como modificar a configuração do firewall da instância e como criar um serviço systemd para restaurar as alterações se o sistema for reinicializado.

Modificar a Configuração de Firewall
  1. Como usuário privilegiado, modifique a configuração do firewall da instância para permitir que a instância acesse pontos finais de serviço, como iaas e identity.

  2. Use o comando iptables para adicionar as seguintes regras do BareMetalInstanceServices ao firewall de instância:

    iptables -I BareMetalInstanceServices 14 -p tcp -d 169.254.169.254 --dport 443 -j ACCEPT
    iptables -I BareMetalInstanceServices 14 -p tcp -d 169.254.240.254 --dport 443 -j ACCEPT

    A primeira entrada é obrigatória para todos os pontos finais. A segunda entrada é necessária para entrar em contato com o ponto final do Object Storage.

Tornar as Alterações de Configuração Persistentes

Use o procedimento a seguir para fazer com que essas alterações de configuração do firewall persistam nas reinicializações da instância.

  1. Salve a configuração atualizada das tabelas IP.

    iptables-save > /etc/sysconfig/iptables.rules
  2. Criar um script para restaurar automaticamente a configuração atual do firewall (modificado) na reinicialização.

    Neste exemplo, o script é chamado /sbin/restore-iptables.sh. Este é o conteúdo do arquivo /sbin/restore-iptables.sh:

    #!/bin/sh
    /sbin/iptables-restore < /etc/sysconfig/iptables.rules
  3. Defina o bit executável no script.

    chmod +x /sbin/restore-iptables.sh
  4. Crie um serviço systemd oneshot para executar o script /sbin/restore-iptables.sh no momento da inicialização.

    Neste exemplo, o serviço é chamado /etc/systemd/system/restore-iptables.service. Este é o conteúdo do arquivo /etc/systemd/system/restore-iptables.service:

    [Unit]
    Description=Restore IP Tables
    After=cloud-final.service
    
    [Service]
    ExecStart=/sbin/restore-iptables.sh
    User=root
    Group=root
    Type=oneshot
    
    [Install]
    WantedBy=multi-user.target
  5. Recarregue a configuração do gerenciador systemd e ative o serviço a ser executado no momento da inicialização.

    systemctl daemon-reload
    systemctl enable restore-iptables

Configurando Certificados de Instância para Permitir Serviços de Chamada

No Compute Cloud@Customer, por padrão, os pontos finais (como iaas e identity) oferecem um certificado assinado por uma CA específica desse Compute Cloud@Customer. Por padrão, os sistemas operacionais não confiam em certificados assinados por uma CA específica desse Compute Cloud@Customer. Se o sistema operacional não confiar nos certificados oferecidos, as tentativas de usar o OCI SDK ou a CLI falharão com um erro CERTIFICATE_VERIFY_FAILED.

Implemente uma das soluções descritas neste tópico para usar com sucesso o OCI SDK ou a CLI na instância.

Importante

Qualquer usuário que possa usar SSH para a instância herda automaticamente os privilégios concedidos à instância.

Opção 1: BYOC (Bring Your Own Certificate)

No Compute Cloud@Customer, você pode fornecer seus próprios certificados de Autoridade de Certificação (CA) que permitem usar sua cadeia de confiança de CA. Para usar seus próprios certificados, abra uma Solicitação de Suporte e solicite o uso de seus próprios certificados. Consulte Criando uma Solicitação de Suporte. Para acessar o suporte, acesse a Console do Oracle Cloud conforme descrito em Acessar a Console do OCI.

Em um sistema operacional Linux, o seguinte comando lista CAs confiáveis por padrão:

trust list --filter=ca-anchors

Opção 2: Especificar no Código SDK o Pacote de CAs a Ser Usado

Esse método copia o bundle de CAs específico do Compute Cloud@Customer para a instância, mas não verifica o certificado do servidor (--insecure). Para garantir a segurança, verifique o conteúdo do pacote recuperado (external_ca.crt).

  1. Recupere o certificado do ponto final iaas do Compute Cloud@Customer.

    curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain

    Esse comando pode estar em um script que é passado para a instância no momento da inicialização usando a opção --user-data-file ou a opção --metadata com um campo user_data. O script será executado por cloud-init dentro da instância durante a inicialização, salvando o esforço de recuperar manualmente esse arquivo de certificado em muitas instâncias.

  2. Verifique o conteúdo do bundle de CAs salvo no arquivo external_ca.crt.

  3. Especifique o bundle de CAs no código SDK do Python.

    signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner(
        federation_client_cert_bundle_verify="/home/opc/external_ca.crt"
    )
    identity_client = oci.identity.IdentityClient(config={}, signer=signer)
    identity_client.base_client.session.verify = "/home/opc/external_ca.crt"

Opção 3: Confiar Globalmente no Pacote de CAs do Compute Cloud@Customer

Esse método é igual ao método anterior com a seguinte diferença: em vez de especificar o bundle de CAs no código do SDK, esse método adiciona o bundle de CAs à cadeia de confiança.

Importante

Quando o bundle de CAs é adicionado à cadeia de confiabilidade, cada aplicativo desta instância de computação confiará em certificados assinados com a CA especificada neste bundle. Considere se este é um risco de segurança aceitável.

  1. Recupere o certificado do ponto final iaas do Compute Cloud@Customer.

    curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
  2. Verifique o conteúdo do bundle de CAs salvo no arquivo external_ca.crt.

  3. Atualize a cadeia de confiabilidade global da CA.

    cp external_ca.crt /etc/pki/ca-trust/source/anchors/
    update-ca-trust extract

As etapas 1 e 3 desse método podem estar em um script que é passado para a instância no momento da inicialização usando a opção --user-data-file ou a opção --metadata com um campo user_data. O script é executado pela cloud-init dentro da instância durante a inicialização, poupando o esforço de executar essas etapas manualmente em muitas instâncias.