IAM ロールを使用して AppStream 2.0 ストリーミングインスタンスで実行されるアプリケーションとスクリプトにアクセス許可を付与する - Amazon AppStream 2.0

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

IAM ロールを使用して AppStream 2.0 ストリーミングインスタンスで実行されるアプリケーションとスクリプトにアクセス許可を付与する

AppStream 2.0 ストリーミングインスタンスで実行されるアプリケーションとスクリプトは、リクエストに AWS AWS API認証情報を含める必要があります。IAM ロールを作成して、これらの認証情報を管理できます。IAM ロールは、 AWS リソースへのアクセスに使用できる一連のアクセス許可を指定します。ただし、このロールは 1 人のユーザーに一意に関連付けられるわけではありません。代わりに、それを必要とするすべてのユーザーが引き受けることができます。

AppStream 2.0 ストリーミングインスタンスに IAMロールを適用できます。ストリーミングインスタンスがロールに切り替える (引き受ける) と、ロールは一時的なセキュリティ認証情報を提供します。アプリケーションまたはスクリプトは、これらの認証情報を使用して、ストリーミングインスタンスでAPIアクションおよび管理タスクを実行します。 AppStream 2.0 は、一時的な認証情報スイッチを管理します。

AppStream 2.0 ストリーミングインスタンスでIAMロールを使用するためのベストプラクティス

AppStream 2.0 ストリーミングインスタンスでIAMロールを使用する場合は、次のプラクティスに従うことをお勧めします。

  • アクションとリソースに AWS API付与するアクセス許可を制限します。

    AppStream 2.0 ストリーミングインスタンスに関連付けられたIAMロールにIAMポリシーを作成してアタッチするときは、最小特権の原則に従います。アクションまたはリソースへのアクセス AWS APIを必要とするアプリケーションまたはスクリプトを使用する場合は、必要な特定のアクションとリソースを決定します。次に、アプリケーションまたはスクリプトがこれらのアクションのみを実行できるようにするポリシーを作成します。詳細については、「 ユーザーガイド」の「最小特権の付与IAM」を参照してください。

  • AppStream 2.0 リソースごとに IAMロールを作成します。

    AppStream 2.0 リソースごとに一意のIAMロールを作成することは、最小特権の原則に従うプラクティスです。これにより、他のリソースに影響を与えることなく、リソースのアクセス許可を変更することもできます。

  • 認証情報を使用できる場所を制限します。

    IAM ポリシーを使用すると、IAMロールを使用してリソースにアクセスするための条件を定義できます。たとえば、リクエスト元の IP アドレスの範囲を指定する条件を含めることができます。これにより、認証情報が環境外で使用されなくなります。詳細については、「 ユーザーガイド」の「追加のセキュリティにポリシー条件を使用するIAM」を参照してください。

AppStream 2.0 ストリーミングインスタンスで使用する既存のIAMロールの設定

このトピックでは、Image Builder とフリートストリーミングインスタンスで使用できるように既存のIAMロールを設定する方法について説明します。

前提条件

AppStream 2.0 Image Builder またはフリートストリーミングインスタンスで使用するIAMロールは、次の前提条件を満たす必要があります。

  • IAM ロールは、 AppStream 2.0 ストリーミングインスタンスと同じ Amazon Web Services アカウントに存在する必要があります。

  • IAM ロールをサービスロールにすることはできません。

  • IAM ロールにアタッチされている信頼関係ポリシーには、プリンシパルとして AppStream 2.0 サービスが含まれている必要があります。プリンシパルは、アクションを実行してリソースにアクセスできる AWS のエンティティです。ポリシーには sts:AssumeRole アクションも含める必要があります。このポリシー設定では、 AppStream 2.0 を信頼されたエンティティとして定義します。

  • Image Builder にIAMロールを適用する場合、Image Builder は AppStream 2019 年 9 月 3 日以降にリリースされた 2.0 エージェントのバージョンを実行する必要があります。IAM ロールをフリートに適用する場合、フリートは同じ日付以降にリリースされたバージョンのエージェントを使用するイメージを使用する必要があります。詳細については、「AppStream 2.0 エージェントリリースノート」を参照してください。

AppStream 2.0 サービスプリンシパルが既存のIAMロールを引き受けるようにするには

次の手順を実行するには、IAMロールを一覧表示および更新するために必要なアクセス許可を持つIAMユーザーとしてアカウントにサインインする必要があります。必要なアクセス許可がない場合は、お客様の Amazon Web Services アカウント管理者に対し、アカウントでこれらのステップを実行するか、必要なアクセス許可をお客様に付与するかのどちらかを依頼します。

  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. ナビゲーションペインで [ロール] を選択します。

  3. アカウントのロールの一覧で、変更するロールの名前を選択します。

  4. [Trust relationships] タブを選択し、続いて [Edit trust relationship] を選択します。

  5. [Policy Document (ポリシードキュメント)]で、信頼関係ポリシーに appstream.amazonaws.com サービスプリンシパルの sts:AssumeRole アクションが含まれていることを確認します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. 信頼ポリシーの編集を完了したら、[信頼ポリシーの更新] を選択して変更を保存します。

  7. 選択したIAMロールが AppStream 2.0 コンソールに表示されます。このロールは、ストリーミングインスタンスでAPIアクションと管理タスクを実行するためのアクセス許可をアプリケーションとスクリプトに付与します。

AppStream 2.0 ストリーミングインスタンスで使用する IAMロールを作成する方法

このトピックでは、Image Builder とフリートストリーミングインスタンスで使用できるように新しいIAMロールを作成する方法について説明します。

  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. ナビゲーションペインで [Roles] (ロール) を選択してから、[Create role] (ロールを作成する) を選択します。

  3. 信頼できるエンティティの種類の選択 で、AWS サービス を選択します。

  4. AWS サービスのリストから AppStream 2.0 を選択します。

  5. ユースケースの選択 AppStream 2.0 — AppStream 2.0 インスタンスがユーザーに代わって AWS サービスを呼び出すことを許可する は既に選択されています。[Next: Permissions] (次へ: アクセス許可) を選択します。

  6. 可能な場合は、アクセス許可ポリシーとして使用するポリシーを選択するか、[ポリシーの作成] を選択して新しいブラウザタブを開き、新しいポリシーをゼロから作成します。詳細については、「 ユーザーガイド」のIAM「ポリシーの作成 (コンソール)」の手順のステップ 4 を参照してください。 IAM

    ポリシーを作成したら、そのタブを閉じて元のタブに戻ります。 AppStream 2.0 に付与するアクセス許可ポリシーの横にあるチェックボックスをオンにします。

  7. (オプション) アクセス許可の境界を設定します。このアドバンスド機能は、サービスロールで使用できますが、サービスにリンクされたロールではありません。詳細については、「 ユーザーガイド」のIAM「エンティティのアクセス許可の境界」を参照してください。 IAM

  8. [Next: Tags] (次へ: タグ) を選択します。オプションで、タグをキーと値のペアとしてアタッチできます。詳細については、「 IAMユーザーガイド」のIAM「ユーザーとロールのタグ付け」を参照してください。

  9. [次へ: レビュー] を選択します。

  10. [Role name] (ロール名) に、Amazon Web Services アカウント内で一意のロール名を入力します。他の AWS リソースはロールを参照する可能性があるため、ロールの作成後にロールの名前を編集することはできません。

  11. [ロールの説明] に、デフォルトのロールの説明をそのまま使用するか、新しいロールの説明を入力します。

  12. ロールを確認したら、[Create role] (ロールを作成) を選択します。

AppStream 2.0 ストリーミングインスタンスでIAMロールを使用する方法

IAM ロールを作成したら、Image Builder の起動時またはフリートの作成時に、そのロールを Image Builder またはフリートストリーミングインスタンスに適用できます。既存のフリートに IAMロールを適用することもできます。Image Builder の起動時にIAMロールを適用する方法については、「」を参照してくださいImage Builder を起動し、ストリーミングアプリケーションをインストールして設定する。フリートの作成時にIAMロールを適用する方法については、「」を参照してくださいフリートを作成する

Image Builder またはフリートストリーミングインスタンスに IAMロールを適用すると、 AppStream 2.0 は一時的な認証情報を取得し、インスタンスに appstream_machine_role 認証情報プロファイルを作成します。一時的な認証情報は 1 時間有効で、新しい認証情報は 1 時間ごとに取得されます。以前の認証情報は失効しないため、有効である限り使用できます。認証情報プロファイルを使用して、 AWS コマンドラインインターフェイス (AWS CLI)、 AWS Tools for PowerShell、または AWS SDK任意の言語で を使用してプログラムで AWS サービスを呼び出すことができます。

API 呼び出しを行うときは、認証情報プロファイルとして appstream_machine_role を指定します。それ以外の場合、アクセス許可が不十分なため、オペレーションは失敗します。

AppStream 2.0 は、ストリーミングインスタンスのプロビジョニング中に指定されたロールを引き受けます。 AppStream 2.0 は にアタッチされた Elastic Network Interface を呼び出しVPCに使用する AWS APIため、アプリケーションまたはスクリプトは、呼び出しを行う前に AWS API Elastic Network Interface が使用可能になるまで待機する必要があります。Elastic Network Interface が使用可能になる前にAPI呼び出しが行われた場合、呼び出しは失敗します。

次の例は、appstream_machine_role 認証情報プロファイルを使用してストリーミングインスタンス (EC2 インスタンス) を記述し、Boto クライアントを作成する方法を示しています。Boto は Python SDK用の Amazon Web Services (AWS) です。

を使用してストリーミングインスタンス (EC2 インスタンス) を記述する AWS CLI

aws ec2 describe-instances --region us-east-1 --profile appstream_machine_role

の AWS ツールを使用してストリーミングインスタンス (EC2 インスタンス) を記述する PowerShell

AWS Tools for PowerShell バージョン 3.3.563.1 以降と Amazon Web Services SDK for NETバージョン 3.3.103.22 以降を使用する必要があります。 AWS Tools for Windows インストーラーをダウンロードできます。これには、Tools for AWS PowerShell と Amazon Web Services SDK for が含まれます。NET AWS PowerShell

Get-EC2Instance -Region us-east-1 -ProfileName appstream_machine_role

for Python を使用した AWS SDK Boto クライアントの作成

session = boto3.Session(profile_name='appstream_machine_role')