

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

# IAM ロールを使用して WorkSpaces アプリケーションストリーミングインスタンスで実行されるアプリケーションとスクリプトにアクセス許可を付与する
<a name="using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances"></a>

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

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

**Topics**
+ [WorkSpaces アプリケーションストリーミングインスタンスで IAM ロールを使用するためのベストプラクティス](best-practices-for-using-iam-role-with-streaming-instances.md)
+ [WorkSpaces アプリケーションストリーミングインスタンスで使用する既存の IAM ロールの設定](configuring-existing-iam-role-to-use-with-streaming-instances.md)
+ [WorkSpaces アプリケーションストリーミングインスタンスで使用する IAM ロールを作成する方法](how-to-create-iam-role-to-use-with-streaming-instances.md)
+ [WorkSpaces アプリケーションストリーミングインスタンスで IAM ロールを使用する方法](how-to-use-iam-role-with-streaming-instances.md)

# WorkSpaces アプリケーションストリーミングインスタンスで IAM ロールを使用するためのベストプラクティス
<a name="best-practices-for-using-iam-role-with-streaming-instances"></a>

WorkSpaces アプリケーションストリーミングインスタンスで IAM ロールを使用する場合は、次のプラクティスに従うことをお勧めします。
+  AWS API アクションとリソースに付与するアクセス許可を制限します。

  WorkSpaces アプリケーションストリーミングインスタンスに関連付けられた IAM ロールに IAM ポリシーを作成してアタッチするときは、最小特権の原則に従います。 AWS API アクションまたはリソースへのアクセスを必要とするアプリケーションまたはスクリプトを使用する場合は、必要な特定のアクションとリソースを決定します。次に、アプリケーションまたはスクリプトがこれらのアクションのみを実行できるようにするポリシーを作成します。詳細については、*「IAM ユーザーガイド」*の[「Grant Least Privilege」](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)(最小権限を付与する) を参照してください。
+ WorkSpaces Applications リソースごとに IAM ロールを作成します。

  WorkSpaces Applications リソースごとに一意の IAM ロールを作成することは、最小特権の原則に従うプラクティスです。これにより、他のリソースに影響を与えることなく、リソースのアクセス許可を変更することもできます。
+ 認証情報を使用できる場所を制限します。

  IAM ポリシーでは、IAM ロールを使用してリソースにアクセスするための条件を定義できます。たとえば、リクエスト元の IP アドレスの範囲を指定する条件を含めることができます。これにより、認証情報が環境外で使用されなくなります。詳細については、*IAM ユーザーガイド*の「[追加セキュリティに対するポリシー条件を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-policy-conditions)」を参照してください。

# WorkSpaces アプリケーションストリーミングインスタンスで使用する既存の IAM ロールの設定
<a name="configuring-existing-iam-role-to-use-with-streaming-instances"></a>

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

**前提条件**

WorkSpaces Applications Image Builder またはフリートストリーミングインスタンスで使用する IAM ロールは、次の前提条件を満たす必要があります。
+ IAM ロールは、WorkSpaces アプリケーションストリーミングインスタンスと同じ Amazon Web Services アカウントに存在する必要があります。
+ IAM ロールをサービスロールにすることはできません。
+ IAM ロールにアタッチされている信頼関係ポリシーには、WorkSpaces アプリケーションサービスをプリンシパルとして含める必要があります。*プリンシパル*は、アクションを実行し AWS 、リソースにアクセスできる のエンティティです。ポリシーには `sts:AssumeRole` アクションも含める必要があります。このポリシー設定では、WorkSpaces アプリケーションを信頼されたエンティティとして定義します。

  
+ Image Builder に IAM ロールを適用する場合、Image Builder は 2019 年 9 月 3 日以降にリリースされたバージョンの WorkSpaces Applications エージェントを実行する必要があります。フリートに IAM ロールを適用する場合、フリートは同じ日付以降にリリースされたバージョンのエージェントを使用するイメージを使用する必要があります。詳細については、「[WorkSpaces アプリケーションエージェントのリリースノート](agent-software-versions.md)」を参照してください。

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

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

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

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

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

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

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

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "appstream.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 信頼ポリシーの編集を完了したら、[**信頼ポリシーの更新**] を選択して変更を保存します。

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

# WorkSpaces アプリケーションストリーミングインスタンスで使用する IAM ロールを作成する方法
<a name="how-to-create-iam-role-to-use-with-streaming-instances"></a>

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

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

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

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

1.  AWS サービスのリストから、**WorkSpaces アプリケーション**を選択します。

1. **「ユースケースの選択**」で、**WorkSpaces アプリケーション — WorkSpaces アプリケーションインスタンスがユーザーに代わって AWS サービスを呼び出すことを**許可はすでに選択されています。**[Next: Permissions]** (次のステップ: 許可) を選択します。

1. 可能な場合は、アクセス許可ポリシーとして使用するポリシーを選択するか、[**ポリシーの作成**] を選択して新しいブラウザタブを開き、新しいポリシーをゼロから作成します。詳細については、*IAM ユーザーガイド*の「[IAM ポリシーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」のステップ 4 を参照してください。

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

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

1. **[Next: Tags]** (次へ: タグ) を選択します。オプションで、タグをキーと値のペアとしてアタッチできます。詳細については、*IAM ユーザーガイド*の「[IAM リソースのタグ付け](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

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

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

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

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

# WorkSpaces アプリケーションストリーミングインスタンスで IAM ロールを使用する方法
<a name="how-to-use-iam-role-with-streaming-instances"></a>

IAM ロールを作成したら、Image Builder を起動するとき、またはフリートを作成するときに、そのロールを Image Builder またはフリートストリーミングインスタンスに適用できます。既存のフリートに IAM ロールを適用することもできます。Image Builder を起動するときに IAM ロールを適用する方法については、[Image Builder を起動し、ストリーミングアプリケーションをインストールして設定する](tutorial-image-builder-create.md) を参照してください。フリートを作成するときに IAM ロールを適用する方法については、[Amazon WorkSpaces アプリケーションでフリートを作成する](set-up-stacks-fleets-create.md) を参照してください。

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

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

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

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

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

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

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

 AWS Tools for PowerShell バージョン 3.3.563.1 以降、Amazon Web Services SDK for .NET バージョン 3.3.103.22 以降を使用する必要があります。 AWS Tools for PowerShell と Amazon Web Services SDK for .NET を含む AWS Tools for Windows インストーラは、[AWS Tools for PowerShell](https://aws.amazon.com/powershell/) ウェブサイトからダウンロードできます。

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

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

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