Obtention des métadonnées d'instance

Le service de métadonnées d'instance (IMDS) fournit des informations sur une instance en cours d'exécution, notamment des détails sur les cartes d'interface réseau virtuelles attachées, les attachements de volume à chemins d'accès multiples attachés et toutes les métadonnées personnalisées que vous définissez. IMDS fournit également à cloud-init des informations que vous pouvez utiliser pour diverses tâches d'initialisation système.

Vous pouvez trouver certaines de ces informations dans la console sur la page Détails de l'instance, ou toutes les obtenir en vous connectant à l'instance et en utilisant le service de métadonnées. Le service est exécuté sur chaque instance. Il correspond à 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.

Important

Pour augmenter la sécurité des demandes de métadonnées, nous vous recommandons fortement de mettre à jour toutes les applications afin qu'elles utilisent l'adresse IMDS version 2, si elle est prise en charge par l'image. Désactivez ensuite les demandes à IMDS version 1.

Pour obtenir des droits d'accès, reportez-vous à Stratégie IAM requise pour l'utilisation des instances.

Mise à niveau vers le service de métadonnées d'instance version 2

Le service de métadonnées d'instance est disponible en deux versions : 1 et 2. IMDS version 2 offre une sécurité accrue par rapport à la version 1.

Lorsque vous désactivez IMDS version 1 et autorisez uniquement les demandes à IMDS version 2, les modifications suivantes sont apportées :

  • Toutes les demandes doivent être envoyées aux adresses version 2 (/opc/v2). Les demandes aux adresses version 1 (/opc/v1 et /openstack) sont rejetées avec une erreur 404 Introuvable.
  • Toutes les demandes envoyées aux adresses version 2 doivent inclure un en-tête d'autorisation. Les demandes qui n'incluent pas d'en-tête d'autorisation sont rejetées.
  • Les demandes transmises à l'aide des en-têtes HTTP Forwarded, X-Forwarded-For ou X-Forwarded-Host sont rejetées.

Pour mettre à niveau le service de métadonnées d'instance d'une instance de calcul, suivez ces étapes globales :

  1. Vérifiez que l'instance utilise une image prenant en charge IMDS version 2.
  2. Identifiez les demandes envoyées aux adresses version 1 héritées.
  3. Migrez toutes les applications pour qu'elles prennent en charge les adresses version 2.
  4. Désactivez toutes les demandes envoyées aux adresses version 1 héritées.

Images prises en charge pour IMDS version 2

IMDS version 2 est pris en charge sur les images de plate-forme suivantes :

  • image Oracle Autonomous Linux 8.x,
  • images Oracle Autonomous Linux 7.x publiées en juin 2020 ou ultérieurement,
  • images Oracle Linux 8.x, Oracle Linux 7.x et Oracle Linux 6.x publiées en juillet 2020 ou ultérieurement.

D'autres images de plate-forme, la plupart des images personnalisées et la plupart des images Marketplace ne prennent pas en charge IMDSv2. Les images Linux personnalisées peuvent prendre en charge IMDSv2 si cloud-init est mis à jour vers la version 20.3 ou une version ultérieure et l'agent Oracle Cloud vers la version 0.0.19 ou une version ultérieure. Les images Windows personnalisées peuvent prendre en charge IMDS version 2 si l'agent Oracle Cloud est mis à jour vers la version 1.0.0.0 ou une version ultérieure ; cloudbase-init ne prend pas en charge IMDS version 2.

Identification des demandes aux adresses IMDS version 1 héritées

Pour identifier les adresses IMDS spécifiques auxquelles les demandes sont adressées et les agents qui effectuent les demandes, utilisez la mesure InstanceMetadataRequests.

Afin d'identifier les versions d'IMDS activées pour une instance, effectuez l'une des opérations suivantes :

  • Utilisation de la console :
    1. Ouvrez le menu de navigation et cliquez sur Compute. Sous Compute, cliquez sur Instances.
    2. Cliquez sur l'instance qui vous intéresse.
    3. Dans la section Détails de l'instance, en regard de Service de métadonnées d'instance, relevez les numéros de version.
  • Utilisation de l'API : utilisez l'opération GetInstance ou ListInstances. Dans la réponse, l'attribut areLegacyImdsEndpointsDisabled de l'objet InstanceOptions renvoie false si IMDS version 1 et IMDS version 2 sont activés pour l'instance. Il renvoie true si IMDS version 1 est désactivé.

Désactivation des demandes aux adresses IMDS version 1 héritées

Une fois que vous avez migré toutes les applications de manière à ce qu'elles n'effectuent des demandes qu'aux adresses IMDS version 2, vous devez désactiver toutes les demandes aux adresses IMDS version 1 héritées.
Important

Vérifiez que l'instance n'utilise pas les adresses IMDS version 1 avant de désactiver les demandes à IMDS version 1. Si l'instance se sert toujours d'IMDS version 1 lorsque vous désactivez les demandes qui lui sont adressées, vous risquez de perdre certaines fonctionnalités.

Effectuez ensuite l'une des opérations suivantes :

  • Utilisation de la console :
    1. Ouvrez le menu de navigation et cliquez sur Compute. Sous Compute, cliquez sur Instances.
    2. Cliquez sur l'instance qui vous intéresse.
    3. Dans la section Détails de l'instance, en regard de Service de métadonnées d'instance, cliquez sur Modifier.
    4. Dans Version IMDS autorisée, sélectionnez l'option Version 2 uniquement.
    5. Cliquez sur Enregistrer les modifications.
  • Utilisation de l'API : utilisez l'opération UpdateInstance. Dans le corps de demande, dans l'objet InstanceOptions, transmettez la valeur true pour l'attribut areLegacyImdsEndpointsDisabled.
Remarque

Si vous désactivez IMDS version 1 sur une instance qui ne prend pas en charge IMDS version 2, il se peut que vous ne puissiez pas vous connecter à l'instance lorsque vous la lancez. Pour réactiver IMDS version 1 : à l'aide de la console, sur la page Détails de l'instance, en regard de Service de métadonnées d'instance, cliquez sur Modifier. Sélectionnez l'option Version 1 et version 2, enregistrez vos modifications, puis redémarrez l'instance. A l'aide de l'API, utilisez l'opération UpdateInstance.

Ralentissement des demandes

Oracle Cloud Infrastructure applique un ralentissement aux demandes de service de métadonnées d'instance pour éviter l'utilisation accidentelle ou abusive des ressources. Pour éviter tout ralentissement, au lieu d'interroger les informations d'identification de sécurité à chaque transaction, conservez-les en mémoire cache jusqu'à ce qu'elles approchent de leur date d'expiration.

Si vous effectuez un trop grand nombre de demandes trop rapidement, certaines peuvent aboutir et d'autres échouer. Si vous rencontrez des problèmes de ralentissement, Oracle vous recommande de réessayer avec un délai d'attente exponentielle.

Obtention des métadonnées d'instance sur les images de plate-forme

Sur les instances Linux, vous pouvez obtenir des métadonnées d'instance pour les images de plate-forme à l'aide de cURL. Sur les instances Windows, vous pouvez utiliser cURL (s'il est pris en charge par la version de Windows) ou un navigateur Web.

Toutes les demandes adressées au service de métadonnées d'instance version 2 doivent comporter l'en-tête suivant :

Authorization: Bearer Oracle

Les métadonnées d'instance accessibles à l'aide d'IMDS version 2 sont disponibles dans les URL racine suivantes :

  • Toutes les informations de l'instance :

    http://169.254.169.254/opc/v2/instance/
  • Informations sur les cartes d'interface réseau virtuelles attachées à l'instance :

    http://169.254.169.254/opc/v2/vnics/
  • Informations sur un volume attaché à l'instance avec un attachement à chemins d'accès multiples :

    http://169.254.169.254/opc/v2/volumeAttachments/

Les métadonnées d'instance accessibles à l'aide d'IMDS version 1 sont disponibles dans les URL racine suivantes. Aucun en-tête n'est nécessaire.

  • Toutes les informations de l'instance :

    http://169.254.169.254/opc/v1/instance/
  • Informations sur les cartes d'interface réseau virtuelles attachées à l'instance :

    http://169.254.169.254/opc/v1/vnics/
  • Informations sur un volume attaché à l'instance avec un attachement à chemins d'accès multiples :

    http://169.254.169.254/opc/v1/volumeAttachments/

Les valeurs de clés de métadonnées spécifiques sont disponibles en tant que sous-chemins sous l'URL racine.

Procédure d'obtention de métadonnées d'instance pour les instances Linux

  1. Connectez-vous à une instance Linux à l'aide de SSH.
  2. Utilisez cURL pour émettre une demande GET à l'URL de métadonnées d'instance qui vous intéresse. Par exemple :

    curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/

Procédure d'obtention de métadonnées d'instance pour les instances Windows

Les étapes permettant d'obtenir des métadonnées sur une instance Windows dépendent de la version du service de métadonnées d'instance à partir duquel vous demandez les métadonnées.

Pour obtenir des métadonnées d'instance Windows à l'aide d'IMDS version 2, procédez comme suit :

  1. Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
  2. Selon que votre version de Windows inclut cURL, effectuez l'une des opérations suivantes :

    • Si votre version de Windows inclut la commande cURL, utilisez-la pour envoyer une demande GET à l'URL de métadonnées d'instance qui vous intéresse. Par exemple :

      curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    • Si votre version de Windows n'inclut pas la commande cURL, vous pouvez obtenir les métadonnées d'instance dans votre navigateur Web. Accédez à l'URL de métadonnées d'instance qui vous intéresse et transmettez une demande incluant l'en-tête d'autorisation. Pour plus d'informations sur l'inclusion d'en-têtes dans une demande, reportez-vous aux instructions de votre navigateur. Vous pourriez avoir besoin d'installer une extension de navigateur tiers qui vous permette d'inclure des en-têtes de demande.

Pour obtenir des métadonnées d'instance Windows à l'aide d'IMDS version 1, procédez comme suit :

  1. Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
  2. Ouvrez un navigateur Web et accédez à l'URL de métadonnées d'instance qui vous intéresse.

Nouvelles tentatives pour les métadonnées d'instance

Le service de métadonnées d'instance subit régulièrement de courts temps d'inactivité pour la maintenance. Par conséquent, certaines adresses IMDS auxquelles vous essayez d'accéder peuvent ne pas être disponibles. La meilleure pratique consiste à implémenter une logique de nouvelles tentatives lors de l'accès aux adresses IMDS. La stratégie suivante est recommandée : réessayez jusqu'à trois fois avec un délai de 30 secondes si vous recevez une réponse 404, 429 ou 5xx. Afin d'obtenir plus d'informations et des exemples, reportez-vous à la documentation du kit SDK pour Java.

Clés de métadonnées

Les métadonnées d'instance incluent les clés de métadonnées par défaut qui sont définies par Compute et ne peuvent pas être modifiées, ainsi que les clés de métadonnées personnalisées que vous créez.

Certaines entrées de métadonnées sont des répertoires contenant des clés de métadonnées supplémentaires. Dans les tableaux suivants, les entrées comportant une barre oblique de fin indiquent un répertoire. Par exemple, regionInfo/ est un répertoire contenant d'autres clés de métadonnées.

Clés de métadonnées d'une instance

Les métadonnées suivantes sur les instances sont disponibles. Les chemins sont relatifs à http://169.254.169.254/opc/v2/instance/.

Entrée de métadonnées Description
availabilityDomain

Domaine de disponibilité dans lequel l'instance est exécutée. Ce nom inclut le préfixe propre à la location du nom de domaine de disponibilité.

Exemple : Uocm:PHX-AD-1

faultDomain

Nom du domaine de pannes sur lequel l'instance est exécutée.

Exemple : FAULT-DOMAIN-1

compartmentId

OCID  du compartiment contenant l'instance.

displayName Nom convivial de l'instance.
hostname Nom d'hôte de l'instance.
id OCID de l'instance.
image OCID d'image utilisé pour démarrer l'instance.
metadata/

Répertoire contenant toutes les métadonnées personnalisées que vous fournissez pour l'instance.

Afin d'interroger les métadonnées pour une clé de métadonnées personnalisée spécifique, utilisez metadata/<key-name>, où <key-name> est le nom de la clé que vous avez définie lors de la création de l'instance.

metadata/ssh_authorized_keys Pour les instances Linux, clé SSH publique fournie lors de la création de l'instance.
metadata/user_data Données utilisateur employées par cloud-init ou cloudbase-init pour exécuter des scripts personnalisés ou pour fournir une configuration personnalisée.
region

Région qui contient le domaine de disponibilité dans lequel l'instance est exécutée.

Pour les régions us-phoenix-1 et us-ashburn-1, phx et iad sont respectivement renvoyés. Pour toutes les autres régions, l'identificateur complet de la région est renvoyé.

Exemples : phx, eu-frankfurt-1

canonicalRegionName

Identificateur de la région qui contient le domaine de disponibilité dans lequel l'instance est exécutée.

Exemple : us-phoenix-1

ociAdName

Domaine de disponibilité dans lequel l'instance est exécutée. Ce nom est utilisé en interne et correspond au libellé de centre de données.

Exemple : phx-ad-1

regionInfo/ Répertoire contenant des informations sur la région qui contient le domaine de disponibilité dans lequel l'instance est exécutée.
regionInfo/realmKey

Clé du domaine  dans lequel se trouve la région.

Exemple : oc1

regionInfo/realmDomainComponent

Domaine du domaine de sécurité.

Exemple : oraclecloud.com

regionInfo/regionKey

Clé de 3 lettres de la région.

Exemple : PHX

regionInfo/regionIdentifier

Identificateur de région.

Exemple : us-phoenix-1

shape Forme de l'instance. La forme détermine le nombre d'UC et la quantité de mémoire alloués à l'instance. Vous pouvez dresser la liste de toutes les formes disponibles en appelant l'opération ListShapes.
state

Etat de cycle de vie en cours de l'instance. Pour obtenir la liste des valeurs autorisées, reportez-vous à Instance.

Exemple : Running

timeCreated Date et heure de création de l'instance, au format d'horodatage UNIX, en millisecondes depuis Epoch.
agentConfig/ Répertoire contenant des informations sur les modules d'extension et le logiciel d'agent Oracle Cloud exécutés sur l'instance.
agentConfig/monitoringDisabled

Valeur booléenne indiquant si le logiciel d'agent Oracle Cloud peut collecter des mesures de performances et surveiller l'instance à l'aide des modules d'extension de surveillance.

Les modules d'extension de surveillance sont contrôlés par ce paramètre et par la configuration par module d'extension dans l'objet pluginsConfig.

agentConfig/managementDisabled

Valeur booléenne indiquant si le logiciel d'agent Oracle Cloud peut exécuter tous les modules d'extension de gestion disponibles.

Les modules d'extension de gestion sont contrôlés par ce paramètre et par la configuration par module d'extension dans l'objet pluginsConfig.

agentConfig/allPluginsDisabled Valeur booléenne indiquant si l'agent Oracle Cloud peut exécuter tous les modules d'extension disponibles. Cela inclut les modules d'extension de gestion et de surveillance.
agentConfig/pluginsConfig/ Répertoire contenant des informations sur les modules d'extension gérés par l'agent Oracle Cloud sur l'instance.
agentConfig/pluginsConfig/name Nom du module d'extension.
agentConfig/pluginsConfig/desiredState

Indique si le module d'extension doit être activé ou désactivé.

Pour activer les modules d'extension de surveillance et de gestion, les attributs monitoringDisabled et managementDisabled doivent également être définis sur False.

freeformTags/ Répertoire contenant les balises à format libre ajoutées à l'instance.
definedTags/ Répertoire contenant les balises définies ajoutées à l'instance.

Voici un exemple de réponse affichant toutes les informations d'une instance :

{
  "availabilityDomain" : "EMIr:PHX-AD-1",
  "faultDomain" : "FAULT-DOMAIN-3",
  "compartmentId" : "ocid1.tenancy.oc1..exampleuniqueID",
  "displayName" : "my-example-instance",
  "hostname" : "my-hostname",
  "id" : "ocid1.instance.oc1.phx.exampleuniqueID",
  "image" : "ocid1.image.oc1.phx.exampleuniqueID",
  "metadata" : {
    "ssh_authorized_keys" : "example-ssh-key"
  },
  "region" : "phx",
  "canonicalRegionName" : "us-phoenix-1",
  "ociAdName" : "phx-ad-1",
  "regionInfo" : {
    "realmKey" : "oc1",
    "realmDomainComponent" : "oraclecloud.com",
    "regionKey" : "PHX",
    "regionIdentifier" : "us-phoenix-1"
  },
  "shape" : "VM.Standard.E3.Flex",
  "state" : "Running",
  "timeCreated" : 1600381928581,
  "agentConfig" : {
    "monitoringDisabled" : false,
    "managementDisabled" : false,
    "allPluginsDisabled" : false,
    "pluginsConfig" : [ {
      "name" : "OS Management Service Agent",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Custom Logs Monitoring",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Run Command",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Monitoring",
      "desiredState" : "ENABLED"
    } ]
  },
  "freeformTags": {
    "Department": "Finance"
  },
  "definedTags": {
    "Operations": {
      "CostCenter": "42"
    }
  }
}

Clés de métadonnées pour les cartes d'interface réseau virtuelles attachées

Les métadonnées suivantes sur les cartes d'interface réseau virtuelles attachées à l'instance sont disponibles. Les chemins sont relatifs à http://169.254.169.254/opc/v2/vnics/.

Entrée de métadonnées Description
vnicId OCID de la carte d'interface réseau virtuelle.
privateIp Adresse IP privée de l'objet privateIp principal sur la carte d'interface réseau virtuelle. L'adresse se trouve dans le CIDR du sous-réseau de la carte d'interface réseau virtuelle.
vlanTag

Balise VLAN affectée par Oracle de la carte d'interface réseau virtuelle attachée.

Si la carte d'interface réseau virtuelle appartient à un VLAN dans le cadre d'Oracle Cloud VMware Solution, la valeur vlanTag est en fait la valeur de l'attribut vlanTag du VLAN. Reportez-vous à Vlan.

macAddr

Adresse MAC de la carte d'interface réseau virtuelle.

Si la carte d'interface réseau virtuelle appartient à un VLAN dans le cadre d'Oracle Cloud VMware Solution, l'adresse MAC est apprise. Si la carte d'interface réseau virtuelle appartient à un sous-réseau, l'adresse MAC est une valeur statique fournie par Oracle.

virtualRouterIp Adresse IP du routeur virtuel.
subnetCidrBlock Bloc CIDR du sous-réseau.
nicIndex Carte d'interface réseau physique utilisée par la carte d'interface réseau virtuelle. Certaines formes d'instance Bare Metal ont deux cartes d'interface réseau physiques actives (0 et 1). Si vous ajoutez une carte d'interface réseau virtuelle secondaire à l'une de ces instances, vous pouvez indiquer quelle carte d'interface réseau la carte d'interface réseau virtuelle doit utiliser. Pour plus d'informations, reportez-vous à Cartes d'interface réseau virtuelles (VNIC).

L'exemple de réponse ci-dessous indique les cartes d'interface réseau virtuelles attachées à une instance :

[ {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.3.6",
    "vlanTag" : 11,
    "macAddr" : "00:00:00:00:00:01",
    "virtualRouterIp" : "10.0.3.1",
    "subnetCidrBlock" : "10.0.3.0/24",
    "nicIndex" : 0
}, {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.4.3",
    "vlanTag" : 12,
    "macAddr" : "00:00:00:00:00:02",
    "virtualRouterIp" : "10.0.4.1",
    "subnetCidrBlock" : "10.0.4.0/24",
    "nicIndex" : 0
} ]

Clés de métadonnées pour les volumes attachés avec des attachements à chemins d'accès multiples

Les métadonnées suivantes sur les attachements de volume à chemins d'accès multiples attachés à l'instance sont disponibles. Les chemins sont relatifs à http://169.254.169.254/opc/v2/volumeAttachments/.

Entrée de métadonnées Description
id OCID de l'attachement de volume.
instanceId OCID de l'instance.
volumeId OCID du volume.
ipv4 Adresse IPv4 de la cible iSCSI.
iqn IQN de la cible iSCSI.
port Port de la cible iSCSI.
multipathDevices Liste des appareils à chemins d'accès multiples secondaires avec les propriétés ipv4, iqn et port.

L'exemple de réponse ci-dessous indique les attachements de volume à chemins d'accès multiples d'une instance :

[
  {
    "id": "ocid1.volumeattachment.oc1.phx.exampleuniqueID",
    "instanceId": "ocid1.instance.oc1.phx.exampleuniqueID",
    "volumeId": "ocid1.volume.oc1.phx.exampleuniqueID",
    "ipv4": "169.254.2.2",
    "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
    "port": 3260,
    "multipathDevices":
    [
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      }
    ]
  }
]