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.
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 les 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
ouX-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 :
- Vérifiez que l'instance utilise une image prenant en charge IMDS version 2.
- Identifiez les demandes envoyées aux adresses version 1 héritées.
- Migrez toutes les applications pour qu'elles prennent en charge les adresses version 2.
- 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 que l'agent Oracle Cloud est mis à jour 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 :
- Ouvrez le menu de navigation et cliquez sur Compute. Sous Compute, cliquez sur Instances.
- Cliquez sur l'instance qui vous intéresse.
- 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'objetInstanceOptions
renvoiefalse
si IMDS version 1 et IMDS version 2 sont activés pour l'instance. Il renvoietrue
si IMDS version 1 est désactivé.
Désactivation des demandes aux adresses IMDS version 1 héritées
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 :
- Ouvrez le menu de navigation et cliquez sur Compute. Sous Compute, cliquez sur Instances.
- Cliquez sur l'instance qui vous intéresse.
- Dans la section Détails de l'instance, en regard de Service de métadonnées d'instance, cliquez sur Modifier.
- Dans Version IMDS autorisée, sélectionnez l'option Version 2 uniquement.
- 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 valeurtrue
pour l'attributareLegacyImdsEndpointsDisabled
.
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
- Connectez-vous à une instance Linux à l'aide de SSH.
-
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 :
- Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
-
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 :
- Connectez-vous à une instance Windows à l'aide d'une connexion Bureau à distance.
- 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 : |
faultDomain |
Nom du domaine de pannes sur lequel l'instance est exécutée. Exemple : |
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/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, Exemples : |
canonicalRegionName |
Identificateur de la région qui contient le domaine de disponibilité dans lequel l'instance est exécutée. Exemple : |
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 : |
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 : |
regionInfo/realmDomainComponent |
Domaine du domaine de sécurité. Exemple : |
regionInfo/regionKey |
Clé de 3 lettres de la région. Exemple : |
regionInfo/regionIdentifier |
Identificateur de région. Exemple : |
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 : |
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 |
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 |
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 |
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 |
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
}
]
}
]