Extraction des métadonnées d'instance à partir de l'instance

Sur Compute Cloud@Customer, le service de métadonnées d'instance (IMDS) fournit des informations sur une instance en cours d'exécution aux utilisateurs connectés à cette instance. IMDS fournit également à cloud-init des informations que vous pouvez utiliser pour diverses tâches d'initialisation système.

Remarque

Pour accéder aux métadonnées IMDS, utilisez une image d'instance fournie par Oracle.

Les métadonnées IMDS comprennent des informations d'instance telles que les suivantes :

  • Clé publique SSH qui permet aux utilisateurs de se connecter à l'instance

  • Cartes d'interface réseau virtuelles attachées à une instance, ID de carte d'interface réseau virtuelle

  • Blocs CIDR d'instance

En général, les métadonnées d'instance IMDS incluent les informations suivantes :

  • Informations identiques à celles affichées sur la page de détails d'une instance dans la console Compute Cloud@Customer et dans la sortie de l'interface de ligne de commande get de l'instance.

  • Informations personnalisées que vous ajoutez à une instance à l'aide des options --metadata, --extended-metadata, --ssh-authorized-keys-file et --user-data-file de la commande d'instance launch. Ces métadonnées ne peuvent pas être mises à jour après le lancement de l'instance. Pour un utilisateur connecté à l'instance, les métadonnées de l'instance sont en lecture seule.

Mise à niveau vers les adresses IMDS version 2

Le service de métadonnées d'instance est disponible en deux versions : 1 et 2.

Important

Pour augmenter la sécurité des demandes de métadonnées, mettez à niveau toutes les applications afin d'utiliser les adresses IMDS version 2, si elles sont prises en charge par l'image. Désactivez ensuite l'utilisation des adresses IMDS version 1.

Les adresses IMDS version 2 (IMDSv2) sont prises en charge sur les images Oracle Linux répertoriées dans Matrice du système d'exploitation invité. Les autres images de plate-forme et la plupart des autres images ne prennent pas en charge IMDSv2.

Pour chaque instance, procédez comme suit pour effectuer la mise à niveau vers IMDSv2 :

  1. Identifiez les applications qui effectuent des demandes IMDSv1.

    Par exemple, cloud-init envoie des demandes aux adresses d'instance /v#.

  2. Migrez les applications identifiées pour prendre en charge les adresses IMDSv2.

    Lorsque vous utilisez des adresses /v2, vous devez inclure l'en-tête "Autorisation : Oracle porteur". Reportez-vous aux exemples de la section Extraction des métadonnées d'instance IMDS.

  3. Désactivez les adresses IMDSv1.

    Effectuez l'une des étapes suivantes, comme décrit dans Création d'une instance.

    • Sur la page de détails d'une instance, sous Détails d'instance, vérifiez la valeur des adresses de service de métadonnées d'instance héritées. Si la valeur des adresses de service de métadonnées d'instance héritée est Activé, sélectionnez Modifier dans le menu Contrôles et cochez la case Adresses de service de métadonnées d'instance héritée désactivées.

    • Dans la sortie de instance list ou instance get, sous instance-options, vérifiez la valeur de are-legacy-imds-endpoints-disabled. Si la valeur de are-legacy-imds-endpoints-disabled est null ou false, utilisez la commande instance update pour indiquer l'option suivante :

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

    Les demandes futures aux adresses héritées (v1) seront rejetées avec une erreur 404.

Extraction des métadonnées d'instance IMDS

Pour extraire les métadonnées d'instance IMDS, procédez comme suit :

  1. Connectez-vous à l'instance.

  2. Utilisez une commande cURL pour extraire les informations de métadonnées de l'adresse HTTP.

    Les informations sont fournies via une adresse HTTP qui écoute sur 169.254.169.254. Si une instance comporte plusieurs cartes d'interface réseau virtuelles, vous devez envoyer la demande à l'aide de la carte principale.

    Utilisez la commande instance pour extraire les métadonnées d'instance. Utilisez la commande vnics pour extraire les données de carte d'interface réseau virtuelle.

    Si vous utilisez des adresses /v2, comme indiqué dans les exemples suivants, vous devez inclure l'en-tête "Autorisation : Bearer Oracle".

    Exemple : métadonnées d'instance

    $ 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
    }

    Pour extraire une valeur unique, indiquez le nom de la clé comme indiqué dans l'exemple suivant.

    Exemple : métadonnées de carte d'interface réseau virtuelle

    $ 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"
        }
    ]

    Vous pouvez visualiser toutes les données de l'une des cartes d'interface réseau virtuelles en indiquant l'index de tableau pour ces données de carte d'interface réseau virtuelle, ou vous pouvez extraire une seule valeur pour la carte d'interface réseau virtuelle indiquée :

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