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 divers détails sur l'instance, les cartes d'interface réseau virtuelle (vNIC) et les attachements de volume multichemins qui lui sont attachés ainsi que toutes les métadonnées personnalisées que vous définissez. Le service de métadonnées d'instance fournit également des informations à cloud-init que vous pouvez utiliser pour diverses tâches d'initialisation du système.

Vous pouvez trouver certaines de ces informations dans la console, dans la page Détails de l'instance, ou vous pouvez les obtenir en vous connectant à l'instance et en utilisant le service de gestion des métadonnées. Le service s'exécute sur chaque instance et est un point d'extrémité HTTP qui écoute sur 169.254.169.254. Si une instance comporte plusieurs cartes vNIC, vous devez envoyer la demande à l'aide de la carte vNIC principale.

Important

Pour accroître la sécurité des demandes de métadonnées, nous vous recommandons fortement de mettre à jour toutes les applications pour utiliser le point d'extrémité IMDS version 2, si l'image le prend en charge. Désactivez ensuite les demandes pour IMDS version 1.

Pour les autorisations, voir Politique 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, la version 1 et la version 2. IMDSv2 offre une sécurité accrue par rapport à la version 1.

Lorsque vous désactivez IMDSv1 et autorisez les demandes uniquement pour IMDSv2, les choses suivantes changent :

  • Toutes les demandes doivent être adressées aux points d'extrémité v2 (/opc/v2). Les demandes aux points d'extrémité v1 (/opc/v1 et/openstack) sont rejetées avec l'erreur 404 - Page introuvable.
  • Toutes les demandes pour les points d'extrémité v2 doivent inclure un en-tête d'autorisation. Les demandes qui n'incluent pas l'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 dans une instance de calcul, utilisez les étapes de haut niveau suivantes :

  1. Vérifiez que l'instance utilise une image prenant en charge IMDSv2.
  2. Identifiez les demandes pour les points d'extrémité v1 existants.
  3. Migrez toutes les applications pour prendre en charge les points d'extrémité v2.
  4. Désactivez toutes les demandes pour les points d'extrémité v1 existants.

Images prises en charge pour IMDSv2

IMDSv2 est pris en charge sur les images de plate-forme suivantes :

  • Images Oracle Autonomous Linux 8.x
  • Images Oracle Autonomous Linux 7.x lancées en juin 2020 ou ultérieurement
  • Images Oracle Linux 8.x et Oracle Linux 7.x lancé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 à la version 20.3 ou version ultérieure et si Oracle Cloud Agent est mis à jour à la version 0.0.19 ou version ultérieure. Les images Windows personnalisées peuvent prendre en charge IMDSv2 si Oracle Cloud Agent est mis à jour à la version 1.0.0.0 ou versions ultérieures; cloudbase-init ne prend pas en charge IMDSv2.

Identification des demandes pour les points d'extrémité IMDSv1 existants

Pour identifier les points d'extrémité du service de métadonnées d'instance spécifiques pour les demandes et les agents qui effectuent les demandes, utilisez la mesure InstanceMetadataRequests.

Pour identifier les versions du service de métadonnées d'instance activées pour une instance, procédez de l'une des façons suivantes :

  • Utilisation de la console :
    1. Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances.
    2. Cliquez sur l'instance qui vous intéresse.
    3. Dans la section Détails de l'instance, à côté de Service de métadonnées d'instance, notez 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 retourne false si IMDSv1 et IMDSv2 sont activés pour l'instance. Il retourne true si IMDSv1 est désactivé.

Désactivation des demandes pour les points d'extrémité IMDSv1 existants

Après avoir migré toutes les applications de sorte qu'elles ne fassent des demandes que pour les points d'extrémité IMDSv2, vous devez désactiver toutes les demandes pour les points d'extrémité IMDSv1 existants.
Important

Vérifiez que l'instance n'utilise pas les points d'extrémité IMDSv1 avant de désactiver les demandes pour IMDSv1. Si l'instance repose toujours sur IMDSv1 lorsque vous désactivez les demandes, vous risquez de perdre une certaine fonctionnalité.

Procédez de l'une des façons suivantes :

  • Utilisation de la console :
    1. Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances.
    2. Cliquez sur l'instance qui vous intéresse.
    3. Dans la section Détails de l'instance, à côté de Service de métadonnées d'instance, cliquez sur Modifier.
    4. Pour Version IMDS autorisée, sélectionnez l'option Version 2 seulement.
    5. Cliquez sur enregistrer les modifications.
  • Utilisation de l'API : Utilisez l'opération UpdateInstance. Dans le corps de la demande, dans l'objet InstanceOptions, transmettez la valeur true pour l'attribut areLegacyImdsEndpointsDisabled.
Note

Si vous désactivez IMDSv1 dans une instance qui ne prend pas en charge IMDSv2, vous ne pourrez peut-être pas vous connecter à l'instance lorsque vous la lancez. Pour réactiver IMDSv1 : À l'aide de la console, dans la page Détails de l'instance, à côté 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. À l'aide de l'API, utilisez l'opération UpdateInstance.

Limitation de demande

Oracle Cloud Infrastructure applique la limitation aux demandes de service de métadonnées d'instance pour prévenir l'utilisation accidentelle ou abusive des ressources. Pour éviter la limitation, au lieu d'interroger les données d'identification de sécurité pour chaque transaction, mettez-les en mémoire cache jusqu'à leur expiration imminente.

Si vous créez un trop grand nombre de demandes trop rapidement, il se peut que certaines d'entre elles réussissent et que d'autres échouent. Si une limitation se produit, Oracle vous recommande de réessayer à l'aide d'un délai d'attente exponentiel.

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

Vous pouvez obtenir les métadonnées d'instance des images de plate-forme en utilisant cURL sur les instances Linux. Sur les instances Windows, vous pouvez utiliser cURL (si prise en charge par la version Windows) ou un navigateur Internet.

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

Authorization: Bearer Oracle

Les métadonnées d'instance accessibles à l'aide d'IMDSv2 sont disponibles avec les URL racines suivantes :

  • Toutes les informations sur l'instance :

    http://169.254.169.254/opc/v2/instance/
  • Informations sur les cartes vNIC qui sont attachées à l'instance :

    http://169.254.169.254/opc/v2/vnics/
  • Informations sur un volume attaché à l'instance avec un attachement activé pour la configuration multichemin :

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

Les métadonnées d'instance accessibles à l'aide d'IMDSv1 sont disponibles avec les URL racines suivantes. Aucun en-tête n'est nécessaire.

  • Toutes les informations sur l'instance :

    http://169.254.169.254/opc/v1/instance/
  • Informations sur les cartes vNIC qui sont attachées à l'instance :

    http://169.254.169.254/opc/v1/vnics/
  • Informations sur un volume attaché à l'instance avec un attachement activé pour la configuration multichemin :

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

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

Pour obtenir les métadonnées d'instance des instances Linux

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

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

Pour obtenir les métadonnées d'instance des instances Windows

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

Pour obtenir les métadonnées d'instance Windows à l'aide d'IMDSv2 :

  1. Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
  2. Selon que votre version Windows inclut cURL, procédez de l'une des façons suivantes :

    • Si votre version Windows inclut cURL, 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/
    • Si votre version Windows n'inclut pas cURL, vous pouvez obtenir les métadonnées d'instance dans votre navigateur Internet. Naviguez jusqu'à l'URL de métadonnées d'instance qui vous intéresse et transmettez une demande qui inclut l'en-tête d'autorisation. Pour plus d'informations sur l'inclusion des en-têtes dans une demande, voir les instructions ayant trait à votre navigateur. Vous aurez peut-être besoin d'installer une extension de navigateur de tierce partie qui vous permet d'inclure les en-têtes de demande.

Pour obtenir les métadonnées d'instance Windows à l'aide d'IMDSv1 :

  1. Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
  2. Ouvrez un navigateur Internet et naviguez jusqu'à l'URL des métadonnées d'instance qui vous intéressent.

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

Le service de métadonnées d'instance subit périodiquement de courtes périodes d'arrêt pour la maintenance. Par conséquent, lorsque vous essayez d'accéder aux points d'extrémité IMDS, ils peuvent être indisponibles. Comme meilleure pratique, mettez en oeuvre la logique de nouvelle tentative lors de l'accès aux points d'extrémité IMDS. La stratégie suivante est recommandée : Réessayez jusqu'à trois fois avec une temporisation de 30 secondes si vous recevez une réponse 404, 429 ou 5xx. Pour plus d'informations et des exemples, voir la documentation sur la trousse SDK pour Java.

Clés de métadonnées

Les métadonnées d'instance comprennent des clés de métadonnées par défaut définies par le service Calcul et ne peuvent pas être modifiées, de même 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 suivies d'une barre oblique indiquent un répertoire. Par exemple, regionInfo/ est un répertoire qui contient d'autres clés de métadonnées.

Clés de métadonnées pour une instance

Les métadonnées suivantes sont disponibles à propos d'une instance. 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.

Exemple : Uocm:PHX-AD-1

faultDomain

Nom du domaine d'erreur dans lequel l'instance est exécutée.

Exemple : FAULT-DOMAIN-1

compartmentId

OCIDdu compartiment qui contient l'instance.

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

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

Pour interroger les métadonnées d'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, la clé SSH publique fournie lors de la création de l'instance.
metadata/user_data Données d'utilisateur à utiliser par cloud-init ou cloudbase-init pour exécuter des scripts personnalisés ou 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, les valeurs phx et iad sont retournées, respectivement. Pour toutes les autres régions, l'identificateur complet de la région est retourné.

Exemples : phx, eu-frankfurt-1

canonicalRegionName

Identificateur de région pour 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é à l'interne et correspond à l'étiquette du 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é à 3 lettres pour la région.

Exemple : PHX

regionInfo/regionIdentifier

Identificateur de la région.

Exemple : us-phoenix-1

shape Forme de l'instance. La forme détermine le nombre d'unités centrales et la quantité de mémoire affectés à l'instance. Vous pouvez énumérer toutes les formes disponibles en appelant l'opération ListShapes.
state

État du cycle de vie courant de l'instance. Pour la liste des valeurs autorisées, voir 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 le logiciel Oracle Cloud Agent et les plugiciels exécutés sur l'instance.
agentConfig/monitoringDisabled

Valeur booléenne indiquant si le logiciel Oracle Cloud Agent peut collecter les mesures liées à la performance et surveiller l'instance à l'aide des plugiciels de surveillance.

Les plugiciels de surveillance sont contrôlés par ce paramètre et par la configuration propre au plugiciel dans l'objet pluginsConfig.

agentConfig/managementDisabled

Valeur booléenne indiquant si le logiciel Oracle Cloud Agent peut exécuter tous les plugiciels de gestion disponibles.

Les plugiciels de gestion sont contrôlés par ce paramètre et par la configuration propre au plugiciel dans l'objet pluginsConfig.

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

Indique si le plugiciel doit être activé ou désactivé.

Pour activer les plugiciels de surveillance et de gestion, les attributs monitoringDisabled et managementDisabled doivent également être réglés à Faux.

freeformTags/ Répertoire contenant tous les marqueurs à structure libre qui sont ajoutés à l'instance.
definedTags/ Répertoire contenant tous les balises marqueurs définis qui sont ajoutés à l'instance.

Voici un exemple de réponse présentant toutes les informations pour 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 vNIC attachées

Les métadonnées suivantes sont disponibles pour les cartes vNIC attachées à l'instance. Les chemins sont relatifs à http://169.254.169.254/opc/v2/vnics/.

Entrée de métadonnées Description
vnicId OCID de la carte vNIC.
privateIp Adresse IP privée de l'objet principal privateIp sur la carte vNIC. L'adresse fait partie du CIDR du sous-réseau de la carte vNIC.
vlanTag

Marqueur VLAN affecté par Oracle de la carte vNIC attachée.

Si la carte vNIC appartient à un VLAN dans le cadre de la solution VMware Oracle Cloud, la valeur vlanTag est remplacée par la valeur de l'attribut vlanTag pour le VLAN. Voir Vlan.

macAddr

Adresse MAC de la carte vNIC.

Si la carte vNIC appartient à un VLAN dans le cadre de la solution VMware Oracle Cloud, l'adresse MAC est apprise. Si la carte vNIC 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 Indique la carte d'interface réseau physique utilisée par la carte vNIC. Certaines formes d'instance sans système d'exploitation ont deux cartes d'interface réseau physiques actives (0 et 1). Si vous ajoutez une carte vNIC secondaire à l'une de ces instances, vous pouvez spécifier la carte d'interface réseau utilisée par la carte vNIC. Pour plus d'informations, voir Cartes d'interface de réseau virtuel (vNIC).

Voici un exemple de réponse présentant les cartes vNIC 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 activés pour la configuration multichemin

Les métadonnées suivantes sont disponibles pour les attachements de volume multichemins attachées à l'instance. 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 multipath secondaires avec les propriétés ipv4, iqn et port.

Voici un exemple de réponse qui présente les attachements de volume multichemins pour 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
      }
    ]
  }
]

Clés de métadonnées pour la configuration de forme

Cette commande affiche les OCPU disponibles dans chaque forme de calcul. Ces informations sont utiles pour les formes flexibles où une application doit en savoir plus sur les OCPUS, les cartes vNIC ou tout détail configurable de forme.

Les métadonnées suivantes sont disponibles pour les formes de calcul attachées à l'instance. Les chemins sont relatifs à http://169.254.169.254/opc/v2/instance/shapeConfig.

Entrée de métadonnées Description
Shape Nom de l'instance.
OCPU Count Nombre d'OCPU limité par la forme de machine virtuelle sélectionnée et les quotas d'OCPU définis pour la location.
networkingBandwidthInGbps Quantité de données pouvant être transférées dans un réseau entre deux points.
Memory Limite d'OCPU pour la forme de machine virtuelle sélectionnée. Pour plus d'informations, voir Formes de calcul.
maxVnicAttachments Nombre maximal d'attachements entre une carte VNIC et une instance.

Utilisez la commande cURL suivante pour émettre une demande GET aux métadonnées de configuration de forme d'instance qui vous intéressent.

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

Voici un exemple de réponse qui présente les métadonnées de configuration de forme pour une instance Linux.


{
  "ocpus" : 4.0,
  "memoryInGBs" : 60.0,
  "networkingBandwidthInGbps" : 4.0,
  "maxVnicAttachments" : 4
}