1. Amazon Cognito
Mobile Identity Management and Data Synchronization
Amazon Data Service Japan K.K.
Solutions Architect
Keisuke Nishitani(@Keisuke69)
2015.09.28
10. Amazon Cognito
“Your app data is secure, available offline, and kept in sync between devices”
クロスデバイス・クロスプ
ラットフォームなデータ同
期
デバイスとプラットフォーム
をまたがってユーザのデータ
を同期
モバイルデバイスから全
AWSサービスへのセキュ
アなアクセス
セキュリティのベストプラク
ティスを実装
アイデンティティとアクセ
スの管理を簡潔に
IDプロバイダを越えたユニー
クなアイデンティティとして
ユーザを管理
独自認証
11. Amazon Cognito
“Your app data is secure, available offline, and kept in sync between devices”
クロスデバイス・クロスプ
ラットフォームなデータ同
期
デバイスとプラットフォーム
をまたがってユーザのデータ
を同期
モバイルデバイスから全
AWSサービスへのセキュ
アなアクセス
セキュリティのベストプラク
ティスを実装
アイデンティティとアクセ
スの管理を簡潔に
IDプロバイダを越えたユニー
クなアイデンティティとして
ユーザを管理
独自認証
12. ID プロバイダ
ゲストアクセス
独自認証システム
ユニーク ID
Joe Anna Bob
デバイス
プラットフォーム
AWS サービス
複数の ID プロバイダをサポート
ID プロバイダと簡単に連携して認証
Amazon, Facebook, Twitter, Google,
OpenID Connect などに対応
ユニークなアイデンティティ
認証済ユーザに対してユニークIDを割り当て、
デバイスやプラットフォームをまたがって認
識と管理
Amazon Cognito Identity
Mobile
Analytics
S3 DynamoDB Kinesis
容易なセキュリティのベストプラク
ティス実装
モバイルデバイスからAWSリソースへのセ
キュアなアクセスのためのやり取りをIAMと
連携して簡略化
13. Amazon Cognitoの認証フロー
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
Token
Pool ID
Role ARNs
User Authentication
System
(Running on AWS or not)
Token
16. Amazon Cognitoの認証フロー
(Developer Authenticated Identities)
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
Get OpenID Token
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
OIDC Token
Pool ID
Role ARNs
独自認証システム
(AWS上で稼働していなくてもOK)
OIDC Token
OIDC Token
20. アクセスポリシーによる制限 (Policy Variables)
Allow
Actions:
All sync operations
Resource:
Only to that identity
{
"Effect": "Allow”,
"Action": ["s3:GetObject”,"s3:PutObject”],
"Resource": ["arn:aws:s3:::
myBucket/amazon/snakegame/
${cognito-identity.amazonaws.com:sub}"]
}
{
"Effect":"Allow",
"Action":"cognito-sync:*",
"Resource":["arn:aws:cognito-sync:us-east-1:
123456789012:identitypool/
${cognito-identity.amazonaws.com:aud}/identity/
${cognito-identity.amazonaws.com:sub}/*"]
}
Allow
Actions:
S3 Get/Put operations
Resource:
Only to a specific part
of bucket to that identity
27. Amazon Cognitoのセキュリティ
細やかなアクセス制御
IAM との連携で AWS リソースへの細かなアクセ
ス制御を実現
AWS Credentials の保護
必要な権限だけを付与された一時的なクレデンシャル
を取得できるので、アプリにクレデンシャルを埋め込
まなくてよい
セキュリティのベストプラクティスを支援
セキュリティトークンサービスと連携したり、トー
クンベンディングマシンを構築する必要はない
セキュアに AWS サービスを利用
EC2 S3 DynamoDB Kinesis
S3
DynamoDB
Get Delete Put
28. Amazon Cognito
“Your app data is secure, available offline, and kept in sync between devices”
クロスデバイス・クロスプ
ラットフォームなデータ同
期
デバイスとプラットフォーム
をまたがってユーザのデータ
を同期
モバイルデバイスから全
AWSサービスへのセキュ
アなアクセス
セキュリティのベストプラク
ティスを実装
アイデンティティとアクセ
スの管理を簡潔に
IDプロバイダを越えたユニー
クなアイデンティティとして
ユーザを管理
独自認証
29. Amazon Cognito Sync クラウドへのデータ保存と同期
User Data
Storage and
Sync
Any Platform
iOS/Android/FireOS
アプリのデータ、設定、状態などを保存
アプリやデバイスのデータをクラウドに保存で
き、ログイン後にマージされる
クロスデバイス、クロスプラットフォームで同期
ユーサデータや設定をデバイスをまたいで同期
k/v data
Identity pool
バックエンド不要
スケーラブルで信頼性の高いデータ同期基盤を簡単に
利用可能
31. Cognito Sync データモデル
Identity Pool: アプリユーザのPool。アプリ
間で共有する場合もある
Identity: 個々のユーザ。IDプロバイダ間を
またいでユニーク。ゲストユーザも可
Dataset: ユーザごとのデータのグループ
Record: Key/Valueのユーザデータ
AWS
Account
Dataset
Identity
Identity
Identity
Dataset
Dataset
Identity
Pool
1:60
1:n
1:20
Dataset
Dataset
Record
1:1024
You
Your App
Your App Users
User Data
Container
User Data
32. Cognito Sync データモデル 例
User情報
Dataset
ゲームとユーティリ
ティ、2種類アプリを
提供
Game情報
Dataset
Identitypool1
ーティリティ
App
Game
App
AWS
Account
Dataset
Identity
Identity
Identity
Dataset
Dataset
Identity
Pool
1:60
1:n
1:20
Dataset
Dataset
Record
1:1024
You
Your App
Your App Users
User Data
Container
User Data