

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

# Amazon EC2 的 Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制哪些人員可*進行身分驗證* (登入) 並*獲得授權* (具有許可) 以使用 Amazon EC2 資源。IAM 是您可以免費使用 AWS 服務 的 。

您的安全登入資料會將您識別為 中的 服務， AWS 並授予您存取 AWS 資源的權限，例如 Amazon EC2 資源。您可使用 Amazon EC2 和 IAM 的功能來允許其他使用者、服務和應用程式使用您的 Amazon EC2 資源，但不共用您的安全憑證。您可以使用 IAM 來控制其他使用者如何使用 中的資源 AWS 帳戶，也可以使用安全群組來控制對 Amazon EC2 執行個體的存取。您可選擇授予 Amazon EC2 資源的完全使用或有限制使用的權限。

如果您是開發人員，您可以使用 IAM 角色來管理在 EC2 執行個體上執行的應用程式所需的安全憑證。將 IAM 角色連接至執行個體後，在執行個體上執行的應用程式可以從執行個體中繼資料服務 (IMDS) 擷取登入資料。

如需使用 IAM 保護您的 AWS 資源的最佳實務，請參閱《[IAM 使用者指南》中的 IAM 中的安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。 **

**Topics**
+ [

# Amazon EC2 身分型政策
](iam-policies-for-amazon-ec2.md)
+ [

# 控制 Amazon EC2 API 存取的政策範例
](ExamplePolicies_EC2.md)
+ [

# 控制 Amazon EC2 主控台存取的政策範例
](iam-policies-ec2-console.md)
+ [

# AWS Amazon EC2 的 受管政策
](security-iam-awsmanpol.md)
+ [

# Amazon EC2 的 IAM 的角色
](iam-roles-for-amazon-ec2.md)

# Amazon EC2 身分型政策
<a name="iam-policies-for-amazon-ec2"></a>

依預設，使用者無權建立或修改 Amazon EC2 資源，或使用 Amazon EC2 API、Amazon EC2 主控台或 CLI 執行任務。若要允許使用者建立或修改資源並執行任務，您必須建立授予使用者許可的 IAM 政策，以使用他們需要的特定資源和 API 動作，然後將這些政策連接到需要這些許可的使用者、群組或 IAM 角色。

將政策連接到使用者、使用者群組或角色時，政策會允許或拒絕使用者在特定資源上執行特定任務的許可。如需 IAM 政策的一般詳細資訊，請參閱「IAM 使用者指南」**中 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。如需管理及建立 IAM 政策的詳細資訊，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)。

IAM 政策必須授予或拒絕使用一或多個 Amazon EC2 動作的許可。政策中還必須指定可用於動作的資源，可為所有資源，或在某些案例中為特定的資源。政策也可以包含您套用到資源的條件。

若要開始使用，您可以檢查 Amazon EC2 的 AWS 受管政策是否符合您的需求。否則，您可以建立自己的自訂政策。如需詳細資訊，請參閱[AWS Amazon EC2 的 受管政策](security-iam-awsmanpol.md)。

**Topics**
+ [

## 政策語法
](#policy-syntax)
+ [

## Amazon EC2 動作
](#UsingWithEC2_Actions)
+ [

## Amazon EC2 API 動作支援的資源層級許可
](#ec2-supported-iam-actions-resources)
+ [

## 適用於 Amazon EC2 的 Amazon Resource Name (ARN)
](#EC2_ARN_Format)
+ [

## Amazon EC2 的條件金鑰
](#amazon-ec2-keys)
+ [

## 使用屬性型存取控制存取
](#control-access-with-tags)
+ [

## 向使用者、群組和角色授予許可
](#granting-iam-permissions)
+ [

## 檢查使用者是否擁有必要的許可
](#check-required-permissions)

## 政策語法
<a name="policy-syntax"></a>

IAM 政策為包含一或多個陳述式的 JSON 文件。每個陳述式的結構如下所示。

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

陳述式由各種元素組成：
+ **Effect** (效果)：*效果* 可以是 `Allow` 或 `Deny`。根據預設， 使用者沒有使用資源和 API 動作的許可，因此所有請求均會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。
+ **Action** (動作)：*動作* 是您授予或拒絕許可的特定 API 動作。若要了解指定*動作*，請參閱[Amazon EC2 動作](#UsingWithEC2_Actions)。
+ **Resource** (資源)：受動作影響的資源。有些 Amazon EC2 API 動作可讓您在政策中包含可由動作建立或修改的特定資源。您可以使用 Amazon Resource Name (ARN) 來指定資源，或是使用萬用字元 (\$1) 來指定陳述式套用到所有資源。如需詳細資訊，請參閱[Amazon EC2 API 動作支援的資源層級許可](#ec2-supported-iam-actions-resources)。
+ **Condition** (條件)：條件為選擇性。您可以使用它們來控制何時政策開始生效。如需指定 Amazon EC2 條件的詳細資訊，請參閱 [Amazon EC2 的條件金鑰](#amazon-ec2-keys)。

如需這些欄位的詳細資訊，請參閱「*IAM 使用者指南*」中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。如需 Amazon EC2 的範例 IAM 政策陳述式，請參閱 [控制 Amazon EC2 API 存取的政策範例](ExamplePolicies_EC2.md)。

## Amazon EC2 動作
<a name="UsingWithEC2_Actions"></a>

在 IAM 政策陳述式中，您可以從任何支援 IAM 的服務指定任何 API 動作。針對 Amazon EC2，請在 API 動作名稱使用下列字首：`ec2:`。例如：`ec2:RunInstances` 和 `ec2:CreateImage`。

若要在單一陳述式中指定多個動作，請用逗號分隔，如下所示：

```
"Action": ["ec2:action1", "ec2:action2"]
```

您也可以使用萬用字元指定多個動作。例如，您可以指定名稱開頭有「Describe」文字的所有動作，如下所示：

```
"Action": "ec2:Describe*"
```

**注意**  
目前，Amazon EC2 Describe\$1 API 動作並不支援資源層級許可。如需 Amazon EC2 資源層級許可的相關詳細資訊，請參閱 [Amazon EC2 身分型政策](#iam-policies-for-amazon-ec2)。

若要指定所有的 Amazon EC2 API 動作，請使用 \$1 萬用字元，如下所示：

```
"Action": "ec2:*"
```

若要查看 Amazon EC2 動作的清單，請參閱*服務授權參考*中的 [Amazon EC2 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)。

## Amazon EC2 API 動作支援的資源層級許可
<a name="ec2-supported-iam-actions-resources"></a>

*資源層級許可*能夠讓您指定使用者可執行動作的資源。Amazon EC2 支援部分的資源層級許可。這表示針對特定 Amazon EC2 動作，您可以根據應滿足的條件，或允許使用者使用特定的資源，來控制使用者何時可以使用那些動作。例如，您可以授予使用者啟動執行個體的許可，但僅限特定類型，且僅能藉由特定的 AMI 來達成。

若要在 IAM 政策陳述式中指定資源，請使用它的 Amazon Resource Name (ARN)。如需指定 ARN 值的詳細資訊，請參閱 [適用於 Amazon EC2 的 Amazon Resource Name (ARN)](#EC2_ARN_Format)。如果 API 動作不支援個別 ARN，您必須使用萬用字元 (\$1) 來指定該動作可以影響所有資源。

若要查看識別哪些 Amazon EC2 API 動作支援資源層級許可的表格，以及您可以在政策中使用的 ARN 和條件金鑰，請參閱 [動作、資源與條件金鑰 Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

您可以在用於 Amazon EC2 API 動作的 IAM 政策中，套用以標籤為基礎的資源層級許可。這可讓您更有效地控制使用者可以建立、修改或使用的資源。如需詳細資訊，請參閱[在建立期間授予標籤 Amazon EC2 資源的許可](supported-iam-actions-tagging.md)。

## 適用於 Amazon EC2 的 Amazon Resource Name (ARN)
<a name="EC2_ARN_Format"></a>

每個 IAM 政策陳述式都會套用到您使用其 ARN 指定的資源。

ARN 一般的語法如下所示：

```
arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
```

*服務*  
服務 (例如，`ec2`)。

*region*  
資源的區域 (例如，`us-east-1`)。

*account-id*  
 AWS 帳戶 ID，不含連字號 （例如 `123456789012`)。

*resourceType*  
資源類型 (例如，`instance`)。

*resourcePath*  
識別資源的路徑。您可以在路徑中使用 \$1 萬用字元。

例如，您可以在陳述式中使用特定執行個體 (`i-1234567890abcdef0`) 的 ARN 來加以指定，如下所示。

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
```

您也可以使用 \$1 萬用字元指定所有屬於特定帳戶的執行個體，如下所示。

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"
```

您也可以使用 \$1 萬用字元指定屬於特定帳戶的所有 Amazon EC2 資源，如下所示。

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:*"
```

若要指定所有資源，或如果特定的 API 動作不支援 ARN，請在 `Resource` 元素中使用 \$1 萬用字元，如下所示。

```
"Resource": "*"
```

許多 Amazon EC2 API 動作都涉及多個資源。例如，`AttachVolume` 會將 Amazon EBS 磁碟區連接至執行個體，所以使用者必須具備該磁碟區與執行個體的使用許可。若要在單一陳述式中指定多項資源，請用逗號分隔其 ARN，如下所示。

```
"Resource": ["arn1", "arn2"]
```

如需 Amazon EC2 資源的 ARN 清單，請參閱 [由 Amazon EC2 定義的資源類型 ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-resources-for-iam-policies)。

## Amazon EC2 的條件金鑰
<a name="amazon-ec2-keys"></a>

在政策陳述式中，您可以選擇性的指定生效時發揮控制效果的條件。每個條件都包含一或多個索引鍵/值對。條件鍵不區分大小寫。我們已定義 AWS 全域條件索引鍵，以及額外的服務特定條件索引鍵。

如需 Amazon EC2 的服務特定條件金鑰清單，請參閱 [Amazon EC2 的條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-policy-keys)。Amazon EC2 也會實作 AWS 全域條件金鑰。如需詳細資訊，請參閱 *IAM 使用者指南*中的[可用於所有請求的資訊](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infoallreqs)。

所有 Amazon EC2 操作都支援 `aws:RequestedRegion` 和 `ec2:Region` 條件索引鍵。如需詳細資訊，請參閱[範例：限制特定區域的存取](ExamplePolicies_EC2.md#iam-example-region)。

若要在 IAM 政策中使用條件金鑰，請使用 `Condition` 陳述式。例如，下列政策會授與使用者新增及移除任何安全群組之傳入和傳出規則的許可。它會使用 `ec2:Vpc` 條件金鑰，來指定這些動作只能在特定 VPC 中的安全群組上執行。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement":[{
    "Effect":"Allow",
    "Action": [
       "ec2:AuthorizeSecurityGroupIngress",
       "ec2:AuthorizeSecurityGroupEgress",
       "ec2:RevokeSecurityGroupIngress",
       "ec2:RevokeSecurityGroupEgress"],
     "Resource": "arn:aws:ec2:us-east-1:111122223333:security-group/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-11223344556677889"
        }
      }
    }
  ]
}
```

------

若您指定多個條件，或在單一條件中指定多個索引鍵，我們會使用邏輯 AND 操作加以評估。若您針對單一索引鍵使用多個值指定單一條件，我們會使用邏輯 OR 操作評估條件。若要授予許可，必須符合所有的條件。

您也可以在指定條件時使用預留位置。如需詳細資訊，請參閱*「IAM 使用者指南」*中的 [IAM 政策元素：變數和標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

**重要**  
許多條件鍵均為資源專屬，而且部分 API 動作使用多個資源。若您撰寫的政策具備條件鍵，請使用陳述式的 `Resource` 元素來指定套用該條件鍵的資源。若未這麼做，該政策可能會導致使用者完全無法執行該動作，因為未套用條件金鑰之資源的條件檢查會失敗。若您不希望指定資源，或者若已撰寫政策的 `Action` 元素來納入多個 API 動作，則您必須使用 `...IfExists` 條件類型，以確保未使用該條件金鑰的資源，忽略該條件金鑰。如需詳細資訊，請參閱*IAM 使用者指南*中的 [...IfExists 條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IfExists)。

**Topics**
+ [

### ec2:Attribute 條件金鑰
](#attribute-key)
+ [

### ec2:ResourceID 條件索引鍵
](#imageId-key)
+ [

### ec2:SourceInstanceARN 條件金鑰
](#SourceInstanceARN)

### ec2:Attribute 條件金鑰
<a name="attribute-key"></a>

`ec2:Attribute` 條件金鑰可用於按資源屬性篩選存取的條件。

條件金鑰僅支援屬於基本資料類型 (例如字串或整數) 的屬性，或僅具有 **Value** 屬性 (例如 [ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html) API 動作的 **Description** 或 **ImdsSupport** 物件) 的複雜 **[AttributeValue](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AttributeValue.html)** 物件。條件金鑰不能用於具有多個屬性的複雜物件，例如 [ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html) API 動作的 **LaunchPermission** 物件。

例如，以下政策使用 `ec2:Attribute/Description` 條件金鑰，按 **ModifyImageAttribute** API 動作的複雜 **Description** (描述) 物件篩選存取。條件金鑰僅允許將映像描述修改為 `Production` 或 `Development` 的請求。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute/Description": [
            "Production",
            "Development"
          ]
        }
      }
    }
  ]
}
```

------

以下範例政策使用 `ec2:Attribute` 條件金鑰，按 **ModifyImageAttribute** API 動作的基本 **Attribute** (屬性) 屬性篩選存取。條件金鑰會拒絕嘗試修改映像描述的所有請求。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute": "Description"
        }
      }
    }
  ]
}
```

------

### ec2:ResourceID 條件索引鍵
<a name="imageId-key"></a>

使用以下 `ec2:ResourceID` 條件索引鍵搭配指定的 API 動作時，條件索引鍵值會用於指定由 API 動作建立之產生的資源。`ec2:ResourceID` 條件索引鍵不能用於指定 API 請求中指定的來源資源。如果使用下列其中一項 `ec2:ResourceID` 條件索引鍵搭配指定的 API，您必須一律指定萬用字元 (`*`)。如果指定不同的值，則該條件在執行期期間一律會解析為 `*`。例如，若要使用 `ec2:ImageId` 條件索引鍵搭配 **CopyImage** API，您必須按如下方式指定條件索引鍵：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ImageID": "*"
        }
      }
    }
  ]
}
```

------

我們建議您避免使用  條件索引鍵搭配這些 API 動作。
+ `ec2:DhcpOptionsID` – `CreateDhcpOptions`
+ `ec2:ImageID`–`CopyImage`、`CreateImage`、`ImportImage` 和 `RegisterImage`
+ `ec2:InstanceID`–`RunInstances` 和 `ImportInstance`
+ `ec2:InternetGatewayID` – `CreateInternetGateway`
+ `ec2:NetworkAclID` – `CreateNetworkAcl`
+ `ec2:NetworkInterfaceID` – `CreateNetworkInterface`
+ `ec2:PlacementGroupName` – `CreatePlacementGroup`
+ `ec2:RouteTableID` – `CreateRouteTable`
+ `ec2:SecurityGroupID` – `CreateSecurityGroup`
+ `ec2:SnapshotID`–`CopySnapshot`、`CreateSnapshot`、`CreateSnapshots` 和 `ImportSnapshots`
+ `ec2:SubnetID` – `CreateSubnet`
+ `ec2:VolumeID`–`CreateVolume` 和 `ImportVolume`
+ `ec2:VpcID` – `CreateVpc`
+ `ec2:VpcPeeringConnectionID` – `CreateVpcPeeringConnection`

相反地，如果需要根據特定資源 ID 篩選存取權，建議您按如下方式使用 `Resource` 政策元素：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef"
    }
  ]
}
```

------

### ec2:SourceInstanceARN 條件金鑰
<a name="SourceInstanceARN"></a>

使用 `ec2:SourceInstanceARN` 指定提出請求之執行個體的 ARN。這是一個[AWS 全域條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)，這表示您可以將它與 Amazon EC2 以外的服務搭配使用。如需政策範例，請參閱[範例：允許特定執行個體檢視其他服務中的資源 AWS](ExamplePolicies_EC2.md#iam-example-source-instance)。

## 使用屬性型存取控制存取
<a name="control-access-with-tags"></a>

當您建立授予使用者使用 EC2 資源之許可的 IAM 政策時，您可以在政策的 `Condition` 元素中包含標籤資訊，以根據標籤控制存取。這稱為以屬性型存取控制 (ABAC)。ABAC 對於使用者可以修改、使用或刪除哪些資源提供了更佳的控制。如需詳細資訊，請參閱 [AWS的 ABAC 是什麼？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)

例如：您可以建立一個政策，允許使用者終止執行個體，但如果執行個體具有標籤 `environment=production`，則拒絕該動作。若要這樣做，您可以使用 `aws:ResourceTag` 條件金鑰，根據連接至資源的標籤允許或拒絕存取資源。

```
"StringEquals": { "aws:ResourceTag/environment": "production" }
```

若要了解 Amazon EC2 API 動作是否支援使用 `aws:ResourceTag` 條件金鑰控制存取，請參閱 [Amazon EC2 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。由於 `Describe` 動作不支援資源層級許可，您必須在不同的陳述式中指定它們，無需條件。

如需 IAM 政策的範例，請參閱[控制 Amazon EC2 API 存取的政策範例](ExamplePolicies_EC2.md)。

如果您允許或拒絕使用者根據標籤存取資源，請務必考慮明確拒絕使用者將這些標籤新增至相同資源或從中移除的能力。否則，使用者可能透過修改標籤來避開您的限制，並取得資源的存取。

## 向使用者、群組和角色授予許可
<a name="granting-iam-permissions"></a>

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

## 檢查使用者是否擁有必要的許可
<a name="check-required-permissions"></a>

建立 IAM 政策之後，我們建議您檢查該政策是否授予使用者許可，允許他們使用所需要的特定 API 動作和資源，再讓政策生效。

首先，建立一個用於測試的使用者，然後將建立的 IAM 政策連接到該測試使用者。接著，以測試使用者的身分提出請求。

若您要測試的 Amazon EC2 動作會建立或修改資源，您應使用 `DryRun` 參數進行請求 (或使用 `--dry-run` 選項執行 AWS CLI 命令)。在此案例中，呼叫會完成授權檢查，但不會完成操作。例如，您可以檢查使用者是否可以終止特定執行個體，而無須實際終止它。若測試使用者具有必要的許可，請求會傳回 `DryRunOperation`。否則，會傳回 `UnauthorizedOperation`。

如果政策未授予使用者預期的許可，或授予過多許可，您可以視需要調整政策並重新測試，直到您取得所要的結果。

**重要**  
政策變更的散佈可能需要幾分鐘時間才能生效。因此，我們建議您等待五分鐘，然後再測試您的政策更新。

如果授權檢查失敗，請求將傳回包含診斷資訊的編碼訊息。您可使用 `DecodeAuthorizationMessage` 動作將訊息解碼。如需詳細資訊，請參閱 *AWS Security Token Service API 參考*中的 [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) 以及 [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html)。

# 控制 Amazon EC2 API 存取的政策範例
<a name="ExamplePolicies_EC2"></a>

您可以使用 IAM 政策向使用者授予使用 Amazon EC2 所需的權限。如需逐步說明，請參閱「IAM 使用者指南」**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

以下範例顯示了可用於授予使用者使用 Amazon EC2 的權限的政策陳述式。這些政策專為使用 AWS CLI 或 AWS SDK 提出的請求而設計。在下列範例中，將每個*使用者輸入預留位置*取代為您自己的資訊。

**Topics**
+ [唯讀存取](#iam-example-read-only)
+ [限制特定區域的存取](#iam-example-region)
+ [使用執行個體](#iam-example-instances)
+ [啟動執行個體 (RunInstances)](#iam-example-runinstances)
+ [

## 使用 競價型執行個體
](#iam-example-spot-instances)
+ [使用 預留執行個體](#iam-example-reservedinstances)
+ [標籤資源](#iam-example-taggingresources)
+ [使用 IAM 角色](#iam-example-iam-roles)
+ [使用路由表](#iam-example-route-tables)
+ [允許特定執行個體檢視其他服務中的資源 AWS](#iam-example-source-instance)
+ [使用啟動範本](#iam-example-launch-templates)
+ [使用執行個體中繼資料](#iam-example-instance-metadata)
+ [

## 使用 Amazon EBS 磁碟區和快照
](#iam-example-ebs)

如需可在 Amazon EC2 主控台中使用的政策範例，請參閱[控制 Amazon EC2 主控台存取的政策範例](iam-policies-ec2-console.md)。

## 範例：唯讀存取
<a name="iam-example-read-only"></a>

下列政策可授予使用者使用名稱開頭為 `Describe` 之所有 Amazon EC2 API 動作的許可。`Resource` 元素使用萬用字元，表示使用者可以為這些 API 動作指定所有資源。如果 API 動作不支援資源層級許可，也需要使用 \$1 萬用字元。如需可與 Amazon EC2 API 動作搭配使用的 ARN 詳細資訊，請參閱 [Amazon EC2 的動作、資源與條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

因為根據預設會拒絕使用者使用 API 動作的許可，所以使用者沒有對資源執行任何動作的許可 (除非其他陳述式授予他們該許可)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    }
   ]
}
```

------

## 範例：限制特定區域的存取
<a name="iam-example-region"></a>

下列政策拒絕使用所有 Amazon EC2 API 動作的使用者許可，除非該區域為歐洲 (法蘭克福)。它使用全域條件金鑰 `aws:RequestedRegion`，所有 Amazon EC2 API 動作都支援它。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

或者，您可以使用條件金鑰 `ec2:Region`，它為 Amazon EC2 獨有並受所有 Amazon EC2 API 動作支援。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "ec2:Region": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

## 使用執行個體
<a name="iam-example-instances"></a>

**Topics**
+ [

### 範例：描述、啟動、停止、開始及終止所有執行個體
](#iam-example-instances-all)
+ [

### 範例：描述所有執行個體，並只停止、啟動及終止特定執行個體
](#iam-example-instances-specific)

### 範例：描述、啟動、停止、開始及終止所有執行個體
<a name="iam-example-instances-all"></a>

下列政策可授予使用者使用在 `Action` 元素中指定之 API 動作的許可。`Resource` 元素使用 \$1 萬用字元，表示使用者可以為這些 API 動作指定所有資源。如果 API 動作不支援資源層級許可，也需要使用 \$1 萬用字元。如需可與 Amazon EC2 API 動作搭配使用的 ARN 詳細資訊，請參閱 [Amazon EC2 的動作、資源與條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

因為根據預設會拒絕使用者使用 API 動作的許可，所以使用者沒有使用任何其他 API 動作的許可 (除非其他陳述式授予他們該許可)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances", 
        "ec2:DescribeImages",
        "ec2:DescribeKeyPairs", 
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeAvailabilityZones",
        "ec2:RunInstances", 
        "ec2:TerminateInstances",
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": "*"
    }
   ]
}
```

------

### 範例：描述所有執行個體，並只停止、啟動及終止特定執行個體
<a name="iam-example-instances-specific"></a>

下列政策允許使用者描述所有執行個體、只開始及停止執行個體 i-1234567890abcdef0 和 i-0598c7d356eba48d7，並只終止 `us-east-1` 區域中資源標籤為 "`purpose=test`" 的執行個體。

第一個陳述式的 `Resource` 元素使用 \$1 萬用字元，表示使用者可以為該動作指定所有資源；在本例中，他們可以列出所有執行個體。如果 API 動作不支援資源層級許可 (在本例中為 `ec2:DescribeInstances`)，也需要使用 \$1 萬用字元。如需可與 Amazon EC2 API 動作搭配使用的 ARN 詳細資訊，請參閱 [Amazon EC2 的動作、資源與條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

第二個陳述式的 `StopInstances` 和 `StartInstances` 動作使用資源層級許可。特定的執行個體在 `Resource` 元素中以其 ARN 表示。

第三個陳述式允許使用者終止 `us-east-1`區域中屬於指定 AWS 帳戶的所有執行個體，但僅限於執行個體具有標籤 的情況下`"purpose=test"`。`Condition` 元素可限定政策陳述式生效的條件。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "ec2:TerminateInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/purpose": "test"
         }
      }
   }

   ]
}
```

------

## 啟動執行個體 (RunInstances)
<a name="iam-example-runinstances"></a>

[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API 動作會啟動一個或多個 隨需執行個體 或 競價型執行個體。`RunInstances` 需要 AMI 並建立一個執行個體。使用者可以在請求中指定金鑰對和安全性群組。啟動至 VPC 需要子網，並會建立網路介面。從由 Amazon EBS 支援的 AMI 啟動會建立磁碟區。因此，使用者必須具有使用這些 Amazon EC2 資源的許可。您可以建立需要使用者在 `RunInstances` 上指定選用參數，或限制使用者使用特定參數值的政策陳述式。

如需啟動執行個體所需的資源層級許可詳細資訊，請參閱 [Amazon EC2 的動作、資源及條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

根據預設，使用者不具描述、開始、停止或終止所產生執行個體的許可。將管理所產生執行個體之許可授予使用者的一個方式，就是為每個執行個體建立特定標籤，再建立讓他們管理具有該標籤之執行個體的陳述式。如需詳細資訊，請參閱[使用執行個體](#iam-example-instances)。

**Topics**
+ [

### AMI
](#iam-example-runinstances-ami)
+ [

### 執行個體類型
](#iam-example-runinstances-instance-type)
+ [

### 子網
](#iam-example-runinstances-subnet)
+ [

### EBS 磁碟區
](#iam-example-runinstances-volumes)
+ [

### Tags (標籤)
](#iam-example-runinstances-tags)
+ [

### 啟動範本中的標籤
](#iam-example-tags-launch-template)
+ [

### Elastic GPU
](#iam-example-runinstances-egpu)
+ [

### 啟動範本
](#iam-example-runinstances-launch-templates)

### AMI
<a name="iam-example-runinstances-ami"></a>

下列政策只允許使用者使用指定的 AMI `ami-9e1670f7` 和 `ami-45cf5c3c` 啟動執行個體。使用者無法使用其他 AMI 啟動執行個體 (除非其他陳述式授予使用者該許可)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1::image/ami-9e1670f7",
        "arn:aws:ec2:us-east-1::image/ami-45cf5c3c",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*",
        "arn:aws:ec2:us-east-1:111122223333:subnet/*",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ]
    }
   ]
}
```

------

或者，下列政策允許使用者從 Amazon 或某些受信任和已驗證的合作夥伴擁有的所有 AMI 啟動執行個體。第一個陳述式的 `Condition` 元素會測試 `ec2:Owner` 是否為 `amazon`。使用者無法使用其他 AMI 啟動執行個體 (除非其他陳述式授予使用者該許可)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### 執行個體類型
<a name="iam-example-runinstances-instance-type"></a>

下列政策只允許使用者使用 `t2.micro` 或 `t2.small` 執行個體類型啟動執行個體，您可能會為了控制成本而這樣做。因為第一個陳述式的 `Condition` 元素會測試 `ec2:InstanceType` 是否為 `t2.micro` 或 `t2.small`，所以使用者無法啟動更大的執行個體。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

或者，您可以建立政策來拒絕使用者啟動 `t2.micro` 和 `t2.small` 執行個體類型以外之任何執行個體的許可。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        { 
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringNotEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### 子網
<a name="iam-example-runinstances-subnet"></a>

下列政策只允許使用者使用指定的子網 `subnet-12345678` 啟動執行個體。群組無法將執行個體啟動至任何其他子網 (除非其他陳述式授予使用者該許可)。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1::image/ami-*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*"
      ]
    }
   ]
}
```

------

或者，您可以建立拒絕使用者將執行個體啟動至任何其他子網之許可的政策。陳述式執行此作業的方式是拒絕建立網路介面的許可，但指定子網 `subnet-12345678` 的介面除外。此拒絕會覆寫為允許將執行個體啟動至其他子網所建立的任何其他政策。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ],
      "Condition": {
         "ArnNotEquals": {
            "ec2:Subnet": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### EBS 磁碟區
<a name="iam-example-runinstances-volumes"></a>

下列政策只允許使用者在執行個體的 EBS 磁碟區已加密時啟動執行個體。使用者必須從使用加密快照建立的 AMI 啟動執行個體，以確保根磁碟區經過加密。使用者在啟動期間連接至執行個體的任何其他磁碟區也必須經過加密。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
                {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:volume/*"
            ],
            "Condition": {
                "Bool": {
                    "ec2:Encrypted": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}
```

------

### Tags (標籤)
<a name="iam-example-runinstances-tags"></a>

**建立時為執行個體加上標籤**

下列政策允許使用者在建立期間啟動執行個體並為執行個體套用標籤。針對套用標籤的資源建立動作，使用者必須具有使用 `CreateTags` 動作的許可。第二個陳述式使用 `ec2:CreateAction` 條件鍵限制使用者在 `RunInstances` 的條件下才可建立標籤，且僅限為執行個體建立。使用者無法為現有資源套用標籤，也無法使用 `RunInstances` 請求為磁碟區套用標籤。

如需詳細資訊，請參閱[在建立期間授予標籤 Amazon EC2 資源的許可](supported-iam-actions-tagging.md)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**使用特定標籤建立時為執行個體和磁碟區加上標籤**

下列政策包含 `aws:RequestTag` 條件鍵，需要使用者使用標籤 `RunInstances` 和 `environment=production` 為 `purpose=webserver` 建立的任何執行個體和磁碟區套用標籤。如果使用者未傳遞這些特定標籤，或完全未指定標籤，請求會失敗。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/environment": "production" ,
             "aws:RequestTag/purpose": "webserver"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**使用至少一個特定標籤建立時為執行個體和磁碟區加上標籤**

下列政策在 `ForAnyValue` 條件的部分使用 `aws:TagKeys` 修飾詞，表示至少必須在請求中指定一個標籤，而且它必須包含 `environment` 鍵或 `webserver` 鍵。此標籤必須同時套用至執行個體和磁碟區。使用者可以在請求中指定任何標籤值。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
          "ForAnyValue:StringEquals": {
              "aws:TagKeys": ["environment","webserver"]
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
          "StringEquals": {
              "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**如果執行個體在建立時被標籤，則必須使用特定標籤來加以標籤**

在下列政策中，使用者不需要在請求中指定標籤，但若需指定，標籤必須是 `purpose=test`。不允許其他標籤。使用者可以套用標籤至 `RunInstances` 請求中任何可套用標籤的資源。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/purpose": "test",
             "ec2:CreateAction" : "RunInstances"
          },
          "ForAllValues:StringEquals": {
              "aws:TagKeys": "purpose"
          }
       }
    }
  ]
}
```

------

不允許任何人為 RunInstances 建立時呼叫標籤



------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

只允許 spot-instances-request 的特定標籤。不一致的數字 2 會意外在此發揮作用。在一般情況下，不指定任何標籤會導致「未驗證」狀態。如果是 spot-instances-request，則不會評估此政策，如果沒有 spot-instances-request 標記，因此 non-tag Spot on Run 請求將會成功。

### 啟動範本中的標籤
<a name="iam-example-tags-launch-template"></a>

在下列範例中，使用者可以啟動執行個體，但前提是他們要使用特定的啟動範本 (`lt-09477bcd97b0d310e`)。`ec2:IsLaunchTemplateResource` 條件鍵可防止使用者覆寫在啟動範本中指定的任何資源。陳述式的第二部分允許使者在建立時為執行個體套用標籤 – 如果在啟動範本中指定執行個體的標籤，則需要陳述式的這個部分。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

### Elastic GPU
<a name="iam-example-runinstances-egpu"></a>

在下列政策中，使用者可以啟動執行個體，並指定要連接至執行個體的 Elastic GPU。使用者可以在任何區域中啟動執行個體，但他們只可在 `us-east-2` 區域中於啟動期間連接彈性 GPU。

`ec2:ElasticGpuType` 條件索引鍵可確保執行個體使用 `eg1.medium` 或 `eg1.large` 彈性 GPU 類型。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
             {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:elastic-gpu/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-2",
                    "ec2:ElasticGpuType": [
                        "eg1.medium",
                        "eg1.large"
                    ]
                }  
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:111122223333:network-interface/*",
                "arn:aws:ec2:*:111122223333:instance/*",
                "arn:aws:ec2:*:111122223333:subnet/*",
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:key-pair/*",
                "arn:aws:ec2:*:111122223333:security-group/*"
            ]
        }
    ]
}
```

------

### 啟動範本
<a name="iam-example-runinstances-launch-templates"></a>

在下列範例中，使用者可以啟動執行個體，但前提是他們要使用特定的啟動範本 (`lt-09477bcd97b0d310e`)。使用者可以透過在 `RunInstances` 動作中指定參數，來覆寫啟動範本中的任何參數。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          }
       }
    }
  ]
}
```

------

在此範例中，使用者只有在使用啟動範本時才能啟動執行個體。此政策會使用 `ec2:IsLaunchTemplateResource` 條件索引鍵，以防止使用者覆寫啟動範本中預先存在的任何 ARN。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

下列政策範例允許使用者啟動執行個體，但前提是他們要使用啟動範本。使用者無法覆寫請求中的子網和網路介面參數；這些參數只能在啟動範本中予以指定。陳述式的第一部分使用 [NotResource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notresource.html) 元素來允許子網和網路介面以外的所有其他資源。陳述式的第二部分允許子網和網路介面資源，但前提是它們來自啟動範本。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                      "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          }
       }
    },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                   "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

下列範例只允許使用者在使用啟動範本且該啟動範本具有標籤 `Purpose=Webservers` 時，啟動執行個體。使用者無法覆寫 `RunInstances` 動作中的任何啟動範本參數。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
         "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
       "StringEquals": {
           "aws:ResourceTag/Purpose": "Webservers" 
        }
       }
     }
  ]
}
```

------

## 使用 競價型執行個體
<a name="iam-example-spot-instances"></a>

您可以使用 RunInstances 動作來建立競價型執行個體請求，並在建立時標記競價型執行個體請求。要為 RunInstances 指定的資源是 `spot-instances-request`。

`spot-instances-request` 資源會在 IAM 政策中進行評估，如下所示：
+ 如果您沒有在建立時標記 Spot 執行個體請求，則 Amazon EC2 不會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。
+ 如果您在建立時標記 Spot 執行個體請求，Amazon EC2 會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。

因此，對於 `spot-instances-request` 資源，下列規則適用於 IAM 政策：
+ 如果您使用 RunInstances 來建立 Spot 執行個體請求，而且您不打算在建立時標記 Spot 執行個體請求，則不需要明確允許 `spot-instances-request` 資源；呼叫將會成功。
+ 如果您使用 RunInstances 來建立 Spot 執行個體請求，並打算在建立時標記 Spot 執行個體請求，則必須在 RunInstances 允許陳述式中包含 `spot-instances-request` 資源，否則呼叫將會失敗。
+ 如果您使用 RunInstances 建立 Spot 執行個體請求，並打算在建立時標記 Spot 執行個體請求，則必須在 CreateTag 允許陳述式中指定 `spot-instances-request` 資源或 `*` 萬用字元，否則呼叫將會失敗。

您可以使用 RunInstances 或 RequestSpotInstances 請求 競價型執行個體。下列範例 IAM 政策僅適用於使用 RunInstances 請求 競價型執行個體。

**範例：使用 RunInstances 請求 競價型執行個體**

下列政策可讓使用者使用 RunInstances 動作來請求 競價型執行個體。由 RunInstances 建立的 `spot-instances-request` 資源會請求 競價型執行個體。

**注意**  
若要使用 RunInstances 來建立 Spot 執行個體請求，如果您不打算在建立時標記 Spot 執行個體請求，則可以從 `Resource` 清單中省略 `spot-instances-request`。這是因為如果 Spot 執行個體請求未在建立時標記，則 Amazon EC2 不會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        }
    ]
}
```

------

**警告**  
**不支援的 – 範例：拒絕使用者 競價型執行個體 使用 RunInstances 請求的權限**  
`spot-instances-request` 資源不支援下列政策。  
下列政策旨在提供使用者啟動 隨需執行個體 的許可，但拒絕使用者請求 競價型執行個體 的許可。由 RunInstances 建立的 `spot-instances-request` 資源是請求 競價型執行個體 的資源。第二個陳述式是為了拒絕 `spot-instances-request` 資源的 RunInstances 動作。但系統不支援此條件，因為如果 Spot 執行個體請求未在建立時標記，則 Amazon EC2 不會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequestsNOTSUPPORTEDDONOTUSE",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
        }
    ]
}
```

**範例：在建立時標記 Spot 執行個體請求**

下列政策可讓使用者標記執行個體啟動期間建立的所有資源。第一個陳述式可讓 RunInstances 建立列出的資源。由 RunInstances 建立的 `spot-instances-request` 資源是請求 競價型執行個體 的資源。第二個陳述式提供 `*` 萬用字元，允許在執行個體啟動時建立所有資源時加上標記。

**注意**  
如果您在建立時標記 Spot 執行個體請求，Amazon EC2 會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。因此，您必須明確允許 RunInstances 動作的 `spot-instances-request` 資源，否則呼叫將會失敗。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**範例：拒絕在建立時標記 Spot 執行個體請求**

下列政策拒絕使用者標記執行個體啟動期間建立的資源的許可。

第一個陳述式可讓 RunInstances 建立列出的資源。由 RunInstances 建立的 `spot-instances-request` 資源是請求 競價型執行個體 的資源。第二個陳述式會提供 `*` 萬用字元，以拒絕在執行個體啟動時建立所有標記的資源。如果在建立時標記 `spot-instances-request` 或任何其他資源，RunInstances 呼叫將會失敗。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenyTagResources",
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**警告**  
**不支援 - 範例：只有系統指派特定標籤時，才允許建立 Spot 執行個體請求**  
`spot-instances-request` 資源不支援下列政策。  
下列政策旨在授與 RunInstances 建立請求的許可，只有在 Spot 執行個體請求標記為特定標籤時才會建立請求。  
第一個陳述式可讓 RunInstances 建立列出的資源。  
第二個陳述式向使用者授予許可，以便僅在請求具有 `environment=production` 標籤時才建立 Spot 執行個體請求。如果此條件套用至 RunInstances 所建立的其他資源，則不指定任何標籤會導致 `Unauthenticated` 錯誤。不過，如果沒有為 Spot 執行個體請求指定標籤，則 Amazon EC2 不會評估 RunInstances 陳述式中的 `spot-instances-request` 資源，這會導致 RunInstances 建立非標籤的 Spot 執行個體請求。  
請注意，指定 `environment=production` 以外的其他標記會導致 `Unauthenticated` 錯誤，因為如果使用者標記 Spot 執行個體請求，Amazon EC2 會評估 RunInstances 陳述式中的 `spot-instances-request` 資源。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "RequestSpotInstancesOnlyIfTagIsEnvironmentProductionNOTSUPPORTEDDONOTUSE",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }

    ]
}
```

**範例：如果系統指派特定標籤，則拒絕建立 Spot 執行個體請求**

如果請求已標記為 `environment=production`，下列政策會拒絕 RunInstances 建立 Spot 執行個體請求的許可。

第一個陳述式可讓 RunInstances 建立列出的資源。

如果請求具有 `environment=production` 標籤，第二個陳述式會拒絕使用者建立 Spot 執行個體請求的許可。指定 `environment=production` 為標籤會導致 `Unauthenticated` 錯誤。指定其他標籤或不指定標籤將導致建立 Spot 執行個體請求。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequests",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

## 範例：使用 預留執行個體
<a name="iam-example-reservedinstances"></a>

下列政策可提供使用者檢視、修改及購買您帳戶中 預留執行個體 的許可。

您無法針對個別的 預留執行個體 設定資源層級的權限。此政策表示使用者可存取帳戶中的所有 預留執行個體。

`Resource` 元素使用 \$1 萬用字元，表示使用者可以為此動作指定所有資源；在本例中，他們可以列出及修改帳戶中的所有預留執行個體。他們也可以使用帳戶登入資料購買 預留執行個體。如果 API 動作不支援資源層級許可，也需要使用 \$1 萬用字元。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:PurchaseReservedInstancesOffering", 
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
    }
   ]
}
```

------

用以允許使用者檢視及修改您帳戶中的預留執行個體，但不允許購買新的預留執行個體。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 範例：標籤資源
<a name="iam-example-taggingresources"></a>

下列政策只允許使用者在標籤包含 `CreateTags` 鍵和 `environment` 值時，使用 `production` 動作將標籤套用至執行個體。不允許其他標籤，並且使用者無法將標籤用於任何其他資源類型。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        }
    ]
}
```

------

下列政策允許使用者套用標籤至任何已有 `owner` 金鑰和使用者名稱值之標籤的可套用標籤資源。此外，使用者也必須在請求中使用 `anycompany:environment-type` 鍵和 `test` 值或 `prod` 值指定標籤。使用者可以在請求中指定其他標籤。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/anycompany:environment-type": ["test","prod"],
                    "aws:ResourceTag/owner": "${aws:username}"
                } 
            }
        }
    ]
}
```

------

您可以建立允許使用者為資源刪除特定標籤的 IAM 政策。例如，下列政策允許使用者在請求中指定的標籤鍵為 `environment` 或 `cost-center` 時，刪除磁碟區的標籤。您可以為標籤指定任何值，但標籤鍵必須符合指定的任一鍵。

**注意**  
如果您刪除資源，也會刪除與該資源相關聯的所有標籤。使用者不需要使用 `ec2:DeleteTags` 動作的許可，也能刪除具有標籤的資源；他們只需要執行刪除動作的許可。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Allow",
      "Action": "ec2:DeleteTags",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment","cost-center"]
        }
      }
    }
  ]
}
```

------

此政策只允許使用者刪除任何資源上的 `environment=prod` 標籤，而且僅限資源已套用 `owner` 金鑰和使用者名稱值之標籤的情況。使用者無法刪除資源的任何其他標籤。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": "prod",
          "aws:ResourceTag/owner": "${aws:username}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment"]
        }
      }
    }
  ]
}
```

------

## 範例：使用 IAM 角色
<a name="iam-example-iam-roles"></a>

下列政策允許使用者對具有標籤 `department=test` 的執行個體連接、取代及分離 IAM 角色。取代或分離 IAM 角色需要關聯 ID，因此政策也會授予使用者使用 `ec2:DescribeIamInstanceProfileAssociations` 動作的許可。

使用者必須具有使用 `iam:PassRole` 動作的許可，才能將角色傳遞給執行個體。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssociateIamInstanceProfile",
        "ec2:ReplaceIamInstanceProfileAssociation",
        "ec2:DisassociateIamInstanceProfile"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department":"test"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeIamInstanceProfileAssociations",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/DevTeam*"
    }
  ]
}
```

------

下列政策允許使用者對任何執行個體連接或取代 IAM 角色。使用者只能連接或取代名稱開頭為 `TestRole-` 的 IAM 角色。針對 `iam:PassRole` 動作，請確定您指定 IAM 角色的名稱，而不是執行個體描述檔 (如果名稱不同)。如需詳細資訊，請參閱[執行個體描述檔](iam-roles-for-amazon-ec2.md#ec2-instance-profile)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssociateIamInstanceProfile",
                "ec2:ReplaceIamInstanceProfileAssociation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeIamInstanceProfileAssociations",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/TestRole-*"
        }
    ]
}
```

------

## 範例：使用路由表
<a name="iam-example-route-tables"></a>

下列政策允許使用者新增、移除及取代只與 VPC `vpc-ec43eb89` 相關聯之路由表的路由。若要針對 `ec2:Vpc` 條件鍵指定 VPC，您必須指定 VPC 的完整 ARN。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteRoute",
                "ec2:CreateRoute",
                "ec2:ReplaceRoute"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:route-table/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-ec43eb89"
                }
            }
        }
    ]
}
```

------

## 範例：允許特定執行個體檢視其他服務中的資源 AWS
<a name="iam-example-source-instance"></a>

下列是您可連接至 IAM 角色的政策範例。此政策允許執行個體檢視各種 AWS 服務中的資源。它使用 `ec2:SourceInstanceARN` 條件鍵指定發出請求的執行個體必須是執行個體 `i-093452212644b0dd6`。如果同一個 IAM 角色與另一個執行個體相關聯，其他執行個體就無法執行這些動作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVolumes",
                "s3:ListAllMyBuckets",
                "dynamodb:ListTables",
                "rds:DescribeDBInstances"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnEquals": {
                    "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:111122223333:instance/i-093452212644b0dd6"
                }
            }
        }
    ]
}
```

------

## 範例：使用啟動範本
<a name="iam-example-launch-templates"></a>

下列政策允許使用者建立啟動範本版本並修改啟動範本，但僅限特定啟動範本 (`lt-09477bcd97b0d3abc`)。使用者無法使用其他啟動範本。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:ModifyLaunchTemplate"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d3abc"
    }
  ]
}
```

------

下列政策允許使用者刪除任何啟動範本和啟動範本版本，但前提是啟動範本具有標籤 `Purpose`=`Testing`。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Action": [
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Testing"
        }
      }
    }
  ]
}
```

------

## 使用執行個體中繼資料
<a name="iam-example-instance-metadata"></a>

下列政策可確保使用者只能使用 執行個體中繼資料服務第 2 版 (IMDSv2) 擷取 [執行個體中繼資料](ec2-instance-metadata.md) 。您可以將以下四個政策合併為一個包含四個陳述式的政策。當合併為一個政策時，您可以將政策用作為服務控制政策 (SCP)。它同樣可用作為套用至現有 IAM 政策 (取消和限制現有許可) 的*拒絕*政策，或者用作為跨帳戶、組織單位 (OU) 或整個組織全域套用的 SCP。

**注意**  
下列 RunInstances 中繼資料選項政策必須與授予委託人許可使用 RunInstances 啟動執行個體的政策搭配使用。如果委託人同樣不具有 RunInstances 許可，則無法啟動執行個體。如需詳細資訊，請參閱[使用執行個體](#iam-example-instances)和[啟動執行個體 (RunInstances)](#iam-example-runinstances)中的政策。

**重要**  
如果您使用 Auto Scaling 群組，而且需要在所有新執行個體上要求使用 IMDSv2，您的 Auto Scaling 群組必須使用*啟動範本*。  
當 Auto Scaling 群組使用啟動範本時，會在建立新的 Auto Scaling 群組時，檢查 IAM 主體的 `ec2:RunInstances` 許可。當現有的 Auto Scaling 群組更新為使用新的啟動範本或新版本的啟動範本時，也會檢查這些許可。  
只有在建立或更新使用啟動範本的 Auto Scaling 群組時，才會對 `RunInstances` 檢查 IAM 主體使用 IMDSv1 的限制。對於設為使用 `Latest` or `Default` 啟動範本的 Auto Scaling 群組，建立新版本的啟動範本時，不會檢查許可。對於要檢查的許可，您必須將 Auto Scaling 群組設為使用*特定版本*的啟動範本。  
藉由為建立的新委託人使用服務控制政策 (SCP) 或 IAM 許可界限，對組織中的所有帳戶停用啟動組態。對於具有 Auto Scaling 群組許可的 IAM 主體，使用此條件金鑰更新其相關的政策。若要停用啟動組態，請使用 `"autoscaling:LaunchConfigurationName"` 條件金鑰 (其值指定為 `null`)，建立或修改相關的 SCP、許可界限或 IAM 政策。
對於新的啟動範本，請在啟動範本中設定執行個體中繼資料選項。對於現有的啟動範本，請建立新版本的啟動範本，並在新版本中設定執行個體中繼資料選項。
在授予任何委託人許可使用啟動範本的政策中，藉由指定 `"autoscaling:LaunchTemplateVersionSpecified": "true"` 來限制 `$latest` 和 `$default` 的關聯。藉由限制使用特定版本的啟動範本，可以確保使用已設定執行個體中繼資料選項的版本來啟動新執行個體。如需詳細資訊，請參閱 *Amazon EC2 Auto Scaling API 參考*中的 [LaunchTemplateSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchTemplateSpecification.html)，指定 `Version` 參數。
對於使用啟動組態的 Auto Scaling 群組，將啟動組態取代為啟動範本。如需詳細資訊，請參閱 *Amazon EC2 Auto Scaling 使用者指南*中的[移轉 Auto Scaling 群組至啟動範本](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-to-launch-templates.html)。
對於使用啟動範本的 Auto Scaling 群組，請確保其將新啟動範本與設定的執行個體中繼資料選項搭配使用，或將新版本的目前啟動範本與設定的執行個體中繼資料選項搭配使用。如需詳細資訊，請參閱 [update-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html)。

**Topics**
+ [

### 需要使用 IMDSv2
](#iam-example-instance-metadata-requireIMDSv2)
+ [

### 拒絕選擇退出 IMDSv2
](#iam-example-instance-metadata-denyoptoutIMDSv2)
+ [

### 指定最大跳轉限制
](#iam-example-instance-metadata-maxHopLimit)
+ [

### 限制可修改執行個體中繼資料選項的人員
](#iam-example-instance-metadata-limit-modify-IMDS-options)
+ [

### 需要從 IMDSv2 擷取角色登入資料
](#iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials)

### 需要使用 IMDSv2
<a name="iam-example-instance-metadata-requireIMDSv2"></a>

下列政策指出，除非也選擇加入執行個體以要求使用 IMDSv2 (由 `"ec2:MetadataHttpTokens": "required"` 指示)，否則您無法呼叫 RunInstances API。如果您未指定執行個體需要 IMDSv2，則在呼叫 RunInstances API 時會出現 `UnauthorizedOperation` 錯誤。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireImdsV2",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotEquals": {
                    "ec2:MetadataHttpTokens": "required"
                }
            }
        }
    ]
}
```

------

### 拒絕選擇退出 IMDSv2
<a name="iam-example-instance-metadata-denyoptoutIMDSv2"></a>

下列政策規定您無法呼叫 `ModifyInstanceMetadataOptions` API，也無法允許 IMDSv1 或 IMDSv2 選項。如果您呼叫 `ModifyInstanceMetadataOptions` API，則必須將 `HttpTokens` 屬性設定為 `required`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyIMDSv1HttpTokensModification",
        "Effect": "Deny",
        "Action": "ec2:ModifyInstanceMetadataOptions",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotEquals": {
                "ec2:Attribute/HttpTokens": "required"
            },
            "Null": {
                "ec2:Attribute/HttpTokens": false
            }
        }
    }]
}
```

------

### 指定最大跳轉限制
<a name="iam-example-instance-metadata-maxHopLimit"></a>

下列政策指出，除非您同時指定躍點限制，且躍點限制不能超過 3，否則您無法呼叫 RunInstances API。如果不這麼做，則在呼叫 RunInstances API 時會出現 `UnauthorizedOperation` 錯誤。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "MaxImdsHopLimit",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "NumericGreaterThan": {
                    "ec2:MetadataHttpPutResponseHopLimit": "3"
                }
            }
        }
    ]
}
```

------

### 限制可修改執行個體中繼資料選項的人員
<a name="iam-example-instance-metadata-limit-modify-IMDS-options"></a>

下列政策只允許具有角色 `ec2-imds-admins` 的使用者對執行個體中繼資料選項進行變更。如果 `ec2-imds-admins` 角色以外的任何委託人嘗試呼叫 ModifyInstanceMetadataOptions API，將出現 `UnauthorizedOperation` 錯誤。這個陳述式可用來控制 ModifyInstanceMetadataOptions API 的使用；ModifyInstanceMetadataOptions API 目前沒有細微存取控制 (條件)。

### 需要從 IMDSv2 擷取角色登入資料
<a name="iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials"></a>

下列政策指出，如果此政策套用至角色，且 EC2 服務假定該角色，並將產生的登入資料用於簽署請求，則必須由從 IMDSv2 擷取的 EC2 角色登入資料簽署該請求。否則，其所有 API 呼叫將得到 `UnauthorizedOperation` 錯誤。一般情況下，可套用此陳述式/政策，因為如果請求未由 EC2 角色登入資料簽署，則不具任何作用。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireAllEc2RolesToUseV2",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NumericLessThan": {
                    "ec2:RoleDelivery": "2.0"
                }
            }
        }
    ]
}
```

------

## 使用 Amazon EBS 磁碟區和快照
<a name="iam-example-ebs"></a>

如需使用 Amazon EBS 磁碟區和快照的範例政策，請參閱 [Amazon EBS 的身分型政策範例](https://docs.aws.amazon.com/ebs/latest/userguide/security_iam_id-based-policy-examples.html)。

# 控制 Amazon EC2 主控台存取的政策範例
<a name="iam-policies-ec2-console"></a>

您可以使用 IAM 政策向使用者授予使用 Amazon EC2 所需的權限。如需逐步說明，請參閱「IAM 使用者指南」**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

主控台會針對其功能使用其他的 API 動作，所以這些政策可能不會如預期般運作。例如，使用者的權限如果只能使用 `DescribeVolumes` API 動作，則當該使用者試著在主控台中檢視磁碟區時，就可能會遇到錯誤。本節中所示範的政策，可讓使用者使用主控台的特定部分。如需為 Amazon EC2 主控台建立政策的詳細資訊，請參閱下列 AWS 安全部落格文章：[授予使用者在 Amazon EC2 主控台中的工作許可](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/)。

以下範例顯示了可用於授予使用者使用 Amazon EC2 的權限的政策陳述式。將每個*使用者輸入預留位置*替換為自己的資訊。這些政策專為使用 AWS 管理主控台開發套件發出的請求所設計。Amazon EC2 主控台可能會呼叫多個 API 動作來顯示單一資源，而且在使用者嘗試任務且主控台顯示錯誤之前可能並不明顯。如需詳細資訊，請參閱下列 AWS 安全部落格文章：[授予使用者在 Amazon EC2 主控台中的工作許可](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/)。

**Topics**
+ [唯讀存取](#ex-read-only)
+ [使用 EC2 啟動執行個體精靈](#ex-launch-wizard)
+ [使用安全群組](#ex-security-groups)
+ [使用彈性 IP 地址](#ex-eip)
+ [使用 預留執行個體](#ex-reservedinstances)

為了協助您確定在主控台中執行任務所需的 API 操作，您可以使用記錄呼叫的服務，例如 AWS CloudTrail。如果政策並未授予權限來建立或修改特定的資源，主控台會顯示編碼的訊息，其中包含診斷資訊。您可以使用 的 [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) API 動作 AWS STS或 中的 [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html) 命令來解碼訊息 AWS CLI。

## 範例：唯讀存取
<a name="ex-read-only"></a>

若要允許使用者檢視 Amazon EC2 主控台中的所有資源，您可以使用與下列範例相同的政策：[範例：唯讀存取](ExamplePolicies_EC2.md#iam-example-read-only)。除非有另一個陳述式授予使用者此種權限，否則使用者無法對其他資源執行任何動作，也無法建立新資源。

**檢視執行個體、AMI 和快照**

或者，您可以提供對資源子集的唯讀存取權限。若要這麼做，請針對每項資源，使用特定的 `ec2:Describe` 動作，來取代 `ec2:Describe` API 動作中的 \$1 萬用字元。下列的政策可讓使用者檢視 Amazon EC2 主控台中的所有執行個體、AMI 和快照。`ec2:DescribeTags` 動作可讓使用者檢視公用 AMI。主控台需要標記資訊來顯示公用 AMI；不過，您可以移除這項動作，來讓使用者只檢視私有 AMI。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances", 
         "ec2:DescribeImages",
         "ec2:DescribeTags", 
         "ec2:DescribeSnapshots"
      ],
      "Resource": "*"
   }
   ]
}
```

------

**注意**  
Amazon EC2 `ec2:Describe*` API 動作不支援資源層級的許可，因此您無法控制使用者可以在主控台中檢視哪些個別資源。因此，在上述的陳述式中，`Resource` 元素必須包含 \$1 萬用字元。如需可與 Amazon EC2 API 動作搭配使用的 ARN 詳細資訊，請參閱 [Amazon EC2 的動作、資源與條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)。

**檢視執行個體和 CloudWatch 指標**

下列的政策可讓使用者在 Amazon EC2 主控台中檢視執行個體，以及在 **Instances (執行個體)** 頁面的 **Monitoring (監控)** 索引標籤中，檢視 CloudWatch 警示和指標。Amazon EC2 主控台使用 CloudWatch API 來顯示警示和指標，因此您必須授予使用者許可以執行 `cloudwatch:DescribeAlarms`、`cloudwatch:DescribeAlarmsForMetric`、`cloudwatch:ListMetrics`、`cloudwatch:GetMetricStatistics` 和 `cloudwatch:GetMetricData` 動作。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "cloudwatch:DescribeAlarms",
         "cloudwatch:DescribeAlarmsForMetric",
         "cloudwatch:ListMetrics",
         "cloudwatch:GetMetricStatistics",
         "cloudwatch:GetMetricData"
      ],
      "Resource": "*"
   }
   ]
}
```

------

## 範例：使用 EC2 啟動執行個體精靈
<a name="ex-launch-wizard"></a>

Amazon EC2 啟動執行個體精靈是一個內含選項的畫面，可用來設定和啟動執行個體。政策必須包含使用 API 動作的權限，來讓使用者能夠使用精靈的選項。如果政策未包含使用這些動作的權限，可能無法適當地載入精靈中的某些項目，使用者就無法完成啟動。

**基本啟動執行個體精靈存取權**

若要順利地完成啟動，必須授予使用者權限，來使用 `ec2:RunInstances` API 動作和至少下列的 API 動作：
+ `ec2:DescribeImages`：檢視和選取 AMI。
+ `ec2:DescribeInstanceTypes`：檢視和選取執行個體類型。
+ `ec2:DescribeVpcs`：檢視可用的網路選項。
+ `ec2:DescribeSubnets`：檢視所選擇 VPC 的所有可用子網。
+ `ec2:DescribeSecurityGroups` 或 `ec2:CreateSecurityGroup`：檢視和選取現有的安全群組，或建立新的安全群組。
+ `ec2:DescribeKeyPairs` 或 `ec2:CreateKeyPair`：選取現有的金鑰對，或建立新的金鑰對。
+ `ec2:AuthorizeSecurityGroupIngress`：新增傳入規則。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:CreateSecurityGroup",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateKeyPair"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        }
    ]
}
```

------

您可以在政策中加入 API 動作，來為使用者提供更多選項，例如：
+ `ec2:DescribeAvailabilityZones`：檢視並選取特定的可用區域。
+ `ec2:DescribeNetworkInterfaces`：針對選取的子網，檢視並選取現有的網路介面。
+ 若要在 VPC 安全群組中新增外傳規則，必須授予使用者權限來使用 `ec2:AuthorizeSecurityGroupEgress` API 動作。若要修改或刪除現有的規則，必須授予使用者權限，以使用相關的 `ec2:RevokeSecurityGroup*` API 動作。
+ `ec2:CreateTags`：標記由 `RunInstances` 所建立的資源。如需詳細資訊，請參閱[在建立期間授予標籤 Amazon EC2 資源的許可](supported-iam-actions-tagging.md)。如果使用者不具有使用此動作的許可，而且試著在 啟動執行個體精靈的標記頁面上使用標籤，則啟動會失敗。
**重要**  
啟動執行個體時指定 **Name** (名稱) 可建立標籤，並且需要 `ec2:CreateTags` 動作。請小心授與使用者使用 `ec2:CreateTags` 動作的許可，因為這樣做會限制您使用 `aws:ResourceTag` 條件金鑰來限制使用者使用其他資源的能力。如果您授與使用者使用 `ec2:CreateTags` 動作的許可，他們可以變更資源的標籤，以略過這些限制。如需詳細資訊，請參閱[使用屬性型存取控制存取](iam-policies-for-amazon-ec2.md#control-access-with-tags)。
+ 若要在選取 AMI 時使用 Systems Manager 參數，您必須在政策中新增 `ssm:DescribeParameters` 和 `ssm:GetParameters`。`ssm:DescribeParameters` 會授予使用者檢視和選取 Systems Manager 參數的許可。`ssm:GetParameters` 會授與使用者取得 Systems Manager 參數值的許可。您也可以限制對特定 Systems Manager 參數的存取。如需詳細資訊，請參閱本節稍後的 **Restrict access to specific Systems Manager parameters (限制特定 Systems Manager 參數的存取)**。

目前，Amazon EC2 `Describe*` API 動作並不支援資源層級的許可，因此您無法限制使用者可以在啟動執行個體精靈中檢視哪些個別資源。不過，您可以對 `ec2:RunInstances` API 動作套用資源層級的權限，來限制使用者可以使用哪些資源來啟動執行個體。如果使用者選取了自己無使用授權的選項，啟動會失敗。

**Restrict access to a specific instance type, subnet, and Region (限制對特定執行個體類型、子網和區域的存取)**

下列政策可讓使用者使用 Amazon 所擁有的 AMI，來啟動 `t2.micro` 執行個體，而且只啟動至指定的子網 (`subnet-1a2b3c4d`)。使用者只能在指定區域中啟動。如果使用者選取了不同的區域，或是在啟動執行個體精靈中選取了不同的執行個體類型、AMI 或子網路，啟動會失敗。

第一個陳述式授與使用者許可來檢視啟動執行個體精靈中的選項，或建立新的選項。如上列的範例所解釋。第二個陳述式授予使用者許可，來針對 `ec2:RunInstances` 動作使用網路介面、磁碟區、金鑰對、安全群組和子網資源，如果要將執行個體啟動到 VPC，就必須執行此項動作。如需關於使用 `ec2:RunInstances` 動作的詳細資訊，請參閱 [啟動執行個體 (RunInstances)](ExamplePolicies_EC2.md#iam-example-runinstances)。第三和第四個陳述式分別授予使用者使用執行個體和 AMI 資源的許可，但前提是執行個體為 `t2.micro` 執行個體，並且 AMI 為 Amazon 或某些受信任和已驗證的合作夥伴所有。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeImages",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeKeyPairs", 
         "ec2:CreateKeyPair", 
         "ec2:DescribeVpcs", 
         "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", 
         "ec2:CreateSecurityGroup", 
         "ec2:AuthorizeSecurityGroupIngress"
	  ],
	  "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action":"ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-2:111122223333:volume/*",
         "arn:aws:ec2:us-east-2:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-2:111122223333:security-group/*",
         "arn:aws:ec2:us-east-2:111122223333:subnet/subnet-1a2b3c4d"
      ]
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": "t2.micro"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
            "arn:aws:ec2:us-east-2::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   }
   ]
}
```

------

**Restrict access to specific Systems Manager parameters (限制對特定 Systems Manager 參數的存取)**

下列政策授與使用具有特定名稱之 Systems Manager 參數的存取權。

第一個陳述式會授與使用者許可，以在啟動執行個體精靈中選取 AMI 時檢視 Systems Manager 參數。第二個陳述式會授與使用者只使用命名為 `prod-*` 參數的許可。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ssm:DescribeParameters"
      ],
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
         "ssm:GetParameters"
      ],
     "Resource": "arn:aws:ssm:us-east-2:123456123456:parameter/prod-*"
   }
   ]
}
```

------

## 範例：使用安全群組
<a name="ex-security-groups"></a>

**檢視安全群組，以及新增和移除規則**

下列的政策會授予使用者許可，讓使用者可在 Amazon EC2 主控台中檢視安全群組，並針對具有 `Department=Test` 標籤的現有安全群組新增和移除傳入與傳出規則，以及列出和修改規則說明。

在第一個陳述式中，`ec2:DescribeTags` 動作可讓使用者在主控台中檢視標籤，如此就能更容易找出使用者獲得允許修改的安全群組。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeSecurityGroups", 
         "ec2:DescribeSecurityGroupRules", 
         "ec2:DescribeTags"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:AuthorizeSecurityGroupIngress", 
         "ec2:RevokeSecurityGroupIngress", 
         "ec2:AuthorizeSecurityGroupEgress", 
         "ec2:RevokeSecurityGroupEgress", 
         "ec2:ModifySecurityGroupRules", 
         "ec2:UpdateSecurityGroupRuleDescriptionsIngress", 
         "ec2:UpdateSecurityGroupRuleDescriptionsEgress"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group/*"
      ],
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/Department": "Test"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": [
         "ec2:ModifySecurityGroupRules"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group-rule/*"
      ]
   }
]}
```

------

**使用 Create Security Group (建立安全群組) 對話方塊**

您可以建立政策，允許使用者在 Amazon EC2 主控台中，使用 **Create Security Group (建立安全群組)** 對話方塊。若要使用此對話方塊，必須授予使用者權限，來至少使用下列的 API 動作：
+ `ec2:CreateSecurityGroup`：建立新的安全群組。
+ `ec2:DescribeVpcs`：在 **VPC** 清單中，檢視現有 VPC 的清單。

使用者可利用這些權限來順利建立新的安全群組，但無法新增任何規則到安全群組。若要在 **Create Security Group (建立安全群組)** 對話方塊中使用規則，您可以將下列的 API 動作加入政策：
+ `ec2:AuthorizeSecurityGroupIngress`：新增傳入規則。
+ `ec2:AuthorizeSecurityGroupEgress`：將外傳規則加入 VPC 安全群組。
+ `ec2:RevokeSecurityGroupIngress`：修改或刪除現有的傳入規則。這是一項實用的動作，可讓使用者在主控台中使用 **Copy to new (複製到新的)** 功能。這項功能會開啟 **Create Security Group (建立安全群組)** 對話方塊，並使用與所選取安全群組相同的規則，來填入規則。
+ `ec2:RevokeSecurityGroupEgress`：修改或刪除 VPC 安全群組的外傳規則。這是一項實用的動作，可讓使用者修改或刪除預設的外傳規則 (此規則允許所有外傳流量)。
+ `ec2:DeleteSecurityGroup`：適用於無法儲存個別規則的情況。主控台會先建立安全群組，然後再加入指定的規則。如果規則無效，動作會失敗，而主控台會試著刪除安全群組。使用者仍在使用 **Create Security Group (建立安全群組)** 對話方塊，因此可以修正無效的規則，然後再次試著建立安全群組。此 API 動作並非必要，但如果使用者並未獲得使用該動作的權限，並試著建立包含無效規則的安全群組，則會建立未包含任何規則的安全群組，使用者必須在之後加入規則。
+ `ec2:UpdateSecurityGroupRuleDescriptionsIngress`：新增或更新傳入 (輸入) 安全群組規則的描述。
+ `ec2:UpdateSecurityGroupRuleDescriptionsEgress`：新增或更新傳出 (輸出) 安全群組規則的描述。
+ `ec2:ModifySecurityGroupRules`：修改安全群組規則。
+ `ec2:DescribeSecurityGroupRules`：列出安全群組規則。

下列政策授予使用者許可來使用 **Create Security Group (建立安全群組)** 對話方塊，並針對和指定 VPC (`vpc-1a2b3c4d`) 具有關聯的安全群組，建立其傳入和傳出規則。使用者可以建立 VPC 的安全群組，但無法將任何規則新增至這些安全群組。同樣地，使用者也無法將任何的規則，加入與 VPC `vpc-1a2b3c4d` 無關聯的現有安全群組。使用者也會獲得權限，來檢視主控台中的所有安全群組。如此，使用者就能更輕鬆地找出可以加入傳入規則的安全群組。此政策也會授予使用者權限，來刪除和 VPC `vpc-1a2b3c4d` 具有關聯的安全群組。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSecurityGroups", 
        "ec2:CreateSecurityGroup", 
        "ec2:DescribeVpcs"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSecurityGroup", 
        "ec2:AuthorizeSecurityGroupIngress", 
        "ec2:AuthorizeSecurityGroupEgress"
      ],
      "Resource": "arn:aws:ec2:us-east-2:111122223333:security-group/*",
      "Condition":{
         "ArnEquals": {
            "ec2:Vpc": "arn:aws:ec2:us-east-2:111122223333:vpc/vpc-1a2b3c4d"
         }
      }
    }
   ]
}
```

------

## 範例：使用彈性 IP 地址
<a name="ex-eip"></a>

若要讓使用者在 Amazon EC2 主控台中檢視彈性 IP 地址，您必須授予使用者許可來使用 `ec2:DescribeAddresses` 動作。

若要讓使用者使用彈性 IP 地址，您可以將下列的動作加入政策。
+ `ec2:AllocateAddress`：配置彈性 IP 地址。
+ `ec2:ReleaseAddress`：釋出彈性 IP 地址。
+ `ec2:AssociateAddress`：建立彈性 IP 地址與執行個體或網路介面的關聯。
+ `ec2:DescribeNetworkInterfaces` 和 `ec2:DescribeInstances`：使用 **Associate address (關聯地址)** 畫面。此畫面會顯示可以和彈性 IP 地址建立關聯的執行個體或網路介面。
+ `ec2:DisassociateAddress`：取消彈性 IP 地址與執行個體或網路介面的關聯。

下列政策可讓使用者檢視和配置彈性 IP 地址，並建立這些地址與執行個體的關聯。使用者不能建立彈性 IP 地址與網路介面的關聯、取消彈性 IP 地址的關聯，也不能釋出這些地址。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAddresses",
                "ec2:AllocateAddress",
                "ec2:DescribeInstances",
                "ec2:AssociateAddress"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 範例：使用 預留執行個體
<a name="ex-reservedinstances"></a>

以下政策允許使用者檢視和修改帳戶中的預留執行個體，以及在 AWS 管理主控台中購買新的預留執行個體。

此政策允許使用者檢視帳戶中的所有預留執行個體，以及帳戶中的所有隨需執行個體。您無法針對個別的預留執行個體設定資源層級的許可。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeReservedInstances", 
         "ec2:ModifyReservedInstances",
         "ec2:PurchaseReservedInstancesOffering", 
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeAvailabilityZones", 
         "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
   }
   ]
}
```

------

若要確保 Amazon EC2 主控台能夠針對您可在其中購買預留執行個體的可用區域顯示相關的資訊，則必須執行 `ec2:DescribeAvailabilityZones` 動作。`ec2:DescribeInstances` 動作則非必要，但可確保使用者能夠檢視帳戶中的執行個體，並購買保留，以配合目前的規格。

您可以調整 API 動作來限制使用者的存取，例如移除 `ec2:DescribeInstances` 和 `ec2:DescribeAvailabilityZones` 代表使用者具有唯讀存取權限。

# AWS Amazon EC2 的 受管政策
<a name="security-iam-awsmanpol"></a>

若要新增許可給使用者、群組和角色，使用 AWS 受管政策比自行撰寫政策更容易。建立 [IAM 客戶受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要時間和專業知識，而受管政策可為您的團隊提供其所需的許可。若要快速開始使用，您可以使用我們的 AWS 受管政策。這些政策涵蓋常見的使用案例，並可在您的帳戶中使用 AWS 。如需 AWS 受管政策的詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服務會維護和更新 AWS 受管政策。您無法變更 AWS 受管政策中的許可。服務偶爾會在 AWS 受管政策中新增其他許可以支援新功能。此類型的更新會影響已連接政策的所有身分識別 (使用者、群組和角色)。當新功能啟動或新操作可用時，服務很可能會更新 AWS 受管政策。服務不會從 AWS 受管政策移除許可，因此政策更新不會破壞您現有的許可。

此外， AWS 支援跨多個 服務之任務函數的受管政策。例如，**ReadOnlyAccess** AWS 受管政策提供所有 AWS 服務和資源的唯讀存取權。當服務啟動新功能時， 會為新操作和資源 AWS 新增唯讀許可。如需任務職能政策的清單和說明，請參閱 *IAM 使用者指南*中[有關任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。

## AWS 受管政策： AmazonEC2FullAccess
<a name="security-iam-awsmanpol-AmazonEC2FullAccess"></a>

您可以將 `AmazonEC2FullAccess` 政策連接到 IAM 身分。此政策授與允許完全存取 Amazon EC2的許可。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html)。

## AWS 受管政策： AmazonEC2ReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonEC2ReadOnlyAccess"></a>

您可以將 `AmazonEC2ReadOnlyAccess` 政策連接到 IAM 身分。此政策授予允許對 Amazon EC2 進行唯讀存取的許可。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html)。

## AWS 受管政策： AmazonEC2ImageReferencesAccessPolicy
<a name="security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy"></a>

您可將 `AmazonEC2ImageReferencesAccessPolicy` 政策連接到 IAM 身分。此政策授予使用 EC2 DescribeImageReferences API 所需的許可，包括檢視 EC2 執行個體、啟動範本、Systems Manager 參數，以及 Image Builder 配方的許可。政策支援 `IncludeAllResourceTypes`旗標，並在 AWS 新增對新資源類型的支援時繼續運作，不再需要未來的政策更新。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)。

## AWS 受管政策： AWSEC2CapacityReservationFleetRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy"></a>

此政策連接至名為 **AWSServiceRoleForEC2CapacityReservationFleet** 的服務連結角色，可讓服務代您在容量保留機群中建立、修改，以及取消容量保留。如需詳細資訊，請參閱[使用容量保留機群的服務連結角色使用 EC2 容量管理器的服務連結角色](using-service-linked-roles.md)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html)。

## AWS 受管政策： AWSEC2FleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2FleetServiceRolePolicy"></a>

此政策連接到名為 **AWSServiceRoleForEC2Fleet** 的服務連結角色，允許 EC2 Fleet 代表您請求、啟動、終止和標記執行個體。如需詳細資訊，請參閱[EC2 Fleet 的服務連結角色](ec2-fleet-prerequisites.md#ec2-fleet-service-linked-role)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html)。

## AWS 受管政策： AWSEC2SpotFleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotFleetServiceRolePolicy"></a>

此政策連接到名為 **AWSServiceRoleForEC2SpotFleet** 的服務連結角色，允許 Spot Fleet 代表您啟動和管理執行個體。如需詳細資訊，請參閱[Spot Fleet 的服務連結角色](spot-fleet-prerequisites.md#service-linked-roles-spot-fleet-requests)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html)。

## AWS 受管政策： AWSEC2SpotServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotServiceRolePolicy"></a>

此政策連接到名為 **AWSServiceRoleForEC2Spot** 的服務連結角色，允許 Amazon EC2 代表您啟動和管理 Spot 執行個體。如需詳細資訊，請參閱[Spot 執行個體請求的服務連結角色](service-linked-roles-spot-instance-requests.md)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html)。

## AWS 受管政策： AWSEC2VssSnapshotPolicy
<a name="security-iam-awsmanpol-AWSEC2VssSnapshotPolicy"></a>

您可以將此受管政策連接至您用於 Amazon EC2 Windows 執行個體的 IAM 執行個體設定檔角色。政策授予許可，允許 Amazon EC2 代表您建立和管理 VSS 快照。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html)。

## AWS 受管政策： DeclarativePoliciesEC2Report
<a name="security-iam-awsmanpol-DeclarativePoliciesEC2Report"></a>

此政策可連接至名稱為 `AWSServiceRoleForDeclarativePoliciesEC2Report` 的服務連結角色，以便提供生成宣告式政策的帳戶狀態報告所需的唯讀 API 存取權。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html)。

## AWS 受管政策： EC2FastLaunchFullAccess
<a name="security-iam-awsmanpol-EC2FastLaunchFullAccess"></a>

您可以將 `EC2FastLaunchFullAccess` 政策連接至執行個體設定檔或其他 IAM 角色。此政策授予 EC2 Fast Launch 動作的完整存取權，以及目標許可，如下所示。

**許可詳細資訊**
+ **EC2 快速啟動** – 授予管理存取權，讓角色可以啟用或停用 EC2 快速啟動，並描述 EC2 快速啟動映像。
+ **Amazon EC2** – 授予 Amazon EC2 RunInstances、CreateTags、描述，以及建立和修改啟動範本作業的存取權。此外還會授予建立網路及安全群組資源、授權傳入規則，以及刪除 EC2 Fast Launch 所建立資源的存取權。
+ **IAM** – 授予存取權，以取得和使用名稱包含 `ec2fastlaunch` 的執行個體描述檔來建立 EC2FastLaunchServiceRolePolicy 服務連結角色。
+ **CloudFormation** – 授予 EC2 Fast Launch 描述及建立 CloudFormation 堆疊，以及刪除所建立堆疊的存取權。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html)。

## AWS 受管政策： AWSEC2CapacityManagerServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy"></a>

此政策會連接到名為 的服務連結角色**AWSServiceRoleForEC2CapacityManager**，以允許 EC2 Capacity Manager 代表您管理容量資源並與 AWS Organizations 整合。如需詳細資訊，請參閱 [EC2 容量管理器的服務連結角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-service-linked-roles-cm.html)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html)。

## AWS 受管政策： EC2FastLaunchServiceRolePolicy
<a name="security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy"></a>

此政策連接至名為 **AWSServiceRoleForEC2FastLaunch** 的服務連結角色，以允許 Amazon EC2 建立和管理一組預先佈建的快照，從而減少啟用 EC2 Fast Launch 的 AMI 啟動執行個體所需的時間。如需詳細資訊，請參閱[用於 EC2 Fast Launch 的服務連結角色](slr-windows-fast-launch.md)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html)。

## AWS 受管政策： Ec2InstanceConnect
<a name="Ec2InstanceConnect"></a>

您可將 `Ec2InstanceConnect` 政策連接到 IAM 身分。此政策可授予允許客戶呼叫 EC2 Instance Connect 的許可，以便將臨時性金鑰發布至其 EC2 執行個體，以及透過 ssh 或 EC2 Instance Connect CLI 建立連接。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html)。

## AWS 受管政策： Ec2InstanceConnectEndpoint
<a name="Ec2InstanceConnectEndpoint"></a>

此政策會連接到名為 **AWSServiceRoleForEC2InstanceConnect** 的服務連結角色，它允許 EC2 Instance Connect 端點代表您執行動作。如需詳細資訊，請參閱[EC2 Instance Connect 端點的服務連結角色](eice-slr.md)。

若要檢視此政策的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html)。若要了解此政策更新的相關說明，請參閱 [AWS 受管政策的 Amazon EC2 更新](#security-iam-awsmanpol-updates)。

## AWS 受管政策的 Amazon EC2 更新
<a name="security-iam-awsmanpol-updates"></a>

檢視自此服務開始追蹤 Amazon EC2 AWS 受管政策更新以來的詳細資訊。


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  [AWSEC2CapacityManagerServiceRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy) – 新政策  | Amazon EC2 新增了此政策，可讓您代您管理容量資源並與 AWS Organizations 整合。 | 2025 年 10 月 15 日 | 
|  [AmazonEC2ImageReferencesAccessPolicy](#security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy) – 新政策  | Amazon EC2 新增了此政策，以便提供掃描 EC2 DescribeImageReferences API 支援的全部資源類型的許可。 | 2025 年 8 月 26 日 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) - 更新的政策 | 為支援修改現有的 Instance Connect 端點，Amazon EC2 更新了此政策，以新增在 EC2 Instance Connect 端點建立的網路介面上指派及取消指派 IPv6 位址，以及修改安全群組的許可。Amazon EC2 亦更新了此政策，以便能使用 StringLike 條件運算子來取代 Null 條件運算子。 | 2025 年 7 月 31 日 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) - 更新的政策 | 為協助防止資源孤立，Amazon EC2 更新了此政策，以新增描述磁碟區、磁碟區屬性及網路介面，以及刪除 EC2 Fast Launch 所建立磁碟區及網路介面的許可。 | 2025 年 7 月 17 日 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) - 更新的政策 | Amazon EC2 更新了此政策，以便包括建立及修改啟動範本作業、建立網路及安全群組資源、授權傳入規則，以及刪除 EC2 Fast Launch 所建立的資源。另外，該服務還可描述及建立 CloudFormation 堆疊，以及刪除 EC2 Fast Launch 建立的堆疊。 | 2025 年 5 月 14 日 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) - 更新的政策 | Amazon EC2 更新了此政策，以便新增 Amazon EventBridge 建立及管理 EC2 Fast Launch 事件規則的存取權。此外，EC2 Fast Launch 現在可以描述 CloudFormation 堆疊、從與 相關聯的 AMI 啟動執行個體 AWS License Manager、取得其建立的可淘汰的 AWS KMS 授予清單，以及刪除其建立的啟動範本。 | 2025 年 5 月 14 日 | 
| [AWSEC2CapacityReservationFleetRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy) – 更新的許可 | Amazon EC2 更新了 AWSEC2CapacityReservationFleetRolePolicy 受管政策，可使用 ArnLike 條件運算子而非 StringLike 條件運算子。 | 2025 年 3 月 3 日 | 
| [AmazonEC2ReadOnlyAccess](#security-iam-awsmanpol-AmazonEC2ReadOnlyAccess)：新增許可 | Amazon EC2 新增了可讓您使用 GetSecurityGroupsForVpc 作業來擷取安全群組的許可。 | 2024 年 12 月 27 日 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) – 新政策 | Amazon EC2 新增此政策，以從執行個體執行與 EC2 快速啟動功能相關的 API 動作。政策可以連接到從已啟用 EC2 快速啟動的 AMI 啟動之執行個體的執行個體設定檔。 | 2024 年 5 月 14 日 | 
| [AWSEC2VssSnapshotPolicy](#security-iam-awsmanpol-AWSEC2VssSnapshotPolicy) – 新政策 | Amazon EC2 已新增 AWSEC2VssSnapshotPolicy 政策，其中包含建立標籤並將其新增至 Amazon Machine Image (AMIs) 和 EBS 快照的許可。 | 2024 年 3 月 28 日 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) – 新政策 | Amazon EC2 新增了 Ec2InstanceConnectEndpoint 政策。此政策可連接至 AWSServiceRoleForEC2InstanceConnect 服務連結角色，以便您建立 EC2 Instance Connect 端點時，允許 Amazon EC2 代表您執行操作。 | 2023 年 1 月 24 日 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – 新政策 | Amazon EC2 新增了 EC2 Fast Launch 功能，其透過建立一組預先佈建的快照，讓 Windows AMI 能夠更快速地啟動執行個體。 | 2021 年 11 月 26 日 | 
| Amazon EC2 開始追蹤變更 | Amazon EC2 開始追蹤其 AWS 受管政策的變更 | 2021 年 3 月 1 日 | 

# Amazon EC2 的 IAM 的角色
<a name="iam-roles-for-amazon-ec2"></a>

應用程式必須使用 AWS 登入資料簽署其 API 請求。因此，若您是應用程式開發人員，對於在 EC2 執行個體上運作的應用程式，您會需要其登入資料的管理策略。例如，您可安全將 AWS 登入資料分配給執行個體，讓在這些執行個體上運作的應用程式能夠使用此登入資料來簽署請求，同時避免其他使用者取得您的登入資料。不過，將登入資料安全地分發給每個執行個體是一項挑戰，尤其是代表您 AWS 建立的執行個體，例如 Spot 執行個體或 Auto Scaling 群組中的執行個體。當您輪換登入資料時，也必須能夠更新每個執行個體上的 AWS 登入資料。

我們設計的 IAM 角色，讓您的應用程式能夠從執行個體安全提出 API 請求，您無須管理應用程式使用的安全登入資料。您可以委派許可使用 IAM 角色提出 API 請求，而不是建立和分發您的 AWS 登入資料，如下所示：

1. 建立 IAM 角色。

1. 定義哪些帳戶 AWS 或服務可以擔任該角色。

1. 定義應用程式在角色擔任後可使用的 API 動作與資源。

1. 啟動執行個體時指定該角色，或將該角色連接至現有執行個體。

1. 讓應用程式擷取一組暫時登入資料並加以使用。

例如，若執行於您執行個體上的應用程式需要使用 Amazon S3 內的儲存貯體，您可使用 IAM 角色為其授予許可。您可建立 JSON 格式的政策，藉此指定 IAM 角色的許可。這些政策類似於您為使用者建立的政策。若您變更角色，此變更會傳播至所有執行個體。

**注意**  
Amazon EC2 IAM 角色登入資料不受角色中設定的工作階段持續時間上限限制。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

建立 IAM 角色時，請與最低權限 IAM 政策建立關聯，以限制對應用程式所需之特定 API 呼叫的存取。對於 Windows 至 Windows 通訊，請使用妥善定義且妥善記載的 Windows 群組和角色，授與 Windows 執行個體之間的應用程式層級存取權。群組和角色可讓客戶定義最低權限應用程式和 NTFS 資料夾層級許可，以限制對應用程式特定需求的存取。

雖然您只能將一個 IAM 角色連接到一個執行個體中，但您可以將相同的角色連接到多個執行個體中。如需建立 IAM 角色的詳細資訊，請參閱*IAM 使用者指南*中的[角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

您可將資源層級許可套用至 IAM 政策，藉此控制使用者連接、取代或分離執行個體的 IAM 角色的能力。如需詳細資訊，請參閱 [Amazon EC2 API 動作支援的資源層級許可](iam-policies-for-amazon-ec2.md#ec2-supported-iam-actions-resources)及下列範例：[範例：使用 IAM 角色](ExamplePolicies_EC2.md#iam-example-iam-roles)。

**Topics**
+ [

## 執行個體描述檔
](#ec2-instance-profile)
+ [

## 許可使用案例
](#generate-policy-for-iam-role)
+ [擷取安全登入資料](instance-metadata-security-credentials.md)
+ [准許將磁碟連接至執行個體](permission-to-pass-iam-roles.md)
+ [將 角色連接至執行個體](attach-iam-role.md)
+ [執行個體身分角色](#ec2-instance-identity-roles)

## 執行個體描述檔
<a name="ec2-instance-profile"></a>

Amazon EC2 會使用*執行個體描述檔*做為 IAM 角色的容器。使用 IAM 主控台建立 IAM 角色時，主控台會自動建立執行個體描述檔，並將其命名為與對應角色相同的名稱。若您使用 Amazon EC2 主控台來啟動具備 IAM 角色的執行個體，或使用該主控台將 IAM 角色連接至執行個體，您須根據執行個體描述檔名稱清單來選擇角色。

如果您使用 AWS CLI、 API 或 AWS SDK 來建立角色，則可以將角色和執行個體描述檔建立為個別動作，名稱可能不同。如果您接著使用 AWS CLI、 API 或 AWS 開發套件來啟動具有 IAM 角色的執行個體，或將 IAM 角色連接至執行個體，請指定執行個體設定檔名稱。

執行個體描述檔內僅有一個 IAM 角色。您可在多個執行個體設定檔中包括 IAM 角色。

如需更新執行個體的許可，請取代其執行個體設定檔。不建議從執行個體設定檔中移除角色，因為最多需要延遲一小時，此變更才生效。

如需詳細資訊，請參閱 *IAM 使用者指南* 中的[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。

## 許可使用案例
<a name="generate-policy-for-iam-role"></a>

當您第一次為應用程式建立 IAM 角色時，有時可能會授予超出所需的許可。在生產環境中啟動應用程式之前，您可以根據 IAM 角色的存取活動產生 IAM 政策。IAM Access Analyzer 會檢閱您的 AWS CloudTrail 日誌，並產生政策範本，其中包含角色在指定日期範圍內已使用的許可。您可以使用範本建立具有精細許可的受管政策，然後將其連接至 IAM 角色。如此一來，您只會授予角色與特定使用案例 AWS 的資源互動所需的許可。這有助於您符合[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)的最佳實務。如需更多資訊，請參閱「IAM 使用者指南」**中的 [IAM Access Analyzer 政策驗證](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)。

# 從執行個體中繼資料中擷取安全登入資料
<a name="instance-metadata-security-credentials"></a>

執行個體上的應用程式會從執行個體中繼資料項目 `iam/security-credentials/`*role-name*，擷取角色提供的安全登入資料。如此即授予該應用程式許可，能夠執行您在建立角色與安全登入資料的關聯時所定義的角色動作與資源。這些安全登入資料為暫時的，我們會定期更換。舊的登入資料過期前至少五分鐘，我們就會提供新的登入資料。

如需執行個體中繼資料的詳細資訊，請參閱[使用執行個體中繼資料管理您的 EC2 執行個體](ec2-instance-metadata.md)。

**警告**  
若您使用的服務會運用具備 IAM 角色的執行個體中繼資料，請確認該服務代您發出 HTTP 呼叫時不會暴露您的登入資料。可能會暴露登入資料的服務類型包括 HTTP 代理、HTML/CSS 驗證器服務和支援納入 XML 的 XML 處理器。

對於 Amazon EC2 工作負載，建議您使用下述方法擷取工作階段憑證。這些憑證應該可讓您的工作負載發起 AWS API 請求，而無需使用 `sts:AssumeRole` 擔任已與執行個體相關聯的相同角色。除非您需要為屬性型存取控制 (ABAC) 傳遞工作階段標籤，或需要傳遞工作階段政策以進一步限制角色權限，否則此類角色擔任呼叫是不必要的，因為它們會建立一組新的相同的臨時角色工作階段憑證。

如果您的工作負載使用角色來擔任它自己，則必須建立信任政策，明確允許該角色擔任它自己。如果您不建立信任政策，會得到 `AccessDenied` 錯誤。如需了解詳細資訊，請參閱 *IAM 使用者指南*中的[更新角色信任政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html)。

------
#### [ IMDSv2 ]

**Linux**  
透過 Linux 執行個體執行下面的命令，可擷取 IAM 角色的安全憑證。

```
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" http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
透過 Windows 執行個體執行下面的 cmdlet，可擷取 IAM 角色的安全憑證。

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------
#### [ IMDSv1 ]

**Linux**  
透過 Linux 執行個體執行下面的命令，可擷取 IAM 角色的安全憑證。

```
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
透過 Windows 執行個體執行下面的 cmdlet，可擷取 IAM 角色的安全憑證。

```
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------

以下為範例輸出。如果您無法擷取安全登入資料，請參閱「IAM 使用者指南」**中的[無法存取 EC2 執行個體上的臨時安全登入資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_no-keys)。

```
{
  "Code" : "Success",
  "LastUpdated" : "2012-04-26T16:39:16Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
  "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "Token" : "token",
  "Expiration" : "2017-05-17T15:09:54Z"
}
```

對於在執行個體上執行的應用程式 AWS CLI、 和 Tools for Windows PowerShell 命令，您不需要明確取得臨時安全登入資料 - Windows PowerShell AWS SDKs AWS CLI、 和 Tools 會自動從 EC2 執行個體中繼資料服務取得登入資料並使用它們。欲使用暫時安全登入資料在執行個體外部進行呼叫 (如為了測試 IAM 政策)，您必須提供存取金鑰、私有金鑰和工作階段字符。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用暫時安全登入資料來請求存取 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

# 授予 IAM 使用者將 IAM 角色傳遞至執行個體的許可
<a name="permission-to-pass-iam-roles"></a>

IAM 使用者等 中的身分必須具有特定許可 AWS 帳戶，才能使用 IAM 角色啟動 Amazon EC2 執行個體、將 IAM 角色連接至執行個體、取代執行個體的 IAM 角色，或從執行個體分離 IAM 角色。您必須視需要授予使用下列 API 動作的許可：
+ `iam:PassRole`
+ `ec2:AssociateIamInstanceProfile`
+ `ec2:DisassociateIamInstanceProfile`
+ `ec2:ReplaceIamInstanceProfileAssociation`

**注意**  
如果您將 `iam:PassRole` 資源指定為 `*`，這將授予您的任何 IAM 角色傳遞給執行個體的存取權限。若要遵循[最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)的最佳實務，請使用 `iam:PassRole` 指定特定 IAM 角色ARNs，如以下範例政策所示。

**程式設計存取的範例政策**  
下列 IAM 政策授予許可，以使用 IAM 角色啟動執行個體、將 IAM 角色連接至執行個體，或使用 AWS CLI 或 Amazon EC2 API 取代執行個體的 IAM 角色。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances",
         "ec2:AssociateIamInstanceProfile",
         "ec2:DisassociateIamInstanceProfile",
         "ec2:ReplaceIamInstanceProfileAssociation"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/DevTeam*"
    }
  ]
}
```

------

**主控台存取的其他要求**  
若要授予使用 Amazon EC2 主控台完成相同任務的許可，您還必須包含 `iam:ListInstanceProfiles` API 動作。

# 將 IAM 角色連接至執行個體
<a name="attach-iam-role"></a>

您可建立 IAM 角色，並在啟動期間或之後將其連接至執行個體。您也可以取代或分離 IAM 角色。

**在執行個體啟動期間建立和連接 IAM 角色 （建議）**

1. 在 EC2 執行個體啟動期間，展開**進階詳細資訊**。

1. 在 **IAM 執行個體設定檔**區段中，選擇**建立新的 IAM 角色**。

1. 會開啟內嵌角色建立表單，讓您：
   + 指定**角色名稱** （例如 `EC2-S3-Access-Role`)
   + 透過選取 AWS 受管政策或為您的執行個體建立自訂政策來定義許可

     例如，若要授予 S3 存取權，請選取 `AmazonS3ReadOnlyAccess` 受管政策
   + 檢閱允許 `ec2.amazonaws.com`擔任角色的信任政策
   + 新增中繼資料的選用標籤

1. 選擇建**立角色**。

   系統會自動選取新建立的角色，並在執行個體啟動時透過執行個體描述檔連接至您的執行個體。

**注意**  
當您在執行個體啟動期間使用主控台建立角色時，會自動建立與角色同名的執行個體描述檔。執行個體描述檔是在啟動時將 IAM 角色資訊傳遞給執行個體的容器。

**重要**  
雖然您只能將一個 IAM 角色連接到一個執行個體中，但您可以將相同的角色連接到多個執行個體中。
關聯限制存取應用程式所需特定 API 呼叫的最低權限 IAM 政策。

如需建立 IAM 角色的詳細資訊，請參閱*IAM 使用者指南*中的[角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**在執行個體啟動期間連接現有的 IAM 角色**  
若要使用 Amazon EC2 主控台在啟動時將現有的 IAM 角色連接至執行個體，請展開**進階詳細資訊**。針對 **IAM 執行個體描述檔**，從下拉式清單中選取 IAM 角色。

**注意**  
若您已使用主控台建立 IAM 角色，則會為您建立執行個體設定檔，且其名稱會與該角色相同。如果您使用 AWS CLI、 API 或 AWS SDK 建立 IAM 角色，您可能已為執行個體描述檔指定與該角色不同的名稱。

您可以將 IAM 角色連接至正在執行或已停止的執行個體。如果執行個體已連接 IAM 角色，您必須將其取代為新的 IAM 角色。

------
#### [ Console ]<a name="attach-iam-role-console"></a>

**將 IAM 角色連接至執行個體 (主控台)**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 IAM 角色)。

1. 為 **IAM 角色**，選擇 IAM 執行個體設定檔。

1. 選擇**更新 IAM 角色**。

------
#### [ AWS CLI ]
<a name="attach-iam-role-instance-cli"></a>
**將 IAM 角色連接至執行個體 (主控台)**  
使用 [associate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) 命令，將 IAM 角色連接至執行個體。當您指定執行個體設定檔時，您可以使用執行個體設定檔的 Amazon Resource Name (ARN)，也可以使用其名稱。

```
aws ec2 associate-iam-instance-profile \
    --instance-id i-1234567890abcdef0 \
    --iam-instance-profile Name="TestRole-1"
```

------
#### [ PowerShell ]

**將 IAM 角色連接至執行個體 (主控台)**  
使用 [Register-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2IamInstanceProfile.html) cmdlet。

```
Register-EC2IamInstanceProfile `
    -InstanceId i-1234567890abcdef0 `
    -IamInstanceProfile_Name TestRole-1
```

------

若要取代已擁有連接 IAM 角色之執行個體上的 IAM 角色，則執行個體必須處於執行中狀態。如果您想要變更執行個體上的 IAM 角色，但不中斷現有的角色，您可以這麼做。例如，您可以這麼做確保執行個體上應用程式執行的 API 動作不會中斷。

------
#### [ Console ]<a name="replace-iam-role-console"></a>

**取代執行個體的 IAM 角色**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 IAM 角色)。

1. 為 **IAM 角色**，選擇 IAM 執行個體設定檔。

1. 選擇**更新 IAM 角色**。

------
#### [ AWS CLI ]<a name="replace-iam-role-cli"></a>

**取代執行個體的 IAM 角色**

1. 視需要使用 [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) 命令來獲取關聯 ID。

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. 請使用 [replace-iam-instance-profile-association](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-iam-instance-profile-association.html) 命令。指定現有執行個體設定檔的關聯 ID，以及新的執行個體設定檔的 ARN 或名稱。

   ```
   aws ec2 replace-iam-instance-profile-association \
       --association-id iip-assoc-0044d817db6c0a4ba \
       --iam-instance-profile Name="TestRole-2"
   ```

------
#### [ PowerShell ]

**取代執行個體的 IAM 角色**

1. 視需要使用 [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) cmdlet 來獲取關聯 ID。

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. 使用 [Set-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2IamInstanceProfileAssociation.html) cmdlet。指定現有執行個體設定檔的關聯 ID，以及新的執行個體設定檔的 ARN 或名稱。

   ```
   Set-EC2IamInstanceProfileAssociation `
       -AssociationId iip-assoc-0044d817db6c0a4ba `
       -IamInstanceProfile_Name TestRole-2
   ```

------

您可透過執行中或已停止的執行個體來分離 IAM 角色。

------
#### [ Console ]<a name="detach-iam-role-console"></a>

**分離 IAM 角色和執行個體**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 IAM 角色)。

1. 針對 **IAM role (IAM 角色)**，選擇 **No IAM Role (無 IAM 角色)**。

1. 選擇**更新 IAM 角色**。

1. 出現確認提示時，請輸入**分離**，然後選擇**分離**。

------
#### [ AWS CLI ]<a name="detach-iam-role-cli"></a>

**分離 IAM 角色和執行個體**

1. 視需要使用 [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html)，來獲取 IAM 執行個體設定檔欲分離的關聯 ID。

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. 請使用 [disassociate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) 命令。

   ```
   aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0044d817db6c0a4ba
   ```

------
#### [ PowerShell ]

**分離 IAM 角色和執行個體**

1. 視需要使用 [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html)，來獲取 IAM 執行個體設定檔欲分離的關聯 ID。

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. 使用 [Unregister-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2IamInstanceProfile.html) cmdlet。

   ```
   Unregister-EC2IamInstanceProfile -AssociationId iip-assoc-0044d817db6c0a4ba
   ```

------

## Amazon EC2 執行個體的執行個體身分角色
<a name="ec2-instance-identity-roles"></a>

您啟動的每個 Amazon EC2 執行個體都有一個代表其身分的*執行個體身分角色*。執行個體身分角色是 IAM 角色的一種類型。整合以使用執行個體身分角色 AWS 的服務和功能可以使用它來識別服務的執行個體。

您可以從 `/identity-credentials/ec2/security-credentials/ec2-instance` 的執行個體中繼資料服務 (IMDS) 存取執行個體身分角色憑證。登入資料包含 AWS 臨時存取金鑰對和工作階段字符。它們用於向使用執行個體身分角色 AWS 的服務簽署 AWS Sigv4 請求。無論執行個體上是否已啟用使用執行個體身分角色的服務或功能，憑證都會顯示在執行個體中繼資料中。

執行個體身分角色在執行個體啟動時自動建立，沒有角色信任政策文件，且不受任何身分或資源政策的約束。

### 支援的服務
<a name="iir-supported-services"></a>

下列 AWS 服務使用執行個體身分角色：
+ **Amazon EC2** – [EC2 執行個體連線](connect-linux-inst-eic.md)使用執行個體身分角色來更新 Linux 執行個體的主機金鑰。
+ **Amazon GuardDuty** – [GuardDuty 執行時期監控](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html)會使用執行個體身分角色，允許執行時期代理程式將安全性遙測資料傳送至 GuardDuty VPC 端點。
+ **AWS Lambda** – [Lambda 受管執行個體](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html)會將執行個體身分角色用於生命週期掛鉤、遙測和成品分佈。
+ **AWS Security Token Service (AWS STS)** – 執行個體身分角色登入資料可與 AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html)動作搭配使用。
+ **AWS Systems Manager** – 使用[預設主機管理組態](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-default-host-management-configuration.html)時， AWS Systems Manager 會使用執行個體身分角色提供的身分來註冊 EC2 執行個體。識別執行個體之後，Systems Manager 可將 `AWSSystemsManagerDefaultEC2InstanceManagementRole` IAM 角色傳遞給執行個體。

執行個體身分角色無法與其他 AWS 服務或功能搭配使用，因為它們沒有與執行個體身分角色的整合。

### 執行個體身分角色 ARN
<a name="iir-arn"></a>

執行個體身分角色 ARN 採用下列格式：

```
arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id
```

例如：

```
arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-1234567890abcdef0
```

如需 ARN 的詳細資訊，請參閱「IAM 使用者指南」**中的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。