

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

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスをアカウント管理者が安全に制御するために役立つ AWS のサービスです。すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、許可のポリシーによって管理されます。IAM アカウント管理者は、誰を認証 (サインイン) し、誰に Amazon IVS リソースの使用を承認する (アクセス許可を付与する) かを管理します。IAM は追加料金なしで提供される AWS アカウントの機能です。

**重要**: 詳細については、[AWS IAM 製品ページ](https://aws.amazon.com/iam/)、「[IAMユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/)」、「[AWS API リクエストの署名](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)」を参照してください。このセクション全体を通して、*IAM ユーザーガイド*の特定のセクションへのリンクも提供されています。先に進む前に、この資料を理解しておいてください。

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

IAM の用途は、Amazon IVS で行う作業によって異なります。
+ **サービスユーザー** – Amazon IVS サービスを使用して作業を行う場合、管理者から必要なアクセス許可と認証情報が与えられます。さらに多くの Amazon IVS 機能を使用して作業を行う場合は、追加のアクセス許可が必要になることがあります。アクセスの管理方法を理解すると、管理者から適切なアクセス許可をリクエストするのに役に立ちます。Amazon IVS の機能にアクセスできない場合は、[トラブルシューティング](#security-iam-troubleshooting) を参照してください。
+ **サービス管理者** – 社内の Amazon IVS リソースの管理を担当している場合は、通常、Amazon IVS へのフルアクセスがあります。管理者は、従業員にアクセスを許可する Amazon IVS 機能とリソースを決定します。その後、サービスユーザーのアクセス許可を変更するために、IAM 管理者にリクエストを送信する必要があります。IAM の基本概念については、このページの情報を確認してください。会社で Amazon IVS を使用して IAM を利用する方法の詳細については、[Amazon IVS で IAM を使用する方法](#security-iam-how-ivs-works) を参照してください。
+ **IAM 管理者** – IAM 管理者は、Amazon IVS へのアクセスを管理するポリシーを記述できます。IAM で使用できる Amazon IVS アイデンティティベースのポリシーの例は、[アイデンティティベースのポリシーの例](#security-iam-policy-examples)を参照してください。

## 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>

*IAM ユーザーガイド*の以下のセクションを参照してください。
+ [アクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) — ポリシーに関するすべて
+ [Amazon IVS のアクション、リソース、条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoninteractivevideoservice.html)
+ [AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 
+ [IAM JSON ポリシー要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) — JSON ポリシーで使用できるすべての要素

デフォルトでは、IAM ユーザーとロールに Amazon IVS リソースを作成または変更するためのアクセス許可はありません (自分のパスワードを変更する場合も含む)。また、AWS コンソール、AWS CLI、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、指定されたリソースで特定の API オペレーションを実行するために必要なアクセス許可をユーザーとロールに付与する、IAM ポリシーを作成する必要があります。

IAM ポリシーは、オペレーションの実行方法を問わず、アクションのアクセス許可を定義します。例えば、`iam:GetRole` アクションを許可するポリシーがあるとします。このポリシーがあるユーザーは、AWS マネジメントコンソール、AWS CLI、または AWS API からロールの情報を取得できます。

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

  ```
  arn:aws:ivs:${Region}:${Account}:channel/${channelId}
  ```

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

  ```
  "Resource": "arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N"
  ```

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

  ```
  "Resource":"*"
  ```
+ **条件** — Amazon IVS は、`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 用マネージドポリシー](security-iam-awsmanpol.md)」を参照してください。

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

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

例については、[タグに基づいて Amazon IVS チャネルを表示する](#security-iam-policy-examples-tags)を参照してください。

## ロール
<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 リソースには特権アクセスがあります。非特権再生アクセスは、プライベートチャネルを介してセットアップできます。[プライベートチャネルの設定](private-channels.md) を参照してください。

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

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

アイデンティティベースのポリシーは非常に強力です。アカウント内で、Amazon IVS リソースを作成、アクセス、削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。次の推奨事項に従ってください。
+ **最小権限を付与する** – カスタムポリシーを作成するときは、タスクの実行に必要なアクセス許可のみを付与します。最小限のアクセス許可から開始し、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で開始し、後でそれらを強化しようとするよりも安全です。具体的には、`ivs:*` を管理アクセスのために使用し、アプリケーションでは使用しないでください。
+ **機密性の高いオペレーションに 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 リソースに関する詳細をリスト化および表示することを許可する最小限の許可セットが必要です。最小限必要なアクセス許可よりも制限された ID ベースのポリシーを作成すると、そのポリシーをアタッチした ID に対してコンソールが意図したとおりに機能しません。Amazon IVS コンソールへのアクセスを確実にするには、以下のポリシーを ID にアタッチします (IAM ユーザーガイドの[IAM アクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)を参照してください)。

次のポリシーの部分は、以下へのアクセスを提供します。
+ すべての Amazon IVS API オペレーション
+ ユーザーの Amazon IVS [サービスクォータ](service-quotas.md)
+ IVS の S3 への自動録画機能(Low-Latency Streaming) と IVS の合成録画機能 (Real-Time Streaming) に必要な Amazon S3 エンドポイント。
+ S3 への自動録画サービスリンクロールの作成
+ ライブストリームセッションのメトリクスを取得する Amazon CloudWatch

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "ivs:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "servicequotas:ListServiceQuotas"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucketPolicy",
        "s3:GetBucketLocation",
        "s3:GetBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:PutBucketPolicy"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "iam:AttachRolePolicy",
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/ivs.amazonaws.com/AWSServiceRoleForIVSRecordToS3*"
    },
    {
      "Action": [
        "cloudwatch:GetMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "lambda:AddPermission",
        "lambda:ListFunctions"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

### ユーザーに自分のアクセス許可の表示を許可
<a name="security-iam-policy-examples-permissions"></a>

この例では、ユーザー ID にアタッチされたインラインおよび管理ポリシーの表示を IAM ユーザーに許可するポリシーを示します。このポリシーには、AWS コンソールで、または AWS CLI もしくは AWS API を使用してプログラム的に、このアクションを完了するための許可が含まれています。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ViewOwnUserInfo",
         "Effect": "Allow",
         "Action": [
            "iam:GetUserPolicy",
            "iam:ListGroupsForUser",
            "iam:ListAttachedUserPolicies",
            "iam:ListUserPolicies",
            "iam:GetUser"
         ],
         "Resource": [
            "arn:aws:iam:*:*:user/${aws:username}"
         ]
      },
      {
         "Sid": "NavigateInConsole",
         "Effect": "Allow",
         "Action": [
            "iam:GetGroupPolicy",
            "iam:GetPolicyVersion",
            "iam:GetPolicy",
            "iam:ListAttachedGroupPolicies",
            "iam:ListGroupPolicies",
            "iam:ListPolicyVersions",
            "iam:ListPolicies",
            "iam:ListUsers"
         ],
         "Resource": "*"
      }
   ]
}
```

------

### Amazon IVS チャネルへのアクセス
<a name="security-iam-policy-examples-channel"></a>

ここでは、AWS アカウントの IAM ユーザーに、Amazon IVS チャネルのうちの 1 つである `VgNkEJgOVX9N` へのアクセス権を付与するとします。また、ストリームの停止 (`ivs:StopStream`)、メタデータの追加 (`ivs:PutMetadata`)、チャネルの更新 (`ivs:UpdateChannel`)もユーザーに許可します。このポリシーは、Amazon IVS コンソールに必要な `ivs:ListChannels`、`ivs:ListStreams`、`ivs:GetChannel`、および `ivs:GetStream` のアクセス許可も付与します。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"ListChannelsInConsole",
         "Effect":"Allow",
         "Action":[
            "ivs:ListChannels",
            "ivs:ListStreams"

         ],
         "Resource":"arn:aws:ivs:*:*:channel/*"
      },
      {
         "Sid":"ViewSpecificChannelInfo",
         "Effect":"Allow",
         "Action":[
            "ivs:GetChannel",
            "ivs:GetStream"
         ],
         "Resource":"arn:aws:ivs:*:*:channel/VgNkEJgOVX9N"
      },
      {
         "Sid":"ManageChannel",
         "Effect":"Allow",
         "Action":[
            "ivs:StopStream",
            "ivs:PutMetadata",
            "ivs:UpdateChannel"
         ],
         "Resource":"arn:aws:ivs:*:*:channel/VgNkEJgOVX9N" 
      }
   ]
}
```

------

### タグに基づいて Amazon IVS チャネルを表示する
<a name="security-iam-policy-examples-tags"></a>

アイデンティティベースのポリシーの条件を使用して、タグに基づいて Amazon IVS リソースへのアクセスをコントロールできます。この例では、チャネルを表示できるポリシーを示します。このポリシーは、このアクションを Amazon IVS コンソールで完了するために必要なアクセス許可も付与します。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ListWidgetsInConsole",
         "Effect": "Allow",
         "Action": "ivs:ListChannels",
         "Resource": "arn:aws:ivs:*:*:channel/*"
      },
      {
         "Sid": "ViewChannelIfOwner",
         "Effect": "Allow",
         "Action": "ivs:GetChannel",
         "Resource": "arn:aws:ivs:*:*:channel/*",
         "Condition": {
            "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
         }
      }
   ]
}
```

------

このポリシーをアカウントの IAM ユーザーにアタッチできます。ただしアクセス許可は、ユーザーの所有者としてのユーザー名がチャネルにタグ付けされている場合にのみ付与されます。richard-roe という名前のユーザーが Amazon IVS チャネルを表示しようとした場合、チャネルに `Owner=richard-roe` または `owner=richard-roe` がタグ付けされている必要があります。それ以外の場合、アクセスは拒否されます。(条件キー名では大文字と小文字は区別されないため、条件タグキー `Owner` は `Owner` と `owner` 両方に一致します。)

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

次の情報は、Amazon IVS と IAM の利用に伴って発生する可能性がある一般的な問題の診断や修正に役立ちます。
+ **Amazon IVS でアクションを実行する権限がない。**

  次のエラー例は、mateojackson IAM ユーザーが AWS コンソールを使用してチャネルの詳細を表示する際に、`ivs:GetChannel` 許可を持っていない場合に発生します。

  ```
  User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: ivs:GetChannel on resource: arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N
  ```

  この場合、Mateo は、`ivs:GetChannel` アクションを使用して `arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N` リソースにアクセスできるように、ポリシーの更新を管理者に依頼します。
+ **アクセスキーを表示する場合**

  IAM ユーザーアクセスキーを作成した後は、いつでもアクセスキー ID を表示できます。ただし、シークレットアクセスキーを再表示することはできません。シークレットアクセスキーを紛失した場合は、新しいキーペアを作成する必要があります。アクセスキーは 2 つの部分で構成されています。
  + アクセスキー ID (`AKIAIOSFODNN7EXAMPLE` など)
  + シークレットアクセスキー (`wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` など)

  ユーザー名とパスワードと同様、リクエストを認証するために、アクセスキー ID とシークレットアクセスキーの両方を使用する必要があります。ユーザー名とパスワードと同様に、アクセスキーは安全に管理してください。

  ***重要: [正規ユーザー ID を見つける](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindingCanonicalId)ためであっても、アクセスキーを第三者に提供しないでください。提供すると、第三者にアカウントへの永続的アクセスを取得される可能性があります。***

  アクセスキーペアを作成する場合、アクセスキー ID とシークレットアクセスキーを安全な場所に保存するように求めるプロンプトが表示されます。シークレットアクセスキーは、作成時にのみ使用できます。シークレットアクセスキーを紛失した場合、新しいアクセスキーを IAM ユーザーに追加する必要があります。

  最大 2 つのアクセスキーを持つことができます。すでに 2 つある場合は、新しいキーペアを作成する前に、いずれかを削除する必要があります。*IAM ユーザーガイド*の [IAM ユーザーのアクセスキーの管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)を参照してください。
+ **管理者として Amazon IVS へのアクセスを他のユーザーに許可したい。**

  Amazon IVS へのアクセスを他のユーザーに許可するには、アクセスを必要とする人またはアプリケーションの IAM エンティティ (ユーザーまたはロール) を作成する必要があります。他のユーザーまたはアプリケーションは、このエンティティの認証情報を使用して AWS にアクセスします。次に、Amazon IVS の適切なアクセス許可を付与するポリシーを、そのエンティティにアタッチする必要があります。

  開始するには、*IAM ユーザーガイド*の [IAM が委任した最初のユーザーおよびグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)を参照してください。
+ **AWS アカウント以外のユーザーに Amazon IVS リソースへのアクセスを許可したい。**

  他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールを引き受けるように信頼されたユーザーを指定することができます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。関連情報については、*IAM ユーザーガイド*の次のセクションを参照してください。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/LowLatencyUserGuide/security-iam.html)