ウェブ ID フェデレーションの使用 - Amazon DynamoDB

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

ウェブ ID フェデレーションの使用

多数のユーザーを対象とするアプリケーションを記述している場合、必要に応じて、ウェブアイデンティティフェデレーションを使用して、認証と認可を実行できます。ウェブ ID フェデレーションは、個々の ユーザーを作成する必要性を排除します。代わりに、ユーザーは ID プロバイダーにサインインした後、一時的なセキュリティ資格情報を AWS Security Token Service (AWS STS) から取得できます。アプリケーションでは、この認証情報を使用して AWS サービスにアクセスできます。

ウェブアイデンティティフェデレーションでは、次のアイデンティティプロバイダーをサポートしています。

  • Login with Amazon

  • Facebook

  • Google

ウェブアイデンティティフェデレーションに関するその他のリソース

ウェブアイデンティティフェデレーションの詳細を理解するのに、次のリソースが役に立ちます。

  • AWS デベロッパーブログの「Web Identity Federation using the AWS SDK for .NET 」の記事では、ウェブ ID フェデレーションを Facebookで使用する方法について説明しています。記事には、ウェブ ID を持つ ロールを想定する方法や、一時的なセキュリティ認証情報を使用して AWS リソースにアクセスする方法を示す C# のコードスニペットが含まれています。

  • AWS Mobile SDK for iOSAWS Mobile SDK for Android には、サンプルアプリが含まれています。このアプリケーションには、アイデンティティプロバイダーを呼び出す方法、そのプロバイダーからの情報を使用して、一時的なセキュリティ認証情報を取得および使用する方法を示すコードが含まれています。

  • 記事「Web Identity Federation with Mobile Applications」では、ウェブ ID フェデレーションについて説明し、ウェブ ID フェデレーションを使用して AWS リソースにアクセスする使用方法の例を挙げています。

ウェブ ID フェデレーションのポリシー例

DynamoDB でウェブ ID フェデレーションを使用する方法を表示するには、 で導入されたGameScores表を再確認してください詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用。のプライマリキーは次のとおりですGameScores

テーブル名 プライマリキーのタイプ パーティションキーの名前と型 ソートキーの名前と型
GameScores (UserId, GameTitle, ...) 複合 属性名: UserId

型: 文字列
属性名: GameTitle

型: 文字列

ここで、あるモバイルゲームアプリケーションがこのテーブルを使用し、そのアプリケーションでは、数千人、数百万人のユーザーをサポートする必要があるとします。この規模では、個々のアプリユーザーを管理し、各ユーザーがGameScoresテーブル内の自分のデータにのみアクセスできることを確認するのは非常に困難になります。多くのユーザーは、Facebook、Google、Login with Amazon などのサードパーティーの ID プロバイダーのアカウントを既に持っています。そのため、このようなプロバイダーのいずれかを利用して、認証タスクを行うことができます。

ウェブ ID フェデレーションを使用して認証を行うには、アプリケーションデベロッパーは、そのアプリケーションをアイデンティティプロバイダー(Login with Amazon など)に登録して、一意のアプリケーション ID を取得する必要があります。次に、デベロッパーはロールを作成する必要があります (この例の場合、このロールの名前は ですGameRole。) ロールには、アプリケーションがGameScoresテーブルにアクセスできる条件を指定して、IAM ポリシードキュメントがアタッチされている必要があります。

ユーザーは、ゲームをプレイするとき、ゲームアプリケーション内から Login with Amazon アカウントにサインインします。次に、アプリは AWS Security Token Service (AWS STS) を呼び出し、Login with Amazon アプリ ID を提供し、 でメンバーシップをリクエストしますGameRole。 はアプリケーションに一時的なAWS認証情報をAWS STS返し、GameRoleポリシードキュメントに従って GameScoresテーブルへのアクセスを許可します。

次の図は、これらの要素を組み合わせるとどのようになるかを示しています。

ウェブ ID フェデレーションの概要

  1. アプリケーションは、サードパーティのアイデンティティプロバイダーを呼び出して、ユーザーとアプリケーションを認証します。アイデンティティプロバイダーは、ウェブアイデンティティトークンをアプリケーションに返します。

  2. アプリは AWS STS を呼び出し、ウェブアイデンティティトークンを入力として渡します。AWS STS は、アプリケーションを認可し、一時的な AWS アクセス認証情報をアプリケーションに渡します。アプリは、IAM ロール (GameRole) を引き受け、ロールのセキュリティポリシーに従って AWSリソースにアクセスできます。

  3. アプリケーションは DynamoDB を呼び出してGameScoresテーブルにアクセスします。を引き受けたためGameRole、アプリケーションにはそのロールに関連付けられたセキュリティポリシーが適用されます。ポリシードキュメントによって、ユーザーに属していないデータにアプリケーションはアクセスできません。

もう一度、GameRole「」に示されている のセキュリティポリシーを示します詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAccessToOnlyItemsMatchingUserID", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ], "dynamodb:Attributes":[ "UserId", "GameTitle", "Wins", "Losses", "TopScore", "TopScoreDateTime" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES" } } } ] }

Condition GameScores 句は、アプリに表示される 内の項目を決定します。Login with Amazon ID と UserIdGameScores パーティションキーの値を比較することで、これを行います。このポリシーに列挙されている DynamoDB アクションのいずれかを使用して処理できるのは、現在のユーザーに属する項目だけです。テーブルのその他の項目にはアクセスできません。さらに、ポリシーに列挙されている特定の属性にだけアクセスできます。