

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

# AWS Service Catalog 啟動限制條件
<a name="constraints-launch"></a>

啟動限制條件指定最終使用者啟動、更新或終止產品時 AWS Service Catalog 擔任的 AWS Identity and Access Management (IAM) 角色。IAM 角色是使用者或服務 AWS 可暫時擔任以使用 AWS 服務的許可集合。如需簡介範例，請參閱：
+ CloudFormation 產品類型： [步驟 6：新增啟動限制以指派 IAM 角色](getstarted-launchconstraint.md)
+ Terraform 開放原始碼或 Terraform Cloud 產品類型： [步驟 5：建立啟動角色](getstarted-launchrole-Terraform.md)

啟動限制條件適用於產品組合中的產品 （產品產品組合關聯）。啟動限制不適用於產品組合層級或所有產品組合的產品。若要將啟動限制與產品組合中的產品建立關聯，您必須將啟動限制個別套用至每個產品。

如果沒有啟動限制，最終使用者必須使用自己的 IAM 登入資料來啟動和管理產品。若要這樣做，他們必須擁有 的許可 CloudFormation、產品使用 AWS 的服務，以及 AWS Service Catalog。透過使用啟動角色，您可以改為將最終使用者的許可限制為該產品所需的最低許可。如需有關最終使用者權限的詳細資訊，請參閱 [中的身分和存取管理 AWS Service Catalog](controlling_access.md)。

若要建立和指派 IAM 角色，您必須具有下列 IAM 管理許可：
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:PassRole`
+ `iam:Get*`
+ `iam:List*`

## 設定啟動角色
<a name="constraints-launch-role"></a>

您指派給產品做為啟動限制條件的 IAM 角色必須具有使用下列項目的許可：

**對於 Cloudformation 產品**
+ `arn:aws:iam::aws:policy/AWSCloudFormationFullAccess` CloudFormation 受管政策
+ 產品 AWS CloudFormation 範本中的服務
+ 讀取服務擁有的 Amazon S3 儲存貯體中的 AWS CloudFormation 範本存取權。

**對於 Terraform 產品**
+ 產品 Amazon S3 範本中的服務
+ 在服務擁有的 Amazon S3 儲存貯體中讀取對 Amazon S3 範本的存取權。
+ `resource-groups:Tag`在 Amazon EC2 執行個體中標記 （在執行佈建操作時由 Terraform 佈建引擎擔任）
+ `resource-groups:CreateGroup` 用於資源群組標記 （由 擔任 AWS Service Catalog ，以建立資源群組並指派標籤） 

IAM 角色的信任政策必須允許 AWS Service Catalog 擔任該角色。在下列程序中，當您選取 AWS Service Catalog 做為角色類型時，會自動設定信任政策。如果您不是使用 主控台，請參閱如何搭配 IAM *角色使用信任政策中為擔任角色 AWS 的服務建立*信任政策一節。 [https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)

**注意**  
`servicecatalog:ProvisionProduct`、`servicecatalog:TerminateProvisionedProduct` 及 `servicecatalog:UpdateProvisionedProduct` 權限無法以啟動角色指派。您必須使用 IAM 角色，如[授予許可給 AWS Service Catalog 最終使用者一節中的內嵌政策步驟所示。](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html)

**注意**  
若要在 AWS Service Catalog 主控台中檢視佈建的 Cloudformation 產品和資源，最終使用者需要 CloudFormation 讀取存取權。在主控台中檢視佈建的產品和資源**不會**使用 啟動角色。

**建立啟動角色**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   Terraform 產品需要額外的啟動角色組態。如需詳細資訊，請參閱 *Terraform Open Source 產品入門*中的[步驟 5：建立啟動角色](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchrole-Terraform)。

1. 選擇**角色**。

1. 選擇 **Create New Role** (建立新角色)。

1. 輸入角色名稱，然後選擇 **Next Step** (下一步)。

1. 在 旁的**AWS 服務角色**下**AWS Service Catalog**，選擇**選取**。

1. 在 **Attach Policy** (連接政策) 頁面上，選擇 **Next Step** (下一步)。

1. 若要建立角色，請選擇 **Create Role** (建立角色)。

**將政策連接到新的角色**

1. 選取您建立的角色以檢視該角色的詳細資訊頁面。

1. 選擇 **Permissions** (許可) 索引標籤，然後展開 **Inline Policies** (內嵌政策) 區段。然後，選擇 **click here** (按一下這裡)。

1. 選擇 **Custom Policy** (自訂政策)，然後選擇 **Select** (選取)。

1. 輸入原則的名稱，然後將以下內容貼到 **Policy Document** (政策文件) 編輯器：

   ```
     
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**注意**  
當您設定啟動限制條件的啟動角色時，您必須使用此字串：`"s3:ExistingObjectTag/servicecatalog:provisioning":"true"`。

1. 針對產品使用的每個額外服務，將一行新增至政策。例如，若要新增 Amazon Relational Database Service (Amazon RDS) 的許可，請在`Action`清單中最後一行的結尾輸入逗號，然後新增下列行：

   ```
   "rds:*"
   ```

1. 選擇 **Apply Policy** (套用政策) 

## 套用啟動限制
<a name="constraints-launch-constraint"></a>

設定啟動角色之後，請將角色指派給產品做為啟動限制條件。此動作 AWS Service Catalog 會指示 在最終使用者啟動產品時擔任該角色。

**將角色指派至產品**

1. 在 https：//[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) 開啟 Service Catalog 主控台。

1. 選擇包含該產品的產品組合。

1. 選擇 **Constraints (限制)** 索引標籤，並選擇 **Create constraint (建立限制)**。

1. 從產品中選擇**產品**，然後在**限制類型**下選擇**啟動**。選擇**繼續**。

1. 在**啟動限制區段**中，您可以從您的帳戶選取 IAM 角色，然後輸入 IAM 角色 ARN，或輸入角色名稱。

   如果您指定角色名稱，且帳戶使用啟動限制，則帳戶會針對 IAM 角色使用該名稱。此方法可讓啟動角色限制與帳戶無關，因此您可以為每個共用帳戶建立較少的資源。
**注意**  
指定的角色名稱必須存在於建立啟動限制的帳戶中，以及使用此啟動限制啟動產品的使用者帳戶中。

1. 指定 IAM 角色後，選擇 **Create (建立)**。

## 新增混淆代理人以啟動限制條件
<a name="constraint-confused-deputy"></a>

AWS Service Catalog 支援使用擔任角色請求執行APIs 的[混淆代理人](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)保護。當您新增啟動限制條件時，您可以使用啟動角色信任政策中的 `sourceAccount`和 `sourceArn`條件來限制啟動角色存取。它可確保由信任的來源呼叫啟動角色。

在下列範例中， AWS Service Catalog 最終使用者屬於帳戶 111111111111。當 AWS Service Catalog 管理員`LaunchConstraint`為產品建立 時，最終使用者可以在啟動角色信任政策中指定下列條件，將擔任角色限制為帳戶 111111111111。

```
"Condition":{
   "ArnLike":{
      "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*"
   },
   "StringEquals":{
      "aws:SourceAccount":"111111111111"
   }
  
}
```

使用 佈建產品的使用者`LaunchConstraint`必須具有相同的 `AccountId` (111111111111)。如果沒有，操作會失敗並顯示`AccessDenied`錯誤，防止啟動角色濫用。

以下 AWS Service Catalog APIs受到混淆代理人保護：
+ `LaunchConstraint`
+ `ProvisionProduct`
+ `UpdateProvisionedProduct`
+ `TerminateProvisionedProduct`
+ `ExecuteProvisionedProductServiceAction`
+ `CreateProvisionedProductPlan`
+ `ExecuteProvisionedProductPlan`

的`sourceArn `保護 AWS Service Catalog 僅支援範本 ARNs，例如 "`arn:<aws-partition>:servicecatalog:<region>:<accountId>:`" 它不支援特定資源 ARNs。

## 驗證啟動限制條件
<a name="constraints-launch-test"></a>

若要驗證 AWS Service Catalog 使用 角色來啟動產品並成功佈建產品，請從 AWS Service Catalog 主控台啟動產品。若要在發佈至使用者之前測試限制，請建立包含相同產品的測試產品組合，然後以該產品組合測試限制。

**啟動產品**

1. 在 AWS Service Catalog 主控台的功能表中，選擇 **Service Catalog**，**最終使用者**。

1. 選擇產品以開啟**產品詳細資訊**頁面。在**啟動選項**表格中，確認角色的 Amazon Resource Name (ARN) 出現。

1. 選擇**啟動產品**。

1. 繼續啟動步驟，填寫任何必要的資訊。

1. 確認產品已成功啟動。