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.
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'instancelaunch
. 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.
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 :
-
Identifiez les applications qui effectuent des demandes IMDSv1.
Par exemple,
cloud-init
envoie des demandes aux adresses d'instance/v#
. -
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. -
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
ouinstance get
, sousinstance-options
, vérifiez la valeur deare-legacy-imds-endpoints-disabled
. Si la valeur deare-legacy-imds-endpoints-disabled
estnull
oufalse
, utilisez la commandeinstance 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 :
-
Connectez-vous à l'instance.
-
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 commandevnics
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