

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 Open Source または Terraform Cloud 製品タイプ: [ステップ 5: 起動ロールを作成する](getstarted-launchrole-Terraform.md)

起動制約は、ポートフォリオ (製品 - ポートフォリオの関連付け) 内の製品に適用されます。起動制約は、ポートフォリオレベルやすべてのポートフォリオにわたる製品に対して適用されません。起動の制約をポートフォリオ内のすべての製品に関連付けるには、起動の制約を各製品に個別に適用する必要があります。

起動制約がない場合、エンドユーザーは各自の IAM 認証情報を使用して製品を起動し、管理する必要があります。そのためには、製品で使用する AWS サービス CloudFormation、および に対するアクセス許可が必要です AWS Service Catalog。起動ロールを使用することにより、エンドユーザーのアクセス権限をその製品に必要な最小限のものに制限することができます。エンドユーザーのアクセス権限の管理の詳細については、「[での Identity and Access Management 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 テンプレートへの読み取りアクセス。
+ Amazon EC2 インスタンスでの `resource-groups:Tag` タグ付け用 (プロビジョニング操作の実行時に 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` のアクセス権限を起動ロールで割り当てることはできません。「[AWS Service Catalog エンドユーザーにアクセス許可を付与する](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html)」セクションのインラインポリシーの手順に示されているように、IAM ロールを使用する必要があります。

**注記**  
 AWS Service Catalog コンソールでプロビジョニングされた Cloudformation 製品とリソースを表示するには、エンドユーザーに CloudFormation 読み取りアクセスが必要です。プロビジョニングされた製品とリソースをコンソールで表示しても、起動ロールは**使用されません**。

**起動ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/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 Service Catalog**] の隣の [**AWS サービスロール**] で、[**選択**] を選択します。

1. [**Attach Policy**] ページで、[**Next Step**] を選択します。

1. ロールを作成するには、[**Create Role**] を選択します。

**ポリシーを新しいロールにアタッチするには**

1. 作成したロールを選択して、[role details] ページを表示します。

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. **[ポリシーを適用]** を選びます。

## 起動制約の適用
<a name="constraints-launch-constraint"></a>

起動ロールを設定したら、起動制約として製品にロールを割り当てます。このアクションは、エンドユーザーが製品を起動するときにロールを引き受け AWS Service Catalog るように に指示します。

**製品にロールに割り当てるには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 製品を含むポートフォリオを選択します。

1. **[制約]** タブを選択して、**[制約の作成]** を選択します。

1. [**製品**] から製品を選択し、**[制約タイプ]** の [**起動**] を選択します。**[続行]** を選択します。

1. [**起動の制約**] セクションでは、アカウントから IAM ロールを選択して IAM ロール ARN を入力するか、ロール名を入力できます。

   ロール名を指定すると、アカウントが起動制約を使用する場合、アカウントは IAM ロールのその名前を使用します。このアプローチにより、起動ロールの制約をアカウントに依存しないようにできます。共有アカウントごとに作成するリソースを減らすことができます。
**注記**  
指定されたロール名は、起動制約を作成したアカウントと、この起動制約を使用して製品を起動するユーザーのアカウントに存在している必要があります。

1. IAM ロールを指定したら、[**作成**] を選択します。

## 混同代理人を起動制約に追加する
<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 `の保護は、ARNs `arn:<aws-partition>:servicecatalog:<region>:<accountId>:` AWS Service Catalog のみをサポートします。特定のリソース ARNsはサポートされていません。

## 起動制約の検証
<a name="constraints-launch-test"></a>

が ロール AWS Service Catalog を使用して製品を起動し、製品を正常にプロビジョニングすることを確認するには、 AWS Service Catalog コンソールから製品を起動します。ユーザーに公開する前に制約をテストするには、同じ製品を含むテストポートフォリオを作成し、そのポートフォリオで制約をテストします。

**製品を起動するには**

1.  AWS Service Catalog コンソールのメニューで、**Service Catalog**、**エンドユーザー**を選択します。

1. 製品を選択して、[**製品の詳細**] ページを開きます。[**起動オプション**] テーブルで、ロールの Amazon リソースネーム (ARN) が表示されることを確認します。

1. [**製品の起動**] を選択します。

1. 起動手順を続行して必要な情報を入力します。

1. 製品が正常に起動することを確認します。