IVS Chat での Identity and Access Management
AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスをアカウント管理者が安全に制御するために役立つ AWS のサービスです。「IVS Low-Latency Streaming User Guide」の「Identity and Access Management in IVS」を参照してください。
対象者
IAM の用途は、Amazon IVS で行う作業によって異なります。「IVS Low-Latency Streaming User Guide」の「Audience」を参照して下さい。
Amazon IVS で IAM を使用する方法
Amazon IVS API リクエストを作成する前に、IAM ID (ユーザー、グループ、ロール) および IAM ポリシーを 1 つ以上作成する必要があります。次に、ポリシーを ID にアタッチします。アクセス許可が反映されるまでに数分かかります。それまでは、API リクエストは拒否されます。
Amazon IVS を IAM と連携させる方法の概要は、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。
ID
IAM アイデンティティを作成して、AWS アカウントのユーザーとプロセスに認証を提供できます。IAM グループは、1 つのユニットとして管理できる IAM ユーザーのコレクションです。IAM ユーザーガイドの ID (ユーザー、グループ、ロール)を参照してください。
ポリシー
ポリシーは、要素から成る JSON のアクセス許可ポリシードキュメントです。「IVS Low-Latency Streaming User Guide」の「Policies」を参照して下さい。
Amazon IVS Chat は次の 3 つの要素をサポートしています。
-
アクション — Amazon IVS Chat のポリシーアクションは、アクションの前に
ivschat
プレフィックスを使用します。例えば、Amazon IVS ChatCreateRoom
API メソッドを使用して Amazon IVS Chat ルームを作成するアクセス許可を誰かに付与するには、ivschat:CreateRoom
アクションのポリシーにその誰かを含めます。ポリシーステートメントには、Action
またはNotAction
要素を含める必要があります。 -
リソース — Amazon IVS Chat ルームリソースには次のような ARN 形式があります。
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 ユーザーガイドの変数とタグを参照してください。
Amazon IVS には、事前設定された一連のアクセス許可をアイデンティティに付与する (読み取り専用またはフルアクセス) ために使用できる AWS マネージドポリシーが用意されています。以下に示す ID ベースのポリシーの代わりにマネージドポリシーを使用することもできます。詳細については、「Amazon IVS Chat 用マネージドポリシー」を参照してください。
Amazon IVS タグに基づく承認
タグは、Amazon IVS Chat リソースにアタッチすることも、Amazon IVS Chat へのリクエストで渡すこともできます。タグに基づいてアクセスを制御するには、aws:ResourceTag/key-name
、aws:RequestTag/key-name
、または aws:TagKeys
の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。Amazon IVS Chat リソースのタグ付けの詳細については、「IVS Chat API Reference」 の「Tagging」を参照してください。
ロール
IAM ユーザーガイドの IAM ロールおよび一時的セキュリティ認証情報を参照してください。
IAM ロールは AWS アカウント内のエンティティで、特定の許可を持っています。
Amazon IVS では、一時認証情報の使用をサポートしています。一時的な認証情報を使用して、フェデレーションでサインインする、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、AssumeRole
や GetFederationToken
などの AWS Security Token Service API オペレーションを呼び出します。
特権アクセスと非特権アクセス
API リソースには特権アクセスがあります。非特権再生アクセスは、プライベートチャネルを介してセットアップできます。「Setting Up IVS Private Channels」を参照してください。
ポリシーのベストプラクティス
IAM ユーザーガイドの IAM ベストプラクティス を参照してください。
アイデンティティベースのポリシーは非常に強力です。アカウント内で、Amazon IVS リソースを作成、アクセス、削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。次の推奨事項に従ってください。
-
最小権限を付与する – カスタムポリシーを作成するときは、タスクの実行に必要なアクセス許可のみを付与します。最小限のアクセス許可から開始し、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で開始し、後でそれらを強化しようとするよりも安全です。具体的には、
ivschat:*
を管理アクセスのために使用し、アプリケーションでは使用しないでください。 -
機密性の高いオペレーションに Multi-Factor Authentication (MFA) を有効にする – 追加セキュリティとして、機密性の高いリソースまたは API オペレーションにアクセスする IAM ユーザーに対して、MFA を使用するよう求めます。
-
追加のセキュリティとしてポリシー条件を使用する – 実行可能な範囲内で、ID ベースのポリシーでリソースへのアクセスを許可する条件を定義します。例えば、条件を記述して、リクエストが発生する IP アドレスの範囲を指定することができます。指定された日付や時間範囲内でのみリクエストを許可したり、SSL や MFA の使用を要求したりする条件を記述できます。
アイデンティティベースのポリシーの例
Amazon IVS コンソールを使用する
Amazon IVS コンソールにアクセスするには、AWS アカウントの Amazon IVS Chat リソースに関する詳細をリスト化および表示することを許可する最小限の許可セットが必要です。最小限必要なアクセス許可よりも制限された ID ベースのポリシーを作成すると、そのポリシーをアタッチした ID に対してコンソールが意図したとおりに機能しません。Amazon IVS コンソールへのアクセスを確実にするには、以下のポリシーを ID にアタッチします (IAM ユーザーガイドのIAM アクセス許可の追加および削除を参照してください)。
次のポリシーの部分は、以下へのアクセスを提供します。
-
すべての Amazon IVS Chat API エンドポイント
-
ユーザーの Amazon IVS Chat の Service Quotas
-
Lambda を一覧表示し、Amazon IVS Chat のモデレーションのために選択したラムダのアクセス許可を追加する
-
チャットセッションのメトリクスを取得する Amazon CloudWatch
{ "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 のリソースベースのポリシー
メッセージをレビューするために Lambda リソースを呼び出すには、Amazon IVS Chat サービスにアクセス許可を与える必要があります。これを行うには、「AWS Lambda のリソースベースポリシーの使用」(「AWS Lambda 開発デベロッパーガイド」内) の手順に従って、以下のように指定されたフィールドに記入します。
Lambda リソースへのアクセスを制御するために、以下に基づく条件を使用することができます。
-
SourceArn
— サンプルポリシーではワイルドカード (*
) を使用して、アカウント内のすべてのルームが Lambda を呼び出すことを許可します。オプションで、アカウント内のルームを指定して、そのルームのみが Lambda を呼び出すことを許可できます。 -
SourceAccount
— 以下のサンプルポリシーでは、AWS アカウント ID は123456789012
です。
{ "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/*" } } } ] }
トラブルシューティング
Amazon IVS Chat と IAM の使用に伴って発生する可能性がある一般的な問題の診断と修正については、「IVS Low-Latency Streaming User Guide」の「Troubleshooting」を参照してください。