Recupero dei metadati dell'istanza dall'interno dell'istanza
In Compute Cloud@Customer, Instance Metadata Service (IMDS) fornisce informazioni su un'istanza in esecuzione agli utenti che hanno eseguito il login a tale istanza. IMDS fornisce inoltre informazioni al cloud-init che è possibile utilizzare per vari task di inizializzazione del sistema.
Per accedere ai metadati IMDS, utilizzare un'immagine dell'istanza fornita da Oracle.
I metadati IMDS includono informazioni sull'istanza, ad esempio:
-
Chiave pubblica SSH che consente agli utenti di accedere all'istanza
-
VNIC collegate all'istanza, ID VNIC
-
Blocchi CIDR istanza
In generale, i metadati dell'istanza IMDS includono le seguenti informazioni:
-
Le stesse informazioni visualizzate nella pagina dei dettagli di un'istanza nella console e nell'output dell'interfaccia CLI
getdell'istanza. -
Informazioni personalizzate aggiunte a un'istanza utilizzando le opzioni
--metadata,--extended-metadata,--ssh-authorized-keys-filee--user-data-filedel comandolaunchdell'istanza. Impossibile aggiornare questi metadati dopo l'avvio dell'istanza. Per un utente che ha eseguito il login all'istanza, i metadati dell'istanza sono di sola lettura.
Aggiornamento agli endpoint di IMDS versione 2
Il servizio metadati istanza è disponibile in due versioni: versione 1 e versione 2.
Per aumentare la sicurezza delle richieste di metadati, eseguire l'upgrade di tutte le applicazioni in modo che utilizzino gli endpoint IMDS versione 2, se supportati dall'immagine. Quindi disabilitare l'uso degli endpoint di IMDS versione 1.
Gli endpoint IMDS versione 2 (IMDSv2) sono supportati nelle immagini Oracle Linux elencate nella Matrice del sistema operativo guest. Altre immagini della piattaforma e la maggior parte delle altre immagini non supportano IMDSv2.
Per ogni istanza, eseguire i passi riportati di seguito per eseguire l'upgrade a IMDSv2.
-
Identificare le applicazioni che stanno effettuando richieste IMDSv1.
Ad esempio,
cloud-initeffettua richieste agli endpoint dell'istanza/v#. -
Eseguire la migrazione delle applicazioni identificate per supportare gli endpoint IMDSv2.
Quando si utilizzano gli endpoint
/v2, è necessario includere l'intestazione "Autorizzazione: Oracle Bearer". Vedere gli esempi riportati in Recupero dei metadati dell'istanza IMDS. -
Disabilitare gli endpoint IMDSv1.
Eseguire una delle operazioni riportate di seguito, come descritto in Creazione di un'istanza.
-
Nella pagina dei dettagli di un'istanza, in Dettagli istanza, controllare il valore degli endpoint del servizio di metadati dell'istanza precedente. Se il valore degli endpoint del servizio metadati delle istanze precedenti è Abilitato, selezionare Modifica nel menu Controlli e selezionare la casella per gli endpoint del servizio metadati delle istanze precedenti disabilitati.
-
Nell'output da
instance listoinstance get, sottoinstance-options, controllare il valore diare-legacy-imds-endpoints-disabled. Se il valore diare-legacy-imds-endpoints-disabledènullofalse, utilizzare il comandoinstance updateper specificare la seguente opzione:--instance-options '{"areLegacyImdsEndpointsDisabled": true}'
Le richieste future agli endpoint legacy (
v1) verranno rifiutate con un errore 404 non trovato. -
Recupero dei metadati dell'istanza IMDS
Per recuperare i metadati dell'istanza IMDS, effettuare le operazioni riportate di seguito.
-
Eseguire l'accesso all'istanza.
-
Utilizzare un comando cURL per recuperare le informazioni sui metadati dall'endpoint HTTP.
Le informazioni vengono fornite tramite un endpoint HTTP che ascolta su 169.254.169.254. Se un'istanza dispone di più VNIC, è necessario inviare la richiesta utilizzando la VNIC primaria.
Utilizzare il comando
instanceper recuperare i metadati dell'istanza. Utilizzare il comandovnicsper recuperare i dati della VNIC.Se si utilizzano gli endpoint
/v2, come mostrato negli esempi riportati di seguito, è necessario includere l'intestazione "Autorizzazione: Oracle Bearer".Esempio: metadati istanza
$ 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 }Per recuperare un singolo valore, specificare il nome della chiave come mostrato nell'esempio seguente.
Esempio: metadati VNIC
$ 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" } ]È possibile visualizzare tutti i dati per una di più VNIC specificando l'indice di array per tali dati VNIC oppure è possibile recuperare un singolo valore per la VNIC specificata:
$ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/0/privateIp privateIp