IVS での Identity and Access Management
AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスをアカウント管理者が安全に制御するために役立つ AWS のサービスです。すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、許可のポリシーによって管理されます。IAM アカウント管理者は、誰を認証 (サインイン) し、誰に Amazon IVS リソースの使用を承認する (アクセス許可を付与する) かを管理します。IAM は追加料金なしで提供される AWS アカウントの機能です。
重要: 詳細については、AWS IAM 製品ページ
対象者
IAM の用途は、Amazon IVS で行う作業によって異なります。
-
サービスユーザー – Amazon IVS サービスを使用して作業を行う場合、管理者から必要なアクセス許可と認証情報が与えられます。さらに多くの Amazon IVS 機能を使用して作業を行う場合は、追加のアクセス許可が必要になることがあります。アクセスの管理方法を理解すると、管理者から適切なアクセス許可をリクエストするのに役に立ちます。Amazon IVS の機能にアクセスできない場合は、トラブルシューティング を参照してください。
-
サービス管理者 – 社内の Amazon IVS リソースの管理を担当している場合は、通常、Amazon IVS へのフルアクセスがあります。管理者は、従業員にアクセスを許可する Amazon IVS 機能とリソースを決定します。その後、サービスユーザーのアクセス許可を変更するために、IAM 管理者にリクエストを送信する必要があります。IAM の基本概念については、このページの情報を確認してください。会社で Amazon IVS を使用して IAM を利用する方法の詳細については、Amazon IVS で IAM を使用する方法 を参照してください。
-
IAM 管理者 – IAM 管理者は、Amazon IVS へのアクセスを管理するポリシーを記述できます。IAM で使用できる Amazon IVS アイデンティティベースのポリシーの例は、アイデンティティベースのポリシーの例を参照してください。
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 (ユーザー、グループ、ロール)を参照してください。
ポリシー
IAM ユーザーガイドの以下のセクションを参照してください。
-
アクセス管理 — ポリシーに関するすべて
-
IAM JSON ポリシー要素のリファレンス — 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 IVSCreateChannel
API メソッドを使用して Amazon IVS チャネルを作成するアクセス許可を誰かに付与するには、ivs:CreateChannel
アクションのポリシーにその誰かを含めます。ポリシーステートメントには、Action
またはNotAction
要素を含める必要があります。 -
リソース — Amazon IVS チャネルリソースには次のような ARN 形式があります。
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 ユーザーガイドの変数とタグを参照してください。
Amazon IVS には、事前設定された一連のアクセス許可をアイデンティティに付与する (読み取り専用またはフルアクセス) ために使用できる AWS マネージドポリシーが用意されています。以下に示す ID ベースのポリシーの代わりにマネージドポリシーを使用することもできます。詳細については、「Amazon IVS 用マネージドポリシー」を参照してください。
Amazon IVS タグに基づく承認
タグは、Amazon IVS リソースにアタッチすることも、Amazon IVS へのリクエストで渡すこともできます。タグに基づいてアクセスを制御するには、aws:ResourceTag/key-name
、aws:RequestTag/key-name
、または aws:TagKeys
の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。Amazon IVS リソースのタグ付けの詳細については、「IVS 低レイテンシーストリーミング API リファレンス」、「IVS リアルタイムストリーミング API リファレンス」、「IVS チャット API リファレンス」の「タグ付け」を参照してください。
例については、「タグに基づいて Amazon IVS チャネルを表示する」を参照してください。
ロール
IAM ユーザーガイドの IAM ロールおよび一時的セキュリティ認証情報を参照してください。
IAM ロールは AWS アカウント内のエンティティで、特定の許可を持っています。
Amazon IVS では、一時認証情報の使用をサポートしています。一時的な認証情報を使用して、フェデレーションでサインインする、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、AssumeRole
や GetFederationToken
などの AWS Security Token Service API オペレーションを呼び出します。
特権アクセスと非特権アクセス
API リソースには特権アクセスがあります。非特権再生アクセスは、プライベートチャネルを介してセットアップできます。プライベートチャネルの設定 を参照してください。
ポリシーのベストプラクティス
IAM ユーザーガイドの IAM ベストプラクティス を参照してください。
アイデンティティベースのポリシーは非常に強力です。アカウント内で、Amazon IVS リソースを作成、アクセス、削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。次の推奨事項に従ってください。
-
最小権限を付与する – カスタムポリシーを作成するときは、タスクの実行に必要なアクセス許可のみを付与します。最小限のアクセス許可から開始し、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で開始し、後でそれらを強化しようとするよりも安全です。具体的には、
ivs:*
を管理アクセスのために使用し、アプリケーションでは使用しないでください。 -
機密性の高いオペレーションに Multi-Factor Authentication (MFA) を有効にする – 追加セキュリティとして、機密性の高いリソースまたは API オペレーションにアクセスする IAM ユーザーに対して、MFA を使用するよう求めます。
-
追加のセキュリティとしてポリシー条件を使用する – 実行可能な範囲内で、ID ベースのポリシーでリソースへのアクセスを許可する条件を定義します。例えば、条件を記述して、リクエストが発生する IP アドレスの範囲を指定することができます。指定された日付や時間範囲内でのみリクエストを許可したり、SSL や MFA の使用を要求したりする条件を記述できます。
アイデンティティベースのポリシーの例
Amazon IVS コンソールを使用する
Amazon IVS コンソールにアクセスするには、AWS アカウントの Amazon IVS リソースに関する詳細をリスト化および表示することを許可する最小限の許可セットが必要です。最小限必要なアクセス許可よりも制限された ID ベースのポリシーを作成すると、そのポリシーをアタッチした ID に対してコンソールが意図したとおりに機能しません。Amazon IVS コンソールへのアクセスを確実にするには、以下のポリシーを ID にアタッチします (IAM ユーザーガイドのIAM アクセス許可の追加および削除を参照してください)。
次のポリシーの部分は、以下へのアクセスを提供します。
-
すべての Amazon IVS API エンドポイント
-
ユーザーの Amazon IVS サービスクォータ
-
IVS の S3 への自動録画機能(Low-Latency Streaming) と IVS の合成録画機能 (Real-Time Streaming) に必要な Amazon S3 エンドポイント。
-
S3 への自動録画サービスリンクロールの作成
-
ライブストリームセッションのメトリクスを取得する Amazon CloudWatch
{ "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": "*" } ] }
ユーザーに自分のアクセス許可の表示を許可
この例では、ユーザー ID にアタッチされたインラインおよび管理ポリシーの表示を IAM ユーザーに許可するポリシーを示します。このポリシーには、AWS コンソールで、または AWS CLI もしくは AWS API を使用してプログラム的に、このアクションを完了するための許可が含まれています。
{ "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 チャネルへのアクセス
ここでは、AWS アカウントの IAM ユーザーに、Amazon IVS チャネルのうちの 1 つである VgNkEJgOVX9N
へのアクセス権を付与するとします。また、ストリームの停止 (ivs:StopStream
)、メタデータの追加 (ivs:PutMetadata
)、チャネルの更新 (ivs:UpdateChannel
)もユーザーに許可します。このポリシーは、Amazon IVS コンソールに必要な ivs:ListChannels
、ivs:ListStreams
、ivs:GetChannel
、および ivs:GetStream
のアクセス許可も付与します。
{ "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 チャネルを表示する
アイデンティティベースのポリシーの条件を使用して、タグに基づいて Amazon IVS リソースへのアクセスをコントロールできます。この例では、チャネルを表示できるポリシーを示します。このポリシーは、このアクションを Amazon IVS コンソールで完了するために必要なアクセス許可も付与します。
{ "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
両方に一致します。)
トラブルシューティング
次の情報は、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 を見つけるためであっても、アクセスキーを第三者に提供しないでください。提供すると、第三者にアカウントへの永続的アクセスを取得される可能性があります。
アクセスキーペアを作成する場合、アクセスキー ID とシークレットアクセスキーを安全な場所に保存するように求めるプロンプトが表示されます。シークレットアクセスキーは、作成時にのみ使用できます。シークレットアクセスキーを紛失した場合、新しいアクセスキーを IAM ユーザーに追加する必要があります。
最大 2 つのアクセスキーを持つことができます。すでに 2 つある場合は、新しいキーペアを作成する前に、いずれかを削除する必要があります。IAM ユーザーガイドの IAM ユーザーのアクセスキーの管理を参照してください。
-
-
管理者として Amazon IVS へのアクセスを他のユーザーに許可したい。
Amazon IVS へのアクセスを他のユーザーに許可するには、アクセスを必要とする人またはアプリケーションの IAM エンティティ (ユーザーまたはロール) を作成する必要があります。他のユーザーまたはアプリケーションは、このエンティティの認証情報を使用して AWS にアクセスします。次に、Amazon IVS の適切なアクセス許可を付与するポリシーを、そのエンティティにアタッチする必要があります。
開始するには、IAM ユーザーガイドの IAM が委任した最初のユーザーおよびグループの作成を参照してください。
-
AWS アカウント以外のユーザーに Amazon IVS リソースへのアクセスを許可したい。
他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールを引き受けるように信頼されたユーザーを指定することができます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。関連情報については、IAM ユーザーガイドの次のセクションを参照してください。
詳細 参照 所有している AWS アカウント全体でリソースへのアクセスを許可する方法 第三者の AWS アカウントにリソースへのアクセスを許可する方法 ID フェデレーションを介してアクセスを許可する方法 クロスアカウントアクセスで使用しているロールとリソースベースポリシーの相違点