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

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

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

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

需要使用 IMDSv2

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

設IMDSv2為帳戶的預設值

您可以在帳戶層級為每個執行個體中繼資料服務 (IMDS) 設定預設版本 AWS 區域。 這表示當您啟動執行個體時,執行個體中繼資料版本會自動設定為帳戶層級的預設值。不過,您可以在啟動時或啟動後手動覆寫值。如需帳戶層級設定和手動覆寫如何影響執行個體的詳細資訊,請參閱。執行個體中繼資料選項的優先順序

注意

設定帳戶層級預設值並不會重設現有執行個體。例如,如果您將帳戶層級預設值設定為IMDSv2,則設定為的任何現有執行個體IMDSv1都不會受到影響。如果要變更現有例證上的值,您必須手動變更例證本身的值。

您可以將執行個體中繼資料版本的帳戶預設值設定為,以IMDSv2便帳戶中的所有執行個體都以IMDSv2必要的方式啟動,而且IMDSv1會停用。使用此帳戶的預設值,當您啟動執行個體時,執行個體的預設值如下:

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

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

注意

將帳戶預設值設定為之前IMDSv2,請確定您的執行個體不依賴IMDSv1。如需詳細資訊,請參閱推薦的需求路徑 IMDSv2

Console
若要設定IMDSv2為指定區域帳戶的預設值
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

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

  3. 在導覽窗格中,選擇 [EC2儀表板]。

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

  5. 選擇IMDS預設值旁邊的 [管理]。

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

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

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

    3. 對於中繼資料回應躍點限制,如果執行個體將託管容器,請指定 2。否則,請選擇無偏好設定。如果未指定偏好設定,則在啟動時,如果AMI需要,值預設為 2IMDSv2;否則預設值為 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為所有區域帳戶的預設值

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

echo -e "Region \t Modified" ; \ echo -e "-------------- \t ---------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 modify-instance-metadata-defaults \ --region $region \ --http-tokens required \ --http-put-response-hop-limit 2 \ --output text) echo -e "$region \t $output" ); done

預期的輸出結果

Region Modified -------------- --------- ap-south-1 True eu-north-1 True eu-west-3 True ...
若要檢視所有區域的執行個體中繼資料選項的預設帳戶設定

使用指get-instance-metadata-defaults令。

echo -e "Region \t Level Hops HttpTokens" ; \ echo -e "-------------- \t ------------ ---- ----------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 get-instance-metadata-defaults \ --region $region \ --output text) echo -e "$region \t $output" ); done

預期的輸出結果

Region Level Hops HttpTokens -------------- ------------ ---- ---------- ap-south-1 ACCOUNTLEVEL 2 required eu-north-1 ACCOUNTLEVEL 2 required eu-west-3 ACCOUNTLEVEL 2 required ...
PowerShell
若要設定IMDSv2為指定區域帳戶的預設值

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

Edit-EC2InstanceMetadataDefault ` -Region us-east-1 ` -HttpToken required ` -HttpPutResponseHopLimit 2

預期的輸出結果

True
若要檢視指定區域的執行個體中繼資料選項的預設帳戶設定

使用指Get-EC2InstanceMetadataDefault令並指定「區域」。

Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List

範例輸出

HttpEndpoint : HttpPutResponseHopLimit : 2 HttpTokens : required InstanceMetadataTags :
若要設定IMDSv2為所有區域帳戶的預設值

使用指Edit-EC2InstanceMetadataDefault令程式來修改所有區域的IMDS帳戶層級設定。2如果您的執行個體將託管容器,則 -HttpPutResponseHopLimit「包含-HttpToken」設定為required和設定為。否則,請指定-1以指示沒有偏好。如果 -1 (未指定偏好設定),則在啟動時,2如果AMI需要,值預設為IMDSv2;否則預設為1

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ Modified = (Edit-EC2InstanceMetadataDefault ` -Region $_ ` -HttpToken required ` -HttpPutResponseHopLimit 2) } } | ` Format-Table Region, Modified -AutoSize

預期的輸出結果

Region Modified ------ -------- ap-south-1 True eu-north-1 True eu-west-3 True ...
若要檢視所有區域的執行個體中繼資料選項的預設帳戶設定

使用指Get-EC2InstanceMetadataDefault令程式。

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit HttpTokens = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens } } | ` Format-Table -AutoSize

範例輸出

Region HttpPutResponseHopLimit HttpTokens ------ ----------------------- ---------- ap-south-1 2 required eu-north-1 2 required eu-west-3 2 required ...

啟動時設定執行個體

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

  • Amazon EC2 主控台:將中繼資料版本設定為僅 V2(需要令牌)

  • AWS CLI:設定HttpTokensrequired

當您指定IMDSv2必要項目時,也必須將「中繼資料」設定為「」(主控台) 或 HttpEndpoint enabled (IMDS AWS CLI).

在容器環境中,如果IMDSv2需要,建議將躍點限制設定為2。如需詳細資訊,請參閱執行個體元資料存取

Console
若要求在新執行個體IMDSv2上使用
  • 在 Amazon EC2 主控台中啟動新執行個體時,展開進階詳細資料,然後執行以下操作:

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

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

    • (容器環境) 對於中繼資料回應躍點限制,請選擇 2

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

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

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

在容器環境中,如果IMDSv2需要,我們建議將躍點限制設定為2HttpPutResponseHopLimit=2

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

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

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

若要使用指定執行個體的中繼資料選項 AWS CloudFormation,請參閱AWSEC2::: LaunchTemplate MetadataOptions 屬性 AWS CloudFormation 用戶指南

配置 AMI

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

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

重要

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

若要設定新AMI的 IMDSv2

使用下列其中一種方法來配置新AMI的IMDSv2。

AWS CLI

下列暫存器映像範例會AMI使用EBS根磁碟區的指定快照來註冊為裝置。/dev/xvdav2.0imds-support參數指定,以便從此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-EC2ImageCmdlet 範例會AMI使用指定的EBS根磁碟區快照註冊為裝置/dev/xvda。請v2.0ImdsSupport參數指定,以便從此AMI啟動的執行個體在要求執行個體中繼資料時需要使用該IMDSv2執行個體。

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
若要設定現有AMI的 IMDSv2

使用下列其中一種方法來配置現有AMI的IMDSv2。

AWS CLI

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

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

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

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

使用IAM策略

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

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

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

啟用IMDSIPv4和IPv6端點

執行個體上IMDS有兩個端點:IPv4(169.254.169.254) 和 IPv6 ([fd00:ec2::254])。當您啟用時IMDS,IPv4端點會自動啟用。即使您將執行個體啟動至IPv6唯一子網路,IPv6端點仍會保持停用狀態。要啟用IPv6端點,您需要明確執行此操作。當您啟用端點時,IPv6端點會IPv4保持啟用狀態。

您可以在執行個體啟動時或之後啟用IPv6端點。

啟用IPv6端點的需求

使用下列任一方法來啟動IMDSIPv6端點已啟用的執行個體。

Console
若要在執行個體啟動時啟用IMDSIPv6端點
  • 在 Amazon EC2 主控台啟動執行個體,並在進階詳細資料下指定下列內容:

    • 針對中繼資料IPv6端點,選擇已啟用

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

AWS CLI
若要在執行個體啟動時啟用IMDSIPv6端點

下列執行執行個體範例會啟動一個已啟用IPv6端點的c6i.large執行個體。IMDS若要啟用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
若要在執行個體啟動時啟用IMDSIPv6端點

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

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

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

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

重要

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

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

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

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

Console
啟動時關閉對執行個體中繼資料的存取
  • 在 Amazon EC2 主控台啟動執行個體,並在進階詳細資料下指定下列內容:

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

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

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指令程式範例會啟動MetadataOptions_HttpEndpoint設定為disabled的執行個體。

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

若要使用指定執行個體的中繼資料選項 AWS CloudFormation,請參閱AWSEC2::: LaunchTemplate MetadataOptions 屬性 AWS CloudFormation 用戶指南