設定執行個體中繼資料選項 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定執行個體中繼資料選項

執行個體中繼資料服務 (IMDS) 會在每個 EC2 執行個體本機執行。執行個體中繼資料選項是指控制 EC2 執行個體上 IMDS 可存取性和行為的一組組態。

您可以為每個執行個體設定下列執行個體中繼資料選項:

執行個體中繼資料服務 (IMDS):| enabled disabled

您可以在執行個體上啟用或停用 IMDS。停用時,您或任何程式碼都無法存取執行個體上的執行個體中繼資料。

IMDS 在執行個體上有兩個端點:IPv4 (169.254.169.254) 和 IPv6 ([fd00:ec2::254])。當您啟用 IMDS 時,會自動啟用 IPv4 端點。如果要啟用 IPv6 端點,則需要明確啟用。

IPv6 端點:| enabled disabled

您可以在執行個體上明確啟用 IPv6 IMDS 端點。啟用 IPv6 端點時,IPv4 端點會保持啟用狀態。IPv6 端點僅在 AWS Nitro 系統上建置的執行個體以及支援 IPv6 的子網路 (僅限雙堆疊或 IPv6) 中的執行個體上受支援

中繼資料版本:IMDSv1 or IMDSv2 (token optional)| IMDSv2 only (token required)

要求執行個體中繼資料時,IMDSv2 呼叫需要使用權杖。IMDSv1 呼叫不需要使用權杖。您可以將執行個體設定為允許 IMDSv1 或 IMDSv2 呼叫 (其中記號是選用的),或僅允許 IMDSv2 呼叫 (其中需要權杖)。

中繼資料回應躍點限制164

躍點限制是允許 PUT 回應進行的網路躍點數目。您可以將躍點限制設定為最小值1和最大值64。在容器環境中,建議將躍點限制設定為2。如需詳細資訊,請參閱 考量事項

存取執行個體中繼資料中的標籤enabled| disabled

您可以從執行個體的中繼資料啟用或停用執行個體標籤的存取權。如需詳細資訊,請參閱 使用執行個體中繼資料中的執行個體標籤

執行個體中繼資料選項的設定

執行個體中繼資料選項可以在不同層級設定,如下所示:

  • 帳戶 — 您可以在帳戶層級為每個執行個體中繼資料選項設定預設值 AWS 區域。啟動執行個體時,執行個體中繼資料選項會自動設定為帳戶層級值。您可以在啟動時變更這些值。帳戶層級的預設值不會影響現有例項。

  • AMI — 您可以在註冊或修改 AMI v2.0 時將imds-support參數設置為。使用此 AMI 啟動執行個體時,執行個體中繼資料版本會自動設定為 IMDSv2,且躍點限制設定為 2。

  • 執行個體 — 您可以在啟動時變更執行個體的所有執行個體中繼資料選項,覆寫預設設定。您也可以在執行中或已停止的執行個體上啟動後,變更執行個體中繼資料選項。請注意,變更可能受到 IAM 或 SCP 政策的限制。

如需詳細資訊,請參閱 設定新執行個體的執行個體中繼資料選項修改現有執行個體的執行個體中繼資料選項

執行個體中繼資料選項的優先順序

每個執行個體中繼資料選項的值都會在執行個體啟動時決定,並遵循階層優先順序。最上方優先順序最高的階層如下所示:

  • 優先順序 1:啟動時的執行個體組態 — 您可以在啟動範本或執行個體組態中指定值。此處指定的任何值都會覆寫在帳戶層級或 AMI 中指定的值。

  • 優先順序 2:帳戶設定 — 如果在執行個體啟動時未指定值,則由帳戶層級設定決定 (針對每個 AWS 區域設定)。帳戶層級設定可以包含每個中繼資料選項的值,或完全不指定任何偏好設定。

  • 優先順序 3:AMI 組態 — 如果未在執行個體啟動或帳戶層級指定值,則由 AMI 組態決定。這僅會套用到 HttpTokensHttpPutResponseHopLimit

每個中繼資料選項都會分別評估。執行個體可以混合使用直接執行個體設定、帳戶層級預設值,以及 AMI 的組態設定。

您可以在執行中或停止的執行個體上啟動後變更任何中繼資料選項的值,除非變更受 IAM 或 SCP 政策的限制。

決定中繼資料選項的值-範例 1

在此範例中,EC2 執行個體會啟動至帳戶層級設定HttpPutResponseHopLimit1的區域。指定的 AMI 已ImdsSupport設定為v2.0。啟動時不會直接在執行個體上指定中繼資料選項。執行個體會使用下列中繼資料選項啟動:

"MetadataOptions": { ... "HttpTokens": "required", "HttpPutResponseHopLimit": 1, ...

這些值的確定方式如下:

  • 啟動時未指定中繼資料選項:在執行個體啟動期間,執行個體啟動參數或啟動範本中未提供中繼資料選項的特定值。

  • 科目設定採用下一個優先順序:如果在啟動時沒有指定的特定值,則會優先考慮「區域」內帳戶層次的設定。這表示會套用在帳戶層級設定的預設值。在此情況下,設定HttpPutResponseHopLimit1

  • AMI 設定最後優先順序:如果在啟動時或帳戶層級 HttpTokens (執行個體中繼資料版本) 沒有指定的特定值,則會套用 AMI 設定。在這種情況下,AMI 設置ImdsSupport: v2.0確定HttpTokens該設置為required。請注意,雖然 AMI 設定ImdsSupport: v2.0是設定的HttpPutResponseHopLimit: 2,但帳戶層級設定已覆寫HttpPutResponseHopLimit: 1,其優先順序較高。

決定中繼資料選項的值-範例 2

在此範例中,EC2 執行個體的啟動設定與上一個範例 1 相同,但在啟動時將HttpTokens設定為optional直接在執行個體上。執行個體會使用下列中繼資料選項啟動:

"MetadataOptions": { ... "HttpTokens": "optional", "HttpPutResponseHopLimit": 1, ...

的值HttpPutResponseHopLimit是以與範例 1 中相同的方式來決定。不過,的值決定如下:啟動時在執行個體上設定的中繼資料選項優先。HttpTokens即使 AMI 設定為 ImdsSupport: v2.0 (換句話說,HttpTokens設定為required),但在啟動時 (設定為optional) 在執行個體上指HttpTokens定的值優先。

設定執行個體元資料版本

啟動執行個體時,執行個體中繼資料版本的值為IMDSv1 or IMDSv2 (token optional)IMDSv2 only (token required)

執行個體啟動時,您可以手動指定中繼資料版本的值,或使用預設值。如果您手動指定值,它會取代任何預設值。如果您選擇不手動指定值,它將由預設設定組合決定,如下表所述。

此表格顯示啟動時執行處理的中繼資料版本 (由欄 4 中的「結果執行處理組態」指示) 如何由不同組態層級的設定決定。優先順序是從左到右,其中第一欄的優先順序最高,如下所示:

  • 欄 1:啟動參數 — 代表您在啟動時手動指定之執行處理的設定。

  • 欄 2:帳戶層級預設值 — 代表帳戶的設定。

  • 第 3 欄:AMI 預設值 — 代表 AMI 上的設定。

啟動參數 帳戶層級預設 AMI 預設值 產生的實例配置
僅 V2(需要令牌) 無偏好 僅限 V2 僅限 V2
僅 V2(需要令牌) 僅限 V2 僅限 V2 僅限 V2
僅 V2(需要令牌) V1 或 V2 僅限 V2 僅限 V2
V1 或 V2(令牌可選) 無偏好 僅限 V2 V1 或 V2
V1 或 V2(令牌可選) 僅限 V2 僅限 V2 V1 或 V2
V1 或 V2(令牌可選) V1 或 V2 僅限 V2 V1 或 V2
未設定 無偏好 僅限 V2 僅限 V2
未設定 僅限 V2 僅限 V2 僅限 V2
未設定 V1 或第 2 版 僅限 V2 V1 或第 2 版
僅 V2(需要令牌) 無偏好 null 僅限 V2
僅 V2(需要令牌) 僅限 V2 null 僅限 V2
僅 V2(需要令牌) V1 或第 2 版 null 僅限 V2
V1 或 V2(令牌可選) 無偏好 null V1 或第 2 版
V1 或 V2(令牌可選) 僅限 V2 null V1 或第 2 版
V1 或 V2(令牌可選) V1 或第 2 版 null V1 或第 2 版
未設定 無偏好 null V1 或第 2 版
未設定 僅限 V2 null 僅限 V2
未設定 V1 或第 2 版 null V1 或第 2 版

使用 IAM 條件金鑰限制執行個體中繼資料選項

您可以在 IAM 政策或 SCP 中使用 IAM 條件金鑰,如下所示:

  • 只有在執行個體設定為需要使用 IMDSv2 時才允許啟動該執行個體

  • 限制允許的轉跳數目

  • 關閉對執行個體中繼資料的存取

注意

如果您的 PowerShell 版本早於 4.0,您必須更新至視窗管理架構 4.0,才能要求使用 IMDSv2。

注意

您應該謹慎繼續執行和仔細進行測試,然後再進行任何變更。請記得下列事項:

  • 如果您強制使用 IMDSv2,使用 IMDSv1 來存取執行個體中繼資料的應用程式或代理程式便會中斷。

  • 如果您關閉對執行個體中繼資料的所有存取,則需要存取執行個體中繼資料才能正常運作的應用程式或代理程式便會中斷。

  • 對於 IMDSv2,在檢索字符時必須使用 /latest/api/token