

# IVS Chat での Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスをアカウント管理者が安全に制御するために役立つ AWS のサービスです。「*IVS 低レイテンシーストリーミングユーザーガイド*」の「[IVS での Identity and Access Management](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html)」を参照してください。

## オーディエンス
<a name="security-iam-audience"></a>

IAM の用途は、Amazon IVS で行う作業によって異なります。「[低レイテンシーストリーミングユーザーガイド](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-audience)」の「*対象者*」を参照して下さい。

## Amazon IVS で IAM を使用する方法
<a name="security-iam-how-ivs-works"></a>

Amazon IVS API リクエストを作成する前に、IAM *ID* (ユーザー、グループ、ロール) および IAM *ポリシー*を 1 つ以上作成する必要があります。次に、ポリシーを ID にアタッチします。アクセス許可が反映されるまでに数分かかります。それまでは、API リクエストは拒否されます。

Amazon IVS を IAM と連携させる方法の概要は、「*IAM ユーザーガイド*」の「[IAM と連携する AWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## ID
<a name="security-iam-identities"></a>

IAM アイデンティティを作成して、AWS アカウントのユーザーとプロセスに認証を提供できます。IAM グループは、1 つのユニットとして管理できる IAM ユーザーのコレクションです。IAM ユーザーガイドの [ID (ユーザー、グループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)を参照してください。

## ポリシー
<a name="security-iam-policies"></a>

ポリシーは、*要素*から成る JSON のアクセス許可ポリシードキュメントです。「*IVS 低レイテンシーストリーミングユーザーガイド*」の「[ポリシー](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-policies)」を参照して下さい。

Amazon IVS Chat は次の 3 つの要素をサポートしています。
+ **アクション** — Amazon IVS Chat のポリシーアクションは、アクションの前に `ivschat` プレフィックスを使用します。例えば、Amazon IVS Chat `CreateRoom` API メソッドを使用して Amazon IVS Chat ルームを作成するアクセス許可を誰かに付与するには、`ivschat:CreateRoom` アクションのポリシーにその誰かを含めます。ポリシーステートメントには`Action` または `NotAction` 要素を含める必要があります。
+ **リソース** — Amazon IVS Chat ルームリソースには次のような [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 形式があります。

  ```
  arn:aws:ivschat:${Region}:${Account}:room/${roomId}
  ```

  例えば、ステートメントで `VgNkEJgOVX9N` ルームを指定するには、この ARN を使用します。

  ```
  "Resource": "arn:aws:ivschat:us-west-2:123456789012:room/VgNkEJgOVX9N"
  ```

  リソースの作成など、一部の Amazon IVS Chat アクションは、特定のリソースで実行できません。このような場合は、ワイルドカード (`*`) を使用する必要があります。

  ```
  "Resource":"*"
  ```
+ **条件** — Amazon IVS Chat は、`aws:RequestTag`、`aws:TagKeys`、および `aws:ResourceTag` のグローバル条件キーをサポートしています。

変数をポリシーのプレースホルダーとして使用できます。例えば、ユーザーの IAM ユーザー名でタグ付けされている場合のみ、リソースにアクセスする IAM ユーザーアクセス許可を付与できます。IAM ユーザーガイドの[変数とタグ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)を参照してください。

Amazon IVS には、事前設定された一連のアクセス許可をアイデンティティに付与する (読み取り専用またはフルアクセス) ために使用できる AWS マネージドポリシーが用意されています。以下に示す ID ベースのポリシーの代わりにマネージドポリシーを使用することもできます。詳細については、「[Amazon IVS Chat 用マネージドポリシー](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam-awsmanpol.html)」を参照してください。

## Amazon IVS タグに基づく承認
<a name="security-iam-authorization"></a>

タグは、Amazon IVS Chat リソースにアタッチすることも、Amazon IVS Chat へのリクエストで渡すこともできます。タグに基づいてアクセスを制御するには、`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。Amazon IVS Chat リソースのタグ付けの詳細については、「[IVS Chat API Reference](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html)」 の「Tagging」を参照してください。

## ロール
<a name="security-iam-roles"></a>

IAM ユーザーガイドの [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)および[一時的セキュリティ認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)を参照してください。

*IAM 役割* は特定のアクセス許可を持つ、AWS アカウント内のエンティティです。

Amazon IVS では、*一時認証情報*の使用をサポートしています。一時的な認証情報を使用して、フェデレーションでサインインする、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、`AssumeRole` や `GetFederationToken` などの [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) API オペレーションを呼び出します。

## 特権アクセスと非特権アクセス
<a name="security-iam-privileged-access"></a>

API リソースには特権アクセスがあります。非特権再生アクセスは、プライベートチャネルを介してセットアップできます。「[Setting Up IVS Private Channels](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-channels.html)」を参照してください。

## ポリシーのベストプラクティス
<a name="security-iam-policy-best-practices"></a>

IAM ユーザーガイドの [IAM ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) を参照してください。

アイデンティティベースのポリシーは非常に強力です。アカウント内で、Amazon IVS リソースを作成、アクセス、削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。次の推奨事項に従ってください。
+ **最小権限を付与する** – カスタムポリシーを作成するときは、タスクの実行に必要なアクセス許可のみを付与します。最小限のアクセス許可から開始し、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で開始し、後でそれらを強化しようとするよりも安全です。具体的には、`ivschat:*` を管理アクセスのために使用し、アプリケーションでは使用しないでください。
+ **機密性の高いオペレーションに Multi-Factor Authentication (MFA) を有効にする** – 追加セキュリティとして、機密性の高いリソースまたは API オペレーションにアクセスする IAM ユーザーに対して、MFA を使用するよう求めます。
+ **追加のセキュリティとしてポリシー条件を使用する** – 実行可能な範囲内で、ID ベースのポリシーでリソースへのアクセスを許可する条件を定義します。例えば、条件を記述して、リクエストが発生する IP アドレスの範囲を指定することができます。指定された日付や時間範囲内でのみリクエストを許可したり、SSL や MFA の使用を要求したりする条件を記述できます。

## アイデンティティベースのポリシーの例
<a name="security-iam-policy-examples"></a>

### Amazon IVS コンソールを使用する
<a name="security-iam-policy-examples-console"></a>

Amazon IVS コンソールにアクセスするには、AWS アカウントの Amazon IVS Chat リソースに関する詳細をリスト化および表示することを許可する最小限の許可セットが必要です。最小限必要なアクセス許可よりも制限された ID ベースのポリシーを作成すると、そのポリシーをアタッチした ID に対してコンソールが意図したとおりに機能しません。Amazon IVS コンソールへのアクセスを確実にするには、以下のポリシーを ID にアタッチします (IAM ユーザーガイドの[IAM アクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)を参照してください)。

次のポリシーの部分は、以下へのアクセスを提供します。
+ すべての Amazon IVS Chat API オペレーション
+ ユーザーの Amazon IVS Chat の [Service Quotas](service-quotas.md)
+ Lambda を一覧表示し、Amazon IVS Chat のモデレーションのために選択したラムダのアクセス許可を追加する
+ チャットセッションのメトリクスを取得する Amazon CloudWatch

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "ivschat:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "servicequotas:ListServiceQuotas"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "cloudwatch:GetMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "lambda:AddPermission",
        "lambda:ListFunctions"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

## Amazon IVS Chat のリソースベースのポリシー
<a name="security-chat-policy-examples"></a>

メッセージをレビューするために Lambda リソースを呼び出すには、Amazon IVS Chat サービスにアクセス許可を与える必要があります。これを行うには、「[Using resource-based policies for AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)」(「*AWS Lambda デベロッパーガイド」内*) の手順に従って、以下のように指定されたフィールドに記入します。

Lambda リソースへのアクセスを制御するために、以下に基づく条件を使用することができます。
+ `SourceArn` — サンプルポリシーではワイルドカード (`*`) を使用して、アカウント内のすべてのルームが Lambda を呼び出すことを許可します。オプションで、アカウント内のルームを指定して、そのルームのみが Lambda を呼び出すことを許可できます。
+ `SourceAccount` — 以下のサンプルポリシーでは、AWS アカウント ID は `123456789012` です。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Principal": {
            "Service": "ivschat.amazonaws.com"
         },
         "Action": [
            "lambda:InvokeFunction"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:lambda:us-west-2:123456789012:function:name",
         "Condition": {
            "StringEquals": {
               "AWS:SourceAccount": "123456789012"
            },
            "ArnLike": {
               "AWS:SourceArn": "arn:aws:ivschat:us-west-2:123456789012:room/*"
            }
         }
      }
   ]
}
```

------

## トラブルシューティング
<a name="security-iam-troubleshooting"></a>

Amazon IVS Chat と IAM の使用に伴って発生する可能性がある一般的な問題の診断と修正については、「*IVS 低レイテンシーストリーミングユーザーガイド*」の「[トラブルシューティング](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/security-iam.html#security-iam-troubleshooting)」を参照してください。