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:

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

  • VNIC conectados a la instancia, ID de VNIC

  • Bloques de CIDR de instancia

En general, los metadatos de la 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 y en la salida de la CLI get de la instancia.

  • Información personalizada que agregue 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 IMDS versión 2

El servicio de metadatos de instancias 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 que utilicen los puntos finales de IMDS versión 2, si la imagen lo admite. A continuación, desactive el uso de los 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 actualizar a IMDSv2:

  1. Identifique las aplicaciones que están realizando solicitudes IMDSv1.

    Por ejemplo, cloud-init realiza solicitudes a 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 "Authorization: Bearer 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 solicitudes futuras a puntos finales heredados (v1) se rechazarán con un error 404 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 "Authorization: Bearer Oracle".

    Ejemplo: metadatos de 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 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