本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定執行個體中繼資料服務選項
執行個體中繼資料服務 (IMDS) 會在每個 EC2 執行個體本機上執行。執行個體中繼資料選項是指一組能控制 IMDS 在 EC2 執行個體上的可存取性和行為的祖態。
您可以在每個執行個體上設定下列執行個體中繼資料選項:
- 執行個體中繼資料服務 (IMDS):
enabled
|disabled
-
您可以在執行個體上啟用或停用 IMDS。停用時,您或任何程式碼都無法在執行個體上存取執行個體中繼資料。
IMDS 在執行個體上有兩個端點:IPv4 (
169.254.169.254
) 和 IPv6 ([fd00:ec2::254]
)。當您啟用 IMDS 時,IPv4 端點會自動啟用。如果您想要啟用 IPv6 端點,則需要明確啟用。 - IMDS IPv6 端點:
enabled
|disabled
-
您可以在執行個體上明確啟用 IPv6 IMDS 端點。啟用 IPv6 端點時,IPv4 端點會保持啟用狀態。IPv6 端點僅在 IPv6 支援的子網路 (僅支援雙重堆疊或 IPv6) 中的 Nitro 型執行個體受到支援。
- 中繼資料版本:
IMDSv1 or IMDSv2 (token optional)
|IMDSv2 only (token required)
-
要求執行個體中繼資料時,IMDSv2 呼叫需要字符。IMDSv1 呼叫不需要字符。您可以設定執行個體以允許 IMDSv1 或 IMDSv2 呼叫 (其中字符為選用項目),或者僅允許 IMDSv2 呼叫 (其中字符為必要項目)。
- 中繼資料回應跳轉限制:
1
–64
-
跳轉限制是允許 PUT 回應進行的網路跳轉數量。您可以將跳轉限制設定為最小
1
及最大64
。在容器環境中,建議將跳轉限制設定為2
。如需詳細資訊,請參閱執行個體中繼資料存取考量。 - 存取執行個體中繼資料中的標籤:
enabled
|disabled
-
您可以從執行個體中繼資料啟用或停用執行個體標籤的存取權。如需詳細資訊,請參閱使用執行個體中繼資料檢視 EC2 執行個體的標籤。
設定執行個體中繼資料選項的位置
執行個體中繼資料選項可以在不同層級設定,如下所示:
-
帳戶:您可以在帳戶層級為每個 AWS 區域設定執行個體中繼資料選項的預設值。啟動執行個體時,執行個體中繼資料選項會自動設定為帳戶層級值。您可以在啟動時變更這些值。帳戶層級預設值不會影響現有的執行個體。
-
AMI:註冊或修改 AMI 時,可以將
imds-support
參數設定為v2.0
。使用此 AMI 啟動執行個體時,執行個體中繼資料版本會自動設定為 IMDSv2 且跳轉限制設定為 2。 -
執行個體:您可以在啟動時變更所有在執行個體上的執行個體中繼資料選項,並覆寫預設設定。您也可以在執行中或已停止的執行個體啟動後,變更執行個體中繼資料選項。請注意,IAM 或 SCP 政策可能會限制變更。
如需詳細資訊,請參閱 設定新執行個體的執行個體中繼資料選項 和 修改現有執行個體的執行個體中繼資料選項。
執行個體中繼資料選項的優先順序
每個執行個體中繼資料選項的值都是在執行個體啟動時,依照階層優先順序來決定。階層結構如下,從最上方的最高優先權開始:
-
優先順序 1:啟動時的執行個體組態:值可以在啟動範本或執行個體組態中指定。此處指定的任何值都會覆寫在帳戶層級或 AMI 中指定的值。
-
優先順序 2:帳戶設定 – 如果在執行個體啟動時未指定值,則其取決於帳戶層級設定 (針對每個設定 AWS 區域)。帳戶層級設定會包括每個中繼資料選項的值,或完全不表示任何偏好設定。
-
優先順序 3:AMI 組態:如果未在執行個體啟動或帳戶層級指定值,則由 AMI 組態決定。這僅會套用到
HttpTokens
和HttpPutResponseHopLimit
。
每個中繼資料選項都會分別進行評估。執行個體可以混合使用直接執行個體組態、帳戶層級預設值,以及來自 AMI 的組態加以設定。
您可以在執行中或已停止的執行個體啟動後,變更任何中繼資料選項的值,除非變更內容受限於 IAM 或 SCP 政策。
決定中繼資料選項的值:範例 1
在此範例中,EC2 執行個體會在將 HttpPutResponseHopLimit
以帳戶層級設定為 1
的區域中啟動。指定的 AMI 已將 ImdsSupport
設定為 v2.0
。啟動時,不會直接在執行個體上指定中繼資料選項。執行個體會使用下列中繼資料選項啟動:
"MetadataOptions": {
...
"HttpTokens": "required",
"HttpPutResponseHopLimit": 1,
...
這些值的判斷方式如下所示:
-
啟動時未指定中繼資料選項:在執行個體啟動期間,未在執行個體啟動參數或啟動範本中提供中繼資料選項的特定值。
-
帳戶設定的優先順序為次要:如果啟動時未指定特定值,則以區域內帳戶層級的設定為準。這表示會套用在帳戶層級設定的預設值。在此情況下,已將
HttpPutResponseHopLimit
設定為1
。 -
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
),啟動時在執行個體上指定的值 (將 HttpTokens
設定為 optional
) 仍為優先。
設定執行個體中繼資料版本
在執行個體啟動時,執行個體中繼資料版本的值為 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 或 V2 | 僅限 V2 | V1 或 V2 |
僅限 V2 (需要字符) | 無偏好設定 | null | 僅限 V2 |
僅限 V2 (需要字符) | 僅限 V2 | null | 僅限 V2 |
僅限 V2 (需要字符) | V1 或 V2 | null | 僅限 V2 |
V1 或 V2 (字符為選用項目) | 無偏好設定 | null | V1 或 V2 |
V1 或 V2 (字符為選用項目) | 僅限 V2 | null | V1 或 V2 |
V1 或 V2 (字符為選用項目) | V1 或 V2 | null | V1 或 V2 |
未設定 | 無偏好設定 | null | V1 或 V2 |
未設定 | 僅限 V2 | null | 僅限 V2 |
未設定 | V1 或 V2 | null | V1 或 V2 |
使用 IAM 條件索引鍵限制執行個體中繼資料選項
您可以在 IAM 政策或 SCP 中使用 IAM 條件索引鍵,如下所示:
-
只有在執行個體設定為需要使用 IMDSv2 時才允許啟動該執行個體
-
限制允許的轉跳數目
-
關閉對執行個體中繼資料的存取
注意
您應該謹慎繼續執行和仔細進行測試,然後再進行任何變更。請記得下列事項:
-
如果您強制使用 IMDSv2,使用 IMDSv1 來存取執行個體中繼資料的應用程式或代理程式便會中斷。
-
如果您關閉對執行個體中繼資料的所有存取,則需要存取執行個體中繼資料才能正常運作的應用程式或代理程式便會中斷。
-
對於 IMDSv2,在檢索字符時必須使用
/latest/api/token
。 -
(僅限 Windows) 如果您的 PowerShell 版本早於 4.0,您必須更新至 Windows Management Framework 4.0
,才能使用 IMDSv2。