AWS Service Catalog の起動制約 - AWS Service Catalog

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

AWS Service Catalog の起動制約

起動制約は、エンドユーザーが製品を起動、更新、または終了するときに AWS Service Catalog が引き受ける AWS Identity and Access Management (IAM) ロールを指定します。IAM ロールは、ユーザーや AWS のサービスが、AWS のサービスを使用するために一時的に引き受けることができるアクセス権限のコレクションです。簡単な例については、以下を参照してください。

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

起動制約がない場合、エンドユーザーは各自の IAM 認証情報を使用して製品を起動し、管理する必要があります。そのためには、AWS CloudFormation、製品で使用される AWS のサービス、および AWS Service Catalog のアクセス許可が必要です。起動ロールを使用することにより、エンドユーザーのアクセス権限をその製品に必要な最小限のものに制限することができます。エンドユーザーのアクセス権限の管理の詳細については、「AWS Service Catalogにおけるアイデンティティとアクセスの管理」を参照してください。

IAM ロールを作成して割り当てるには、以下の IAM 管理者権限が必要です。

  • iam:CreateRole

  • iam:PutRolePolicy

  • iam:PassRole

  • iam:Get*

  • iam:List*

起動ロールの設定

起動制約として製品に割り当てる IAM ロールには、以下を使用するためのアクセス権限が必要です。

Cloudformation 製品用

  • arn:aws:iam::aws:policy/AWSCloudFormationFullAccess AWS 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 サービスの信頼ポリシーの作成」セクションを参照してください。

注記

servicecatalog:ProvisionProductservicecatalog:TerminateProvisionedProductservicecatalog:UpdateProvisionedProduct のアクセス権限を起動ロールで割り当てることはできません。「AWS Service Catalogエンドユーザーにアクセス許可を付与する」セクションのインラインポリシーの手順に示されているように、IAM ロールを使用する必要があります。

注記

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

起動ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    Terraform 製品には追加の起動ロール設定が必要です。詳細については、Terraform Open Source 製品入門 の「ステップ 5: 起動ロールの作成」を参照してください。

  2. [ロール] を選択します。

  3. [Create New Role (新しいロールを作成)] を選択します。

  4. ロール名を入力し、[Next Step] を選択します。

  5. [AWS Service Catalog] の隣の [AWSサービスロール] で、[選択] を選択します。

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

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

ポリシーを新しいロールにアタッチするには
  1. 作成したロールを選択して、[role details] ページを表示します。

  2. [Permissions] タブを選択して、[Inline Policies] セクションを展開します。次に、[click here] を選択します。

  3. [Custom Policy] を選択し、[Select] を選択します。

  4. ポリシーの名前を入力し、[Policy Document] エディタに次のように貼り付けます。

    "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":"*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/servicecatalog:provisioning":"true" } } ] }
    注記

    起動制約の起動ロールを設定する場合は、"s3:ExistingObjectTag/servicecatalog:provisioning":"true" の文字列を使用する必要があります。

  5. 製品で使用する追加のサービスごとに、ポリシーに行を追加します。例えば、Amazon Relational Database Service (Amazon RDS) のアクセス許可を追加するには、Action リストの最後の行の末尾にカンマを入力し、次の行を追加します。

    "rds:*"
  6. [ポリシーを適用] を選びます。

起動制約の適用

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

製品にロールに割り当てるには
  1. Service Catalog コンソール (https://console.aws.amazon.com/servicecatalog/) を開きます。

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

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

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

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

    ロール名を指定すると、アカウントが起動制約を使用する場合、アカウントは IAM ロールのその名前を使用します。このアプローチにより、起動ロールの制約をアカウントに依存しないようにできます。共有アカウントごとに作成するリソースを減らすことができます。

    注記

    指定されたロール名は、起動制約を作成したアカウントと、この起動制約を使用して製品を起動するユーザーのアカウントに存在している必要があります。

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

混同代理人を起動制約に追加する

AWS Service Catalog は、Assume Role リクエストで実行される API 混同代理 保護をサポートします。起動制約を追加すると、起動ロールの信頼ポリシーの 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 API が保護されています。

  • LaunchConstraint

  • ProvisionProduct

  • UpdateProvisionedProduct

  • TerminateProvisionedProduct

  • ExecuteProvisionedProductServiceAction

  • CreateProvisionedProductPlan

  • ExecuteProvisionedProductPlan

sourceArn 保護は、「arn:<aws-partition>:servicecatalog:<region>:<accountId>:」などのテンプレート化された ARN AWS Service Catalog のみをサポートします。特定のリソース ARN はサポートしていません。

起動制約の検証

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

製品を起動するには
  1. AWS Service Catalog コンソールのメニューで、[Service Catalog]、[エンドユーザー] の順に選択します。

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

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

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

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