Configuración de instancias para llamar a servicios
Se puede configurar una instancia informática de Compute Cloud@Customer para permitir que las aplicaciones que se ejecutan en la instancia llamen a servicios y gestionen recursos de forma similar a como los usuarios de Compute Cloud@Customer llaman a los servicios para gestionar recursos.
La función del servicio IAM que permite que las instancias sean actores autorizados (o principales) para realizar acciones en recursos del servicio se denomina principal de instancia.
Realice los siguientes pasos para configurar y utilizar una instancia como principal:
-
Configure el firewall de instancia para permitir que la instancia acceda a los puntos finales del servicio. Consulte Configuring Instance Firewalls to Allow Calling Services.
-
Asegúrese de que la instancia está incluida en un grupo dinámico (configurado en su arrendamiento) que otorga permisos para acceder a los recursos necesarios. Consulte Gestión de grupos dinámicos.
La instancia se debe crear o mover a un compartimento que tenga un nombre en una regla de coincidencia del grupo dinámico, o bien la instancia debe tener una etiqueta de recurso asignada que tenga un nombre en una regla de coincidencia. Consulte Escritura de reglas de coincidencia para definir grupos dinámicos.
Configuración de firewalls de instancia para permitir la llamada a servicios
En esta sección, se describe cómo modificar la configuración del firewall de instancia y cómo crear un servicio systemd
para restaurar los cambios si el sistema se reinicia.
- Modificación de la configuración del firewall
-
-
Como usuario con privilegios, modifique la configuración del firewall de instancia para permitir que la instancia acceda a puntos finales de servicio como
iaas
yidentity
. -
Utilice el comando
iptables
para agregar las siguientes reglasBareMetalInstanceServices
al firewall de instancia: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
La primera entrada es necesaria para todos los puntos finales. La segunda entrada es necesaria para ponerse en contacto con el punto final de Object Storage.
-
- Persistencia de los cambios en la configuración
-
Utilice el siguiente procedimiento para hacer que estos cambios en la configuración del firewall persistan tras los reinicios de la instancia.
-
Guarde la configuración de las tablas IP actualizadas.
iptables-save > /etc/sysconfig/iptables.rules
-
Cree una secuencia de comandos para restaurar automáticamente la configuración actual (modificada) del firewall al reiniciar.
En este ejemplo, el script se denomina
/sbin/restore-iptables.sh
. A continuación se muestra el contenido del archivo/sbin/restore-iptables.sh
:#!/bin/sh /sbin/iptables-restore < /etc/sysconfig/iptables.rules
-
Defina el bit ejecutable en el script.
chmod +x /sbin/restore-iptables.sh
-
Cree un servicio
systemd oneshot
para ejecutar el script/sbin/restore-iptables.sh
en el momento del inicio.En este ejemplo, el servicio se denomina
/etc/systemd/system/restore-iptables.service
. A continuación se muestra el contenido del archivo/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
-
Vuelva a cargar la configuración del gestor
systemd
y active el servicio para que se ejecute durante el inicio.systemctl daemon-reload systemctl enable restore-iptables
-
Configuración de certificados de instancia para permitir llamadas a servicios
En Compute Cloud@Customer, por defecto, los puntos finales (como iaas
y identity
) ofrecen un certificado firmado por una CA específica de Compute Cloud@Customer. Por defecto, los sistemas operativos no confían en los certificados firmados por una autoridad de certificación específica de este Compute Cloud@Customer. Si el sistema operativo no confía en los certificados que se ofrecen, los intentos de utilizar el SDK o la CLI de OCI fallan con un error CERTIFICATE_VERIFY_FAILED
.
Implante una de las soluciones descritas en este tema para utilizar correctamente el SDK o la CLI de OCI en la instancia.
Cualquier usuario con SSH en la instancia hereda automáticamente los privilegios otorgados a la instancia.
Opción 1: Traiga su propio certificado (BYOC)
En Compute Cloud@Customer, puede proporcionar sus propios certificados de autoridad de certificación (CA), lo que le permite utilizar su cadena de confianza de CA. Para usar sus propios certificados, abra una solicitud de soporte y solicite usar sus propios certificados. Consulte Creación de una solicitud de soporte. Para acceder al soporte, conéctese a la consola de Oracle Cloud como se describe en Conexión a la consola de OCI.
En un sistema operativo Linux, el siguiente comando muestra las autoridades de certificación de confianza de manera predeterminada:
trust list --filter=ca-anchors
Opción 2: Especificar en el código SDK el grupo de autoridades de certificación que se va a utilizar
Este método copia el grupo de autoridades de certificación específicas de Compute Cloud@Customer en la instancia, pero no verifica el certificado del servidor (--insecure
). Para garantizar la seguridad, verifique el contenido del paquete recuperado (external_ca.crt
).
-
Recupere el certificado del punto final
iaas
de la infraestructura de Compute Cloud@Customer.curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
Este comando puede estar en un script que se transfiere a la instancia en el momento del inicio mediante la opción
--user-data-file
o la opción--metadata
con un campouser_data
. El script lo ejecutará cloud-init dentro de la instancia durante init, lo que ahorrará el esfuerzo de recuperar manualmente este archivo de certificado en muchas instancias. -
Verifique el contenido del grupo de autoridades de certificación guardado en el archivo
external_ca.crt
. -
Especifique el grupo de autoridades de certificación en el código SDK de 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"
Opción 3: Confíe globalmente en el grupo de autoridades de certificación de Oracle Compute Cloud@Customer
Este método es el mismo que el método anterior con la siguiente diferencia: en lugar de especificar el grupo de autoridades de certificación en el código SDK, este método agrega el grupo de autoridades de certificación a la cadena de confianza.
Cuando el grupo de autoridades de certificación se agrega a la cadena de confianza, cada aplicación de esta instancia informática confiará en los certificados firmados con la autoridad de certificación especificada en este grupo. Considere si se trata de un riesgo de seguridad aceptable.
-
Recupere el certificado del punto final
iaas
de la infraestructura de Compute Cloud@Customer.curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
-
Verifique el contenido del grupo de autoridades de certificación guardado en el archivo
external_ca.crt
. -
Actualice la cadena de confianza de CA global.
cp external_ca.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract
Los pasos 1 y 3 de este método podrían estar en un script que se transfiera a la instancia en el momento del inicio mediante la opción --user-data-file
o la opción --metadata
con un campo user_data
. El script se ejecuta por cloud-init dentro de la instancia durante init, lo que ahorra el esfuerzo de realizar estos pasos manualmente en muchas instancias.