

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

# 控制 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)。