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

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

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

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

需要使用 IMDSv2

您可以使用下列方法要求在執行個體上使用 IMDSv2。

將 IMDSv2 設定為帳戶的預設值

您可以在每個執行個體的帳戶層級設定預設執行個體中繼資料版本 AWS 區域。啟動執行個體時,執行個體中繼資料版本會自動設定為帳戶層級值。

如果您從未變更帳戶層級預設值,則表示沒有偏好設定。

您可以將執行個體中繼資料版本的帳戶預設值設定為 IMDSv2,以便帳戶中的所有新執行個體都需要使用 IMDSv2 啟動 (換句話說,IMDSv1 會停用)。使用此帳戶的預設值,當您啟動執行個體時,執行個體的預設值如下:

  • 主控台:中繼資料版本僅設為 V2 (需要 Token),而中繼資料回應躍點限制設定為 2

  • AWS CLI: HttpTokens 設定為requiredHttpPutResponseHopLimit設定為2

注意

中繼資料版本的帳戶預設值設定為僅限 V2 (需要 Token) 之前,請確定沒有執行個體進行 IMDSv1 呼叫。此MetadataNoToken CloudWatch 量度會追蹤 IMDSv1 呼叫。當MetadataNoToken記錄為零 IMDSv1 用量時,您的執行個體就可以完全轉換為使用 IMDSv2。

啟動時,您可以變更執行個體組態中的值。如需詳細資訊,請參閱 設定執行個體元資料版本

Console
若要將 IMDSv2 設定為指定區域帳戶的預設值
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。

  3. 在導覽窗格中,選擇 EC2 Dashboard (EC2 儀表板)

  4. 帳户屬性下,選擇資料保護和安全性

  5. 在「IMDS 預設值」 旁邊,選擇「管理」。

  6. 在 [管理 IMDS 預設值] 頁面上,執行下列動作:

    1. 針對執行個體中繼資料服務,選擇 [

    2. 針對 Metadata version (中繼資料版本),選擇 V2 only (token required) (僅限 V2 (需要權杖))。

    3. 對於中繼資料回應躍點限制,如果執行個體將託管容器,請指定 2。否則,請選擇無偏好設定如果未指定偏好設定,則在啟動時,如果 AMI 需要 IMDSv2,則預設值為 2;否則預設值為 1。

    4. 選擇更新

AWS CLI
若要將 IMDSv2 設定為指定區域帳戶的預設值

使用指modify-instance-metadata-defaults令並指定要在其中修改 IMDS 帳戶層級設定的區域。2如果您的執行個體將託管容器,則 --http-put-response-hop-limit「包含--http-tokens」設定為required和設定為。否則,請指定-1以指示沒有偏好。如果指定 -1 (未指定偏好設定),則在啟動時,2如果 AMI 需要 IMDSv2,則預設值為。1

aws ec2 modify-instance-metadata-defaults \ --region us-east-1 \ --http-tokens required \ --http-put-response-hop-limit 2

預期的輸出結果

{ "Return": true }
若要檢視指定區域的執行個體中繼資料選項的預設帳戶設定

使用指get-instance-metadata-defaults令並指定「區域」。

aws ec2 get-instance-metadata-defaults --region us-east-1

範例輸出

{ "AccountLevel": { "HttpTokens": "required", "HttpPutResponseHopLimit": 2 } }

啟動時設定執行個體

啟動執行個體時,您可以設定下列欄位,將執行個體設定為需要使用 IMDSv2:

  • Amazon EC2 主控台:將 Metadata version (中繼資料版本) 設為 V2 only (token required) (僅 V2 (需要權杖))。

  • AWS CLI:將 HttpTokens 設為 required

當您指定需要 IMDSv2 時,也必須透過將可存取中繼資料設定為已啟用 (主控台) 或將 HttpEndpoint 設為 enabled (AWS CLI) 來啟用執行個體中繼資料服務 (IMDS) 端點。

New console
要求在新執行個體上使用 IMDSv2
  • 在 Amazon EC2 主控台中啟動新執行個體時,展開 Advanced details (進階詳細資訊),並執行下列動作:

    • 針對 Metadata accessible (可存取中繼資料),選擇 Enabled (已啟用)。

    • 針對 Metadata version (中繼資料版本),選擇 V2 only (token required) (僅限 V2 (需要權杖))。

    如需詳細資訊,請參閱 進階詳細資訊

Old console
要求在新執行個體上使用 IMDSv2
  • 在 Amazon EC2 主控台中啟動新執行個體時,請在 Configure Instance Details (設定執行個體詳細資訊) 頁面上選取下列選項:

    • Advanced Details (進階詳細資訊) 下,針對 (可存取中繼資料),選取 Enabled (已啟用)

    • 針對 Metadata version (中繼資料版本),請選取 V2 (token required) (V2 (需要字符))

如需詳細資訊,請參閱 步驟 3:設定執行個體詳細資訊

AWS CLI
要求在新執行個體上使用 IMDSv2

下列 run-instances 範例會啟動 c6i.large 設定為 --metadata-optionsHttpTokens=required 執行個體。當您為 HttpTokens 指定值時,您也必須將 HttpEndpoint 設定為 enabled。由於中繼資料擷取請求的安全權杖標頭設定為 required,因此在要求執行個體中繼資料時需要執行個體使用 IMDSv2。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required"
PowerShell
要求在新執行個體上使用 IMDSv2

下列 New-EC2Instance Cmdlet 範例會啟動 MetadataOptions_HttpEndpoint 設為 enabled 而參數 MetadataOptions_HttpTokens 設為 requiredc6i.large 執行個體。當您為 HttpTokens 指定值時,您也必須將 HttpEndpoint 設定為 enabled。由於中繼資料擷取請求的安全權杖標頭設定為 required,因此在要求執行個體中繼資料時需要執行個體使用 IMDSv2。

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpTokens required
AWS CloudFormation

若要使用指定例證的詮釋資料選項 AWS CloudFormation,請參閱《使用指南》中AWS CloudFormation 的AWS::EC2::LaunchTemplate MetadataOptions性質。

設定 AMI

註冊新 AMI 或修改現有 AMI 時,可以將 imds-support 參數設定為 v2.0。從此 AMI 啟動的執行個體會將 Metadata version (中繼資料版本) 設定為 V2 only (token required) (僅 V2 (需要權杖)) (主控台) 或將 HttpTokens 設為 required (AWS CLI)。透過這些設定,執行個體要求在請求執行個體中繼資料時使用 IMDSv2。

請注意,當您將 imds-support 設為 v2.0 時,從這個 AMI 啟動的執行個體也將有 Metadata response hop limit (中繼資料回應跳轉限制) (主控台) 或將 http-put-response-hop-limit (AWS CLI) 設為 2

重要

除非 AMI 軟體支援 IMDSv2,否則請勿使用此參數。將值設為 v2.0 後,將無法復原。「重設」AMI 的唯一方法是從基礎快照中建立一個新的 AMI。

設定適用於 IMDSv2 的新 AMI

使用下列其中一種方法來為 IMDSv2 設定新的 AMI。

AWS CLI

以下 register-image 範例使用指定的 EBS 根磁碟區快照作為裝置 /dev/xvda 來註冊 AMI。為 imds-support 參數指定 v2.0,以便從此 AMI 啟動的執行個體在請求執行個體中繼資料時要求使用 IMDSv2。

aws ec2 register-image \ --name my-image \ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \ --architecture x86_64 \ --imds-support v2.0
PowerShell

以下 Register-EC2Image Cmdlet 範例使用指定的 EBS 根磁碟區快照做為裝置 /dev/xvda 來註冊 AMI。為 ImdsSupport 參數指定 v2.0,以便從此 AMI 啟動的執行個體在請求執行個體中繼資料時要求使用 IMDSv2。

Import-Module AWS.Tools.EC2 # Required for Amazon.EC2.Model object creation. Register-EC2Image ` -Name 'my-image' ` -RootDeviceName /dev/xvda ` -BlockDeviceMapping ( New-Object ` -TypeName Amazon.EC2.Model.BlockDeviceMapping ` -Property @{ DeviceName = '/dev/xvda'; EBS = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ SnapshotId = 'snap-0123456789example; VolumeType = 'gp3' } ) } ) ` -Architecture X86_64 ` -ImdsSupport v2.0
設定適用於 IMDSv2 的現有 AMI

使用下列其中一種方法來為 IMDSv2 設定現有的 AMI。

AWS CLI

下列modify-image-attribute範例只會修改 IMDSv2 的現有 AMI。為 imds-support 參數指定 v2.0,以便從此 AMI 啟動的執行個體在請求執行個體中繼資料時要求使用 IMDSv2。

aws ec2 modify-image-attribute \ --image-id ami-0123456789example \ --imds-support v2.0
PowerShell

下列編輯 EC2 ImageAttribute 指令程式範例只會修改 IMDSv2 的現有 AMI。為 imds-support 參數指定 v2.0,以便從此 AMI 啟動的執行個體在請求執行個體中繼資料時要求使用 IMDSv2。

Edit-EC2ImageAttribute ` -ImageId ami-0abcdef1234567890 ` -ImdsSupport 'v2.0'

使用 IAM 政策

您也可以建立 IAM 政策,以防止使用者啟動新執行個體,除非其在新執行個體上需要 IMDSv2。

透過使用 IAM 政策,在所有新執行個體上強制使用 IMDSv2

若要在請求執行個體中繼資料時,確保使用者僅能啟動需要使用 IMDSv2 的執行個體,您可以指定必須符合需要 IMDSv2 的條件,才能啟動執行個體。如需 IAM 政策範例,請參閱使用執行個體中繼資料

設定 IPv4 和 IPv6 端點

依預設,停用 IPv6 端點。即使您將執行個體啟動到僅限 IPv6 的子網,也是如此。您可選擇在執行個體啟動時啟用 IPv6 端點。

IMDS 的 IPv6 端點只能在 建置在 Nitro 系統上的執行個體 上存取。

使用下列其中一種方法來啟動已為 IMDS 啟用 IPv6 端點的執行個體。

New console
在啟動時啟用 IMDS IPv6 端點
  • 在 Amazon EC2 主控台中啟動執行個體,並在 Advanced details (進階詳細資訊) 下指定以下內容:

    • 對於中繼資料傳輸,請選擇已啟用

如需詳細資訊,請參閱 進階詳細資訊

AWS CLI

以下 run-instances 範例會啟動已啟用執行個體中繼資料服務 IPv6 端點的 c6i.large 執行個體。若要啟用 IPv6 端點,對於 --metadata-options 參數,請指定 HttpProtocolIpv6=enabled。當您為 HttpProtocolIpv6 指定值時,您也必須將 HttpEndpoint 設定為 enabled

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
PowerShell

以下 New-EC2Instance Cmdlet 範例會啟動已為 IMDS 啟用 IPv6 端點的 c6i.large 執行個體。若要啟用 IPv6 端點,請將 MetadataOptions_HttpProtocolIpv6 指定為 enabled。當您為 MetadataOptions_HttpProtocolIpv6 指定值時,您也必須將 MetadataOptions_HttpEndpoint 設定為 enabled

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpProtocolIpv6 enabled

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

可以在啟動執行個體時停用 IMDS 來關閉對執行個體中繼資料的存取。稍後透過重新啟用 IMDS 可以開啟存取。如需詳細資訊,請參閱 開啟對執行個體中繼資料的存取

重要

可以選擇在啟動時或啟動後停用 IMDS。如果在啟動時停用 IMDS,下列項目可能無法運作:

  • 您可能沒有執行個體的 SSH 存取權。public-keys/0/openssh-key 是執行個體的公有 SSH 金鑰,它將不可存取,因為通常會從 EC2 執行個體中繼資料中提供並存取該金鑰。

  • EC2 使用者資料將無法使用,且不會在執行個體啟動時執行。EC2 使用者資料託管於 IMDS。如果停用 IMDS,可以有效地關閉對使用者資料的存取。

若要存取此功能,可以在啟動後重新啟用 IMDS。

New console
啟動時關閉對執行個體中繼資料的存取
  • 在 Amazon EC2 主控台中啟動執行個體,並在 Advanced details (進階詳細資訊) 下指定以下內容:

    • 針對 Metadata accessible (可存取中繼資料),選擇 Disabled (已停用)。

如需詳細資訊,請參閱 進階詳細資訊

Old console
啟動時關閉對執行個體中繼資料的存取
  • 在 Amazon EC2 主控台中啟動執行個體時,請在 Configure Instance Details (設定執行個體詳細資訊) 頁面上選取下列選項:

    • Advanced Details (進階詳細資訊) 下,針對 (可存取中繼資料),選取 Disabled (已停用)

如需詳細資訊,請參閱 步驟 3:設定執行個體詳細資訊

AWS CLI
啟動時關閉對執行個體中繼資料的存取

--metadata-options 設為 HttpEndpoint=disabled 來啟動執行個體。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=disabled"
PowerShell
啟動時關閉對執行個體中繼資料的存取

以下 New-EC2Instance Cmdlet 範例會啟動 MetadataOptions_HttpEndpoint 設為 disabled 的執行個體。

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint disabled
AWS CloudFormation

若要使用指定例證的詮釋資料選項 AWS CloudFormation,請參閱《使用指南》中AWS CloudFormation 的AWS::EC2::LaunchTemplate MetadataOptions性質。