IMDSversi pada perangkat Keluarga Salju - AWS Snowball Edge Panduan Pengembang

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

IMDSversi pada perangkat Keluarga Salju

Anda dapat mengakses metadata instans dari instance yang sedang berjalan menggunakan IMDS versi 2 atau IMDS versi 1:

  • Layanan Metadata Instance versi 2 (IMDSv2), metode berorientasi sesi

  • Layanan Metadata Instance versi 1 (IMDSv1), metode permintaan-respons

Tergantung pada versi perangkat lunak Snow Anda, Anda dapat menggunakanIMDSv1,IMDSv2, atau keduanya. Ini juga tergantung pada jenis AMI berjalan di instance EC2 -compatible. BeberapaAMIs, seperti yang menjalankan Ubuntu 20.04, memerlukanIMDSv2. Layanan metadata instance membedakan antara IMDSv1 dan IMDSv2 permintaan berdasarkan keberadaan PUT atau header. GET IMDSv2menggunakan kedua header ini. IMDSv1hanya menggunakan GET header.

AWS mendorong penggunaan IMDSv2 bukan IMDSv1 karena IMDSv2 mencakup keamanan yang lebih tinggi. Untuk informasi selengkapnya, lihat Menambahkan pertahanan secara mendalam terhadap firewall terbuka, proxy terbalik, dan SSRF kerentanan dengan penyempurnaan pada Layanan Metadata Instance. EC2

IMDSv2pada perangkat Keluarga Salju

Ketika Anda menggunakan IMDSv2 untuk meminta metadata instance, permintaan harus mengikuti aturan berikut:

  1. Gunakan permintaan PUT untuk memulai sesi ke layanan metadata instans. PUTPermintaan mengembalikan token sesi yang harus disertakan dalam GET permintaan berikutnya ke layanan metadata instance. Token sesi yang menentukan durasi sesi. Durasi sesi bisa minimal satu detik dan maksimal enam jam. Selama durasi ini, Anda dapat menggunakan token sesi yang sama untuk permintaan berikutnya. Setelah durasi ini berakhir, Anda harus membuat token sesi baru untuk permintaan future. Token diperlukan untuk mengakses metadata menggunakan. IMDSv2

  2. Sertakan token di semuaGET permintaan ke layanan metadata instance.

    1. Token adalah kunci khusus instance. Token tidak valid pada instance lain EC2 yang kompatibel dan akan ditolak jika Anda mencoba menggunakannya di luar instance tempat token tersebut dihasilkan.

    2. PUTPermintaan harus menyertakan header yang menentukan waktu untuk live (TTL) untuk token, dalam hitungan detik, hingga maksimum enam jam (21.600 detik). Token tersebut mewakili sesi logis. TTLIni menentukan lamanya waktu token valid dan, oleh karena itu, durasi sesi.

    3. Setelah token kedaluwarsa, untuk terus mengakses metadata instance, Anda harus membuat sesi baru menggunakan permintaan lain. PUT

    4. Anda dapat memilih untuk menggunakan kembali token atau membuat token baru dengan setiap permintaan. Untuk sejumlah kecil permintaan, mungkin lebih mudah untuk membuat dan segera menggunakan token setiap kali Anda perlu mengakses layanan metadata instance. Namun untuk efisiensi, Anda dapat menentukan durasi yang lebih lama untuk token dan menggunakannya kembali daripada harus menulisPUT meminta setiap kali Anda perlu meminta metadata instance. Tidak ada batasan praktis untuk jumlah token yang bersamaan, masing-masing mewakili sesinya sendiri.

HTTPGETdan HEAD metode diizinkan dalam permintaan metadata IMDSv2 contoh. PUTpermintaan ditolak jika berisi X-Forwarded-For header.

Secara default, respons terhadap PUT permintaan memiliki batas hop respons (waktu untuk hidup) 1 pada tingkat protokol IP. IMDSuntuk Snow tidak memiliki kemampuan untuk memodifikasi batas hop pada PUT tanggapan.

Contoh berikut menggunakan skrip shell Linux dan IMDSv2 untuk mengambil item metadata instance tingkat atas. Contoh ini:

  1. Membuat token sesi yang berlangsung selama enam jam (21.600 detik) menggunakan permintaan. PUT

  2. Menyimpan header token sesi dalam variabel bernamaTOKEN.

  3. Meminta item metadata tingkat atas menggunakan token.

Gunakan dua perintah untuk menghasilkan token EC2 yang kompatibel. Anda dapat menjalankan perintah secara terpisah atau sebagai satu perintah.

Pertama, hasilkan token menggunakan perintah berikut.

catatan

X-aws-ec2-metadata-token-ttl-secondsadalah header yang diperlukan. Jika header ini tidak disertakan, Anda akan menerima kode kesalahan 400 - Parameter Hilang atau Tidak Valid.

[ec2-user ~]$ TOKEN=curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"

Kemudian, gunakan token untuk menghasilkan item metadata tingkat atas menggunakan perintah berikut.

[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
catatan

Jika ada kesalahan dalam membuat token, pesan kesalahan disimpan dalam variabel alih-alih token yang valid dan perintah tidak akan berfungsi.

Anda dapat menyimpan token dan menggabungkan perintah. Contoh berikut menggabungkan dua perintah di atas dan menyimpan header token sesi dalam variabel bernamaTOKEN.

contoh dari perintah gabungan
[ec2-user ~]$ TOKEN=curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/

Setelah Anda membuat token, Anda dapat menggunakannya kembali hingga kedaluwarsa. Contoh perintah berikut mendapatkan ID yang AMI digunakan untuk meluncurkan instance dan menyimpannya di $TOKEN dibuat dalam contoh sebelumnya.

contoh menggunakan kembali token
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id

IMDSv1pada perangkat Keluarga Salju

IMDSv1menggunakan model permintaan-respons. Untuk meminta metadata instance, Anda mengirim GET permintaan ke layanan metadata instance.

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/

Metadata instans Anda tersedia dari instans yang sedang berjalan, jadi Anda tidak perlu menggunakan EC2 konsol Amazon atau AWS CLI untuk mengaksesnya. Hal ini berguna saat Anda menulis skrip yang akan dijalankan dari instans Anda. Misalnya, Anda dapat mengakses alamat IP lokal instans Anda dari metadata instans untuk mengelola koneksi ke aplikasi eksternal. Metadata instans dibagi menjadi beberapa kategori. Untuk deskripsi setiap kategori metadata instance, lihat Metadata Instans yang Didukung dan Data Pengguna dalam panduan ini.

Untuk melihat semua kategori metadata instance dari dalam instance yang sedang berjalan, gunakan yang berikut ini: IPv4 URI

http://169.254.169.254/latest/meta-data/

Alamat IP adalah alamat tautan lokal dan hanya valid dari instans. Untuk informasi selengkapnya, lihat Alamat tautan-lokal di Wikipedia.

Semua metadata instance dikembalikan sebagai teks (tipe HTTP text/plain konten).

Permintaan untuk sumber daya metadata tertentu mengembalikan nilai yang sesuai, atau kode HTTP kesalahan 404 - Tidak Ditemukan, jika sumber daya tidak tersedia.

Permintaan untuk sumber daya metadata umum (ketika URI berakhir dengan / karakter) mengembalikan daftar sumber daya yang tersedia, atau kode HTTP kesalahan 404 - Tidak Ditemukan jika tidak ada sumber daya tersebut. Item daftar berada pada baris terpisah, diakhiri dengan umpan baris (kode ASCII karakter 10).

Untuk permintaan yang dibuat menggunakanIMDSv1, kode HTTP kesalahan berikut dapat dikembalikan:

  • 400 - Parameter Hilang atau Tidak Valid - PUT Permintaan tidak valid.

  • 401 - Tidak Sah - GET Permintaan menggunakan token yang tidak valid. Tindakan yang disarankan adalah membuat token baru.

  • 403 - Dilarang - Permintaan tidak diizinkan atau layanan metadata instans dimatikan.