Recuperación de metadatos de instancia desde la instancia

En Compute Cloud@Customer, el servicio de metadatos de instancia (IMDS) proporciona información sobre una instancia en ejecución a los usuarios que están conectados a esa instancia. IMDS también proporciona información a cloud-init, que puede utilizar para varias tareas de inicialización del sistema.

Nota

Para acceder a los metadatos de IMDS, utilice una imagen de instancia proporcionada por Oracle.

Los metadatos de IMDS incluyen información de la instancia, como la siguiente:

  • Clave pública SSH que permite a los usuarios conectarse a la instancia

  • VNIC asociadas a la instancia, ID de VNIC

  • Bloques de CIDR de instancia

En general, los metadatos de instancia de IMDS incluyen la siguiente información:

  • La misma información que se muestra en la página de detalles de una instancia en la consola de Compute Cloud@Customer y en la salida de la CLI de la instancia get.

  • Información personalizada que se agrega a una instancia mediante las opciones --metadata, --extended-metadata, --ssh-authorized-keys-file y --user-data-file del comando launch de la instancia. Estos metadatos no se pueden actualizar después del inicio de la instancia. Para un usuario conectado a la instancia, los metadatos de la instancia son de solo lectura.

Actualización a los puntos finales de la versión 2 de IMDS

El servicio de metadatos de instancia está disponible en dos versiones: versión 1 y versión 2.

Importante

Para aumentar la seguridad de las solicitudes de metadatos, actualice todas las aplicaciones para utilizar los puntos finales de IMDS versión 2, si están soportados por la imagen. A continuación, desactive el uso de puntos finales de IMDS versión 1.

Los puntos finales de IMDS versión 2 (IMDSv2) se admiten en las imágenes de Oracle Linux que se muestran en la Matriz de sistema operativo invitado. Otras imágenes de plataforma y la mayoría de las otras imágenes no admiten IMDSv2.

Para cada instancia, realice los siguientes pasos para cambiar de versión a IMDSv2:

  1. Identifique las aplicaciones que realizan solicitudes IMDSv1.

    Por ejemplo, cloud-init realiza solicitudes a los puntos finales de instancia /v#.

  2. Migre las aplicaciones identificadas para soportar los puntos finales IMDSv2.

    Al utilizar puntos finales /v2, debe incluir la cabecera "Autorización: Portador de Oracle". Consulte los ejemplos de Recuperación de Metadatos de Instancia de IMDS.

  3. Desactive los puntos finales IMDSv1.

    Realice uno de los siguientes pasos, como se describe en Creación de una instancia.

    • En la página de detalles de una instancia, en Detalles de instancia, compruebe el valor de los puntos finales del servicio de metadatos de instancia heredada. Si el valor de los puntos finales del servicio de metadatos de instancia heredada está activado, seleccione Editar en el menú Controles y active la casilla de control de los puntos finales del servicio de metadatos de instancia heredada desactivados.

    • En la salida de instance list o instance get, en instance-options, compruebe el valor de are-legacy-imds-endpoints-disabled. Si el valor de are-legacy-imds-endpoints-disabled es null o false, utilice el comando instance update para especificar la siguiente opción:

      --instance-options '{"areLegacyImdsEndpointsDisabled": true}'

    Las futuras solicitudes a puntos finales heredados (v1) se rechazarán con un error 404 de no encontrado.

Recuperación de Metadatos de Instancia de IMDS

Para recuperar los metadatos de la instancia de IMDS, siga estos pasos:

  1. Conéctese a la instancia.

  2. Utilice un comando cURL para recuperar la información de metadatos del punto final HTTP.

    La información se proporciona a través de un punto final HTTP que recibe en 169.254.169.254. Si una instancia tiene varias VNIC, debe enviar la solicitud mediante la VNIC principal.

    Utilice el comando instance para recuperar los metadatos de la instancia. Utilice el comando vnics para recuperar los datos de VNIC.

    Si utiliza puntos finales /v2, como se muestra en los siguientes ejemplos, debe incluir la cabecera "Autorización: Portador de Oracle".

    Ejemplo: metadatos de la instancia

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    {
        "availabilityDomain": "AD-1",
        "faultDomain": "FAULT-DOMAIN-1",
        "compartmentId": "ocid1.compartment.unique_ID",
        "displayName": "dev1",
        "hostname": "hostname",
        "id": "ocid1.instance.unique_ID",
        "image": "ocid1.image.unique_ID",
        "metadata": {
            "ssh_authorized_keys": "public_SSH_key"
        },
        "region": "PCA",
        "canonicalRegionName": "PCA",
        "ociAdName": "PCA",
        "regionInfo": null,
        "shape": "VM.PCAStandard.E5.Flex",
        "state": "RUNNING",
        "timeCreated": 1634943279000,
        "agentConfig": null
    }

    Para recuperar un único valor, especifique el nombre de la clave como se muestra en el siguiente ejemplo.

    Ejemplo: metadatos de VNIC

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/
    [
        {
            "vnicId": "ocid1.vnic.unique_ID",
            "privateIp": "privateIp",
            "vlanTag": 0,
            "macAddr": "00:13:97:9f:16:32",
            "virtualRouterIp": "virtualRouterIp",
            "subnetCidrBlock": "subnetCidrBlock"
        }
    ]

    Puede ver todos los datos de una de varias VNIC especificando el índice de matriz para esos datos de VNIC, o bien puede recuperar un único valor para esa VNIC especificada:

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/0/privateIp
    privateIp