

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

# Amazon EC2 啟動範本的必要 IAM 許可
<a name="permissions-for-launch-templates"></a>

您可使用 IAM 許可來控制使用者是否可以列出、檢視、建立或是刪除啟動範本或啟動範本版本。

**重要**  
使用者建立啟動範本或啟動範本版本時，您無法使用資源層級許可來限制其能夠在啟動範本中指定的資源。因此，請確定只有受信任的管理員才能獲得建立啟動範本和啟動範本版本的許可。

您必須向任何使用啟動範本的使用者授予所需的許可，以建立及存取啟動範本中指定的資源。例如：
+ 若要從共享私有 Amazon Machine Image (AMI) 啟動執行個體，使用者必須具有 AMI 的啟動許可。
+ 若要使用現有快照的標籤來建立 EBS 磁碟區，使用者必須具有快照的讀取存取權，以及建立和標記磁碟區的許可。

**Topics**
+ [ec2:CreateLaunchTemplate](#permissions-for-launch-templates-create)
+ [ec2:DescribeLaunchTemplates](#permissions-for-launch-templates-view)
+ [ec2:DescribeLaunchTemplateVersions](#permissions-for-launch-template-versions-view)
+ [ec2:DeleteLaunchTemplate](#permissions-for-launch-templates-delete)
+ [控制版本控制許可](#permissions-for-launch-template-versions)
+ [控制啟動範本上標籤的存取權](#permissions-for-launch-templates-tags)

## ec2:CreateLaunchTemplate
<a name="permissions-for-launch-templates-create"></a>

若要在主控台中建立啟動範本或使用 API，主體必須具有 IAM 政策中的 `ec2:CreateLaunchTemplate` 許可。盡可能使用標籤來協助控制帳戶中啟動範本的存取權。

例如，下列 IAM 政策陳述式僅在範本使用指定標籤 (*`purpose`*=*`testing`*) 時才授予主體建立啟動範本的許可。

```
{
    "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates",
    "Action": "ec2:CreateLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/purpose": "testing"
        }
    }
}
```

建立啟動範本的主體可能需要一些相關許可，例如：
+ **ec2:CreateTags** – 若要在 `CreateLaunchTemplate` 操作期間將標籤新增至啟動範本，`CreateLaunchTemplate` 發起人必須具有 IAM 政策中的 `ec2:CreateTags` 許可。
+ **ec2:RunInstances** – 若要從其建立的啟動範本啟動 EC2 執行個體，主體也必須具有 IAM 政策中的 `ec2:RunInstances` 許可。

針對套用標籤的資源建立動作，使用者必須具有 `ec2:CreateTags` 許可。如下 IAM 政策陳述式使用 `ec2:CreateAction` 條件索引鍵允許使用者僅在 `CreateLaunchTemplate` 的內容中建立標籤。使用者無法為現有啟動範本或任何其他資源套用標籤。如需詳細資訊，請參閱[在建立期間授予標籤 Amazon EC2 資源的許可](supported-iam-actions-tagging.md)。

```
{
    "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation",
    "Action": "ec2:CreateTags",
    "Effect": "Allow",
    "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
    "Condition": {
        "StringEquals": {
            "ec2:CreateAction": "CreateLaunchTemplate"
        }
    }
}
```

建立啟動範本的 IAM 使用者不會自動擁有使用其所建立啟動範本的許可。與任何其他主體一樣，啟動範本建立者必須透過 IAM 政策取得許可。如果 IAM 使用者想要從啟動範本啟動 EC2 執行個體，他們必須具有 `ec2:RunInstances` 許可。授予這些許可時，您可以指定使用者只能使用具有特定標籤或特定 ID 的啟動範本。您也可以控制 AMI 和其他資源，讓使用啟動範本的任何人都可以在啟動執行個體時參照和使用，方法是指定 `RunInstances` 呼叫的資源層級許可。如需範例政策，請參閱 [啟動範本](ExamplePolicies_EC2.md#iam-example-runinstances-launch-templates)。

## ec2:DescribeLaunchTemplates
<a name="permissions-for-launch-templates-view"></a>

若要列出並檢視帳戶中的啟動範本，主體必須具有 IAM 政策中的 `ec2:DescribeLaunchTemplates` 許可。因為 `Describe` 動作不支援資源層級許可，您必須在沒有條件的情況下指定它們，且政策中資源元素的值必須為 `"*"`。

例如，下列 IAM 政策陳述式會授予主體許可，以列出並檢視帳戶中的所有啟動範本。

```
{
    "Sid": "IAMPolicyForDescribingLaunchTemplates",
    "Action": "ec2:DescribeLaunchTemplates",
    "Effect": "Allow",
    "Resource": "*"
}
```

## ec2:DescribeLaunchTemplateVersions
<a name="permissions-for-launch-template-versions-view"></a>

列出並檢視啟動範本的主體也應具有擷取組成啟動範本之整組屬性的 `ec2:DescribeLaunchTemplateVersions` 許可。

若要列出並檢視帳戶中的啟動範本版本，主體必須具有 IAM 政策中的 `ec2:DescribeLaunchTemplateVersions` 許可。因為 `Describe` 動作不支援資源層級許可，您必須在沒有條件的情況下指定它們，且政策中資源元素的值必須為 `"*"`。

例如，下列 IAM 政策陳述式會授予主體許可，以列出並檢視帳戶中的所有啟動範本。

```
{
    "Sid": "IAMPolicyForDescribingLaunchTemplateVersions",
    "Effect": "Allow",
    "Action": "ec2:DescribeLaunchTemplateVersions",
    "Resource": "*"
}
```

## ec2:DeleteLaunchTemplate
<a name="permissions-for-launch-templates-delete"></a>

**重要**  
在授予主體刪除資源的許可時，您應該小心謹慎。刪除啟動範本可能會導致依賴啟動範本的 AWS 資源失敗。

若要刪除啟動範本，主體必須具有 IAM 政策中的 `ec2:DeleteLaunchTemplate` 許可。盡可能使用以標籤為基礎的條件索引鍵以限制許可。

例如，下列 IAM 政策陳述式僅在範本具有指定標籤 (*`purpose`*=*`testing`*) 時，才授予主體刪除啟動範本的許可。

```
{
    "Sid": "IAMPolicyForDeletingLaunchTemplates",
    "Action": "ec2:DeleteLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/purpose": "testing"
        }
    }
}
```

或者，您可以使用 ARN 來辨識 IAM 政策適用的啟動範本。

啟動範本具有下列 ARN。

```
"Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e"
```

您可以透過將其包含在清單中來指定多個 ARN，也可以指定 `"*"` 的 `Resource` 值 (沒有 `Condition` 元素)，以允許主體者刪除帳戶中的任何啟動範本。

## 控制版本控制許可
<a name="permissions-for-launch-template-versions"></a>

對於受信任的管理員，您可以使用類似下列範例的 IAM 政策，授予建立和刪除啟動範本版本的存取權，以及變更啟動範本預設版本的存取權。

**重要**  
授與主體建立啟動範本版本或修改啟動範本的許可時，請務必小心謹慎。  
當您建立啟動範本版本時，您會影響任何允許 Amazon EC2 以 `Latest` 版本代表您啟動執行個體的 AWS 資源。
當您修改啟動範本時，可以變更哪個版本是 ，`Default`因此會影響允許 Amazon EC2 使用此修改版本代表您啟動執行個體的任何 AWS 資源。
您也需要謹慎處理與 `Latest`或 `Default`啟動範本版本互動 AWS 的資源，例如 EC2 Fleet 和 Spot Fleet。當針對 `Latest` 或 `Default` 使用不同的啟動範本版本時，Amazon EC2 在啟動新執行個體以滿足機群的目標容量時，不會重新檢查完成動作所需的使用者許可，因此沒有使用者與  AWS  資源的互動。透過授與使用者呼叫 `CreateLaunchTemplateVersion` 和 `ModifyLaunchTemplate` API 的許可，如果使用者將機群指向含有執行個體設定檔 (IAM 角色的容器) 的不同啟動範本版本，則該使用者實際上也會獲得 `iam:PassRole` 許可。這表示使用者可能會更新啟動範本，以將 IAM 角色傳遞給執行個體 (即使執行個體沒有 `iam:PassRole` 許可)。在將許可授予可建立和管理啟動範本版本的使用者時保持謹慎，即可妥善管理此風險。

### ec2:CreateLaunchTemplateVersion
<a name="permissions-for-launch-template-versions-create"></a>

若要建立啟動範本的新版本，主體必須具有 IAM 政策中啟動範本的 `ec2:CreateLaunchTemplateVersion` 許可。

例如，下列 IAM 政策陳述式僅在版本使用指定標籤 (*`environment`*=*`production`*) 時才授予主體建立啟動範本版本的許可。或者，您可以指定一或多個啟動範本 ARN，也可以指定 `"*"` 的 `Resource` 值 (沒有 `Condition` 元素)，以允許主體在帳戶中建立任何啟動範本的版本。

```
{
    "Sid": "IAMPolicyForCreatingLaunchTemplateVersions",
    "Action": "ec2:CreateLaunchTemplateVersion",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

### ec2:DeleteLaunchTemplateVersion
<a name="permissions-for-launch-template-versions-delete"></a>

**重要**  
一如往常，在授予委託人刪除資源的許可時，您應該小心謹慎。刪除啟動範本版本可能會導致依賴啟動範本版本的 AWS 資源失敗。

若要刪除啟動範本版本，主體必須具有 IAM 政策中啟動範本的 `ec2:DeleteLaunchTemplateVersion` 許可。

例如，下列 IAM 政策陳述式僅在版本使用指定標籤 (*`environment`*=*`production`*) 時才授予主體刪除啟動範本版本的許可。或者，您可以指定一或多個啟動範本 ARN，也可以指定 `"*"` 的 `Resource` 值 (沒有 `Condition` 元素)，以允許主體在帳戶中刪除任何啟動範本的版本。

```
{
    "Sid": "IAMPolicyForDeletingLaunchTemplateVersions",
    "Action": "ec2:DeleteLaunchTemplateVersion",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

### ec2:ModifyLaunchTemplate
<a name="permissions-for-launch-templates-update"></a>

若要變更與啟動範本相關聯的 `Default` 版本，主體必須具有IAM 政策中啟動範本的 `ec2:ModifyLaunchTemplate` 許可。

例如，下列 IAM 政策陳述式僅在啟動範本使用指定標籤 (*`environment`*=*`production`*) 時才授予主體修改啟動範本的許可。或者，您可以指定一或多個啟動範本 ARN，也可以指定 `"*"` 的 `Resource` 值 (沒有 `Condition` 元素)，以允許主體在帳戶中修改任何啟動範本。

```
{
    "Sid": "IAMPolicyForModifyingLaunchTemplates",
    "Action": "ec2:ModifyLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

## 控制啟動範本上標籤的存取權
<a name="permissions-for-launch-templates-tags"></a>

當資源為啟動範本時，您可以使用條件索引鍵來限制標記許可。例如，下列 IAM 政策只允許從指定帳戶或區域中的啟動範本移除具有 `temporary` 索引鍵的標籤。

```
{
    "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates",
    "Action": "ec2:DeleteTags",
    "Effect": "Allow",
    "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
    "Condition": {
        "ForAllValues:StringEquals": {
            "aws:TagKeys": ["temporary"]
        }
    }
}
```

如需可用於控制可套用至 Amazon EC2 資源之標籤索引鍵和值的條件索引鍵的詳細資訊，請參閱 [控制對特定標籤的存取](supported-iam-actions-tagging.md#control-tagging)。