Black Belt Online Seminar Amazon Cognito

64
Amazon Cognito Mobile Identity Management and Data Synchronization Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K . May 18, 2016

Transcript of Black Belt Online Seminar Amazon Cognito

Page 1: Black Belt Online Seminar Amazon Cognito

Amazon CognitoMobile Identity Management and Data Synchronization

Keisuke Nishitani (@Keisuke69)Amazon Web Services Japan K.K.

May 18, 2016

Page 2: Black Belt Online Seminar Amazon Cognito

Profile

Keisuke NishitaniSolutions Architect, Amazon Web Service Japan K.K

@Keisuke69 Keisuke69

✤ AWS のソリューションアーキテクト✤ Web サービス系✤ モバイル系

✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくしています✤ モバイルニンジャ1号機✤ REST おじさん✤ Lambda Wizards

✤ 餃⼦の王将エヴァンジェリスト(⾃称)

Keisuke69 Keisuke69Keisuke69x

Page 3: Black Belt Online Seminar Amazon Cognito

AWS Black Belt Online Seminer へようこそ!✤ 質問を投げることができます!

✤Adobe Connect のチャット機能を使って、質問を書き込んでください。(書き込んだ質問は、主催者にしか⾒えません)

✤Twitterへツイートする際はハッシュタグ #awsblackbelt をご利⽤ください。

①画⾯右下のチャットボックスに質問を書き込ん

でください

②吹き出しマークで送信してくださ

Page 4: Black Belt Online Seminar Amazon Cognito

内容についての注意点✤ 本資料では2016年5⽉18⽇時点のサービス内容および価格についてご

説明しています。最新の情報は AWS 公式ウェブサイト(http://aws.amazon.com) にてご確認ください。

✤ 資料作成には⼗分注意しておりますが、資料内の価格と AWS 公式ウェブサイト記載の価格に相違があった場合、AWS 公式ウェブサイトの価格を優先とさせていただきます。

✤ 価格は税抜表記となっています。⽇本居住者のお客様がサービスを使⽤する場合、別途消費税をご請求させていただきます。AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.

Page 5: Black Belt Online Seminar Amazon Cognito

モバイル開発における課題

Page 6: Black Belt Online Seminar Amazon Cognito

付加価値を⽣まない重労働

Page 7: Black Belt Online Seminar Amazon Cognito

どうやって差別化するか

Page 8: Black Belt Online Seminar Amazon Cognito

アプリ開発、とくに差別化のための開発に集中したい

Page 9: Black Belt Online Seminar Amazon Cognito

モバイル開発における課題

開発者が直⾯する課題

• 複数プラットフォーム• スケーラビリティの確保• ⾼い運⽤管理コストと限られた予算• ユーザエクスペリエンスの阻害• ユニークなユーザ ID の管理

モバイルアプリケーションアイデンティティの管理と認可

データ同期アクティブなユーザの分析

エンゲージメントの分析Push 通知

イベントトリガークロスプラットフォーム

データのバリデーションと変換ファイル/メディア保管⽤ストレージ

データベースAnd More….

AWS Cloud Infrastructure

Page 10: Black Belt Online Seminar Amazon Cognito

AWS Mobile サービス

Cognito

Kinesis DynamoDB S3 SQS SES

グローバルインフラ

コアとなるサービス群

モバイルに最適化されたコネクタ

モバイルに最適化されたサービス

AWS SDK for Android

ストレージ データベース キュー メール コンピュートネットワーク

AWS Mobile SDK

Mobile Analytics SNS Mobile Push

AWS SDK for iOS AWS SDK for Unity

あなたのモバイルアプリ

ゲーム ユーティリティ ファイナンス エンターテインメント

Lambda

Device Farm API Gateway

AWS SDK for JavaScript

ソーシャル

Page 11: Black Belt Online Seminar Amazon Cognito

AWS Mobile SDK✤ 全てのサービスに共通の認証機構✤ オンライン・オフラインを⾃動でハンドリ

ング✤ クロスプラットフォームのサポート:

Android, iOS, Fire OS, Unity, Xamarin✤ Mobile OS への最適化

例: ローカルオフラインキャシュを利⽤するアーキテクチャ

✤ メモリフットプリントの削減✤ 各プラットフォームのエンハンスに追従

iOS Android Fire OS Unity

Xamarin

Page 12: Black Belt Online Seminar Amazon Cognito

典型的なユースケースユーザユーザ認証をしたい適切な権限を与えたい⾏動分析をしたい

データデータの同期をしたいデータベースを使いたいセンサーデータを送りたい

メディアファイル画像/⾳楽を保存したいアセットを配信したい

ロジックサーバサイドで処理したい独⾃ API を⽤意したい

メッセージプッシュ通知を送りたい

テスト実機でテストしたい

<TEST/>

Page 13: Black Belt Online Seminar Amazon Cognito

典型的なユースケースユーザ データ メディアファイル

ロジック メッセージ テスト

<TEST/>

Amazon Cognito

AWS Identity and Access Management

Amazon Mobile Analytics

Amazon DynamoDB

Amazon Kinesis

Amazon CloudFront

Amazon S3Transfer Manager

AWS Lambda

API Gateway

Amazon SNS Mobile Push AWS Device Farm

Amazon Cognito

Page 14: Black Belt Online Seminar Amazon Cognito

インフラ構築✤ インフラの運⽤管理

✤ キャパシティ✤ スケール✤ デプロイ✤ 耐障害性✤ モニタリング✤ ロギング

✤ ビジネスの差別化には直接つながらない機能のアプリ実装✤ 認証✤ スロットリング✤ スケーラビリティの確保✤ etc

Page 15: Black Belt Online Seminar Amazon Cognito

インフラ構築✤ インフラの運⽤管理

✤ キャパシティ✤ スケール✤ デプロイ✤ 耐障害性✤ モニタリング✤ ロギング

✤ ビジネスの差別化には直接つながらない機能のアプリ実装✤ 認証✤ スロットリング✤ スケーラビリティの確保✤ etc

不要

不要

不要(各サービスが

適切にハンドリング)

Page 16: Black Belt Online Seminar Amazon Cognito

Amazon Cognito

Page 17: Black Belt Online Seminar Amazon Cognito

IdP をまたがった認証済みユーザと

ゲストユーザの管理

統合的なアイデンティティの管理

クロスデバイス/クロスプラットフォームなユーザデータの同期

データ同期

AWS サービスへのセキュアなアクセス

AWSへのセキュアなアクセス

GuestYour own auth

Amazon Cognito Identity Amazon Cognito Sync

Amazon Cognitoのこれまで

k/v data

Page 18: Black Belt Online Seminar Amazon Cognito

Amazon Cognito SyncUser Data Storage andSync

Any Platform

iOS/Android/FireOS

ユーザのデータ、設定や情報を保存アプリとデバイスのデータをクラウドに保存でき、ログイン後にマージ

クロスデバイス/クロス OS な同期数⾏のコードでデバイスやプラットフォームをまたがってユーザのデータや設定を同期

オフライン動作データは常にローカルの SQLite にまず保存されるので電波が不安定もしくは不通であってもシームレスに動作

k/v data

Identity pool

バックエンド不要スケーラブルで信頼性の⾼いデータ同期基盤をシンプルなクライアント SDK を組み込むだけで利⽤可能

Page 19: Black Belt Online Seminar Amazon Cognito

AmazonAPI Gateway

Sign in with Facebook

Or

UsernamePassword

Sign In

Or

Start as a guest

Amazon Cognito Identity統合的なアイデンティティと AWS サービスへの

セキュアなアクセス

サードパーティのアイデンティティプロバイ

ダによる認証

Amazon Cognito Identity

ゲストアクセス

独⾃の認証システムによる認証

AWS リソースへセキュアにアクセスするための⼀時的な認証情報を提供

AmazonDynamoDB

Amazon S3

Page 20: Black Belt Online Seminar Amazon Cognito

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と連携して簡略化

Page 21: Black Belt Online Seminar Amazon Cognito

Amazon Cognitoの認証フロー

Amazon Cognito ID(Temp Credentials)

Amazon DynamoDB

End Users

Developer

App with AWS Mobile SDK

Accessto 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

TokenPool ID

Role ARNs

User Authentication System

(Running on AWS or not)

Token

Page 22: Black Belt Online Seminar Amazon Cognito

未認証ユーザのゲストアクセス(Unauthenticated Identities)✤ ID プロバイダで認証をしていないユーザをゲスト

ユーザとしてユニーク ID の付与と管理✤ 未認証の場合、ID はデバイスと紐づくので同⼀デバイスから

のアクセスの場合に同⼀ユーザとして認識される✤ 未認証によるアクセスを許可しない設定も可能

✤ アプリや AWS リソースへのアクセスにアカウントの作成や認証が不要✤ アクセス権限は未認証ユーザに対して割り当てた IAM Role の

ポリシーに基づく✤ センサーデバイス等のスクリーンや⼊⼒装置のないデバイス

に対してもユニーク ID の付与と管理が可能

✤ データはクラウド上に保存され後からログインした場合は⾃動でマージ

VisitorPreferences

Cognito Store

Guest

EC2 S3 DynamoDB Kinesis

Page 23: Black Belt Online Seminar Amazon Cognito

(参考)OpenID Connect✤ 2014年2⽉に最終承認された ID 連携に関する仕様

✤ 準拠している ID プロバイダを Cognito でも利⽤可能例:Salesforce, Ping Identity, Google etc…

Page 24: Black Belt Online Seminar Amazon Cognito

Amazon Cognito Identity統合的なアイデンティティとAWSサービスへの

セキュアなアクセス

サードパーティのアイデンティティプロバイ

ダによる認証

Developer Authenticated Identities

ゲストアクセス

独⾃の認証システムによる認証

Sign in with Facebook

Or

UsernamePassword

Sign In

Or

Start as a guest

独⾃形式のユーザ ID で認証したい場合、認証システムを実装して連携することで可能

Page 25: Black Belt Online Seminar Amazon Cognito

Developer Authenticated Identity

UsernameAnd Password

独⾃認証システム

パブリック ID プロバイダの併⽤Cognito の ID を元にパブリックな ID プロバイダと独⾃認証を併⽤して管理することも可能

認証基盤の実装が必要GetOpenIdTokenForDeveloperIdentity() を実装する既存の認証基盤を使う場合、改修が必要

独⾃認証システムの利⽤パブリックなIDプロバイダではなく独⾃のUsername と Password を使って認証

Page 26: Black Belt Online Seminar Amazon Cognito

Amazon Cognitoの認証フロー(Developer Authenticated Identities)

Amazon Cognito ID(Temp Credentials)

Amazon DynamoDB

End Users

Developer

App with AWS Mobile SDK

Accessto 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 TokenPool ID

Role ARNs

独⾃認証システム(AWS上で稼働していなくてもOK)

OIDC Token

OIDC Token

Page 27: Black Belt Online Seminar Amazon Cognito

Photo credit: jerryfergusonphotography via Visualhunt / CC BY

Developer Authenticated Identitiesの課題

Page 28: Black Belt Online Seminar Amazon Cognito

✤ 開発者は「付加価値を⽣まない重労働」に従事しなければいけない✤ディレクトリの構築と維持✤セキュリティ権限の取得✤パスワード紛失といったワーク

フローのサポート✤ユーザベースの成⻑にあわせた

スケール

Developer Authenticated Identities の課題

Page 29: Black Belt Online Seminar Amazon Cognito

Amazon Cognito Identity User Pools (Beta)

モバイルおよび Web アプリにサインアップとサインイ

ンの機能を簡単に追加

ユーザ管理を簡単に

電話番号や email アドレスの検証と多要素認証の提供

拡張されたセキュリティ機能

数億のユーザまでスケールするユーザディレクトリを作成・管理するシンプル、セキュア、低コストでフル

マネージドなサービス

マネージド型ユーザディレクトリ

Page 30: Black Belt Online Seminar Amazon Cognito

幅広いユーザシナリオ

Email もしくは電話番号による確認

パスワード紛失

ユーザのサインアップとサインイン

アカウントを確認するためのEmail アドレスや電話番号の検証

パスワードを紛失した場合にユーザは⾃分⾃⾝でパスワード変更可能

Email、電話番号もしくはユーザ名とパスワードを使⽤したサインアップサインアップ後のサインイン

ユーザプロファイル カスタム属性を含むユーザプロファイルの取得と更新

SMS ベースの MFA 有効にすると、サインアップ、パスワード紛失におけるフローの⼀環としてSMS を通じた確認コードによる多要素認証(MFA)を利⽤可能

Page 31: Black Belt Online Seminar Amazon Cognito

幅広い管理者シナリオ

ユーザプール内のユーザ管理

Email と電話番号の確認

AWS Lambda によるカスタマイズ

パスワードポリシーのセットアップ

ユーザプールの作成と管理

ユーザプール内の特定ユーザのリスト、検索、アクション実⾏

アカウントの有効化前に SMS を通じてユーザの email アドレスと電話番号を検証する設定(SMS経由)

ワークフローをカスタマイズするためにAWS Lambda のファンクションを作成

最⼩⽂字数、⼤⽂字、特殊⽂字を含めるといったパスワード要件のコントロール

AWS アカウント内に複数のユーザプールを作成、構成、削除可能

属性の定義 必要な属性の選択とカスタムユーザ属性の定義

Page 32: Black Belt Online Seminar Amazon Cognito

セキュアなサインインを簡単に

トークンベースの認証

Secure Remote Password プロトコル

SMS ベースの多要素認証(MFA)

OpenID Connect (OIDC) とOAuth2.0の標準をベースとしたトークンを利⽤

end to end でセキュアにパスワードを取り扱うために Secure Remote Password (SRP) プロトコルを使⽤

セキュリティの外部レイヤとして携帯電話のテキストメッセージ機能をエンドユーザが利⽤可能

Page 33: Black Belt Online Seminar Amazon Cognito

Amazon Cognitoと統合されたアイデンティティ

Amazon CognitoUser Pool

User

サインイン1

アクセストークンと ID トークンの返却

2

Amazon Cognito -Federated Identities(Identity Pool)AWS内の認証情報を

取得

3

AWSサービスへのアクセス

4

AmazonDynamoDB

AmazonS3

AmazonAPI Gateway

Page 34: Black Belt Online Seminar Amazon Cognito

ユーザ属性✤ 標準で⽤意されている16種類の属性に加え最⼤25個まで任意のカスタ

ム属性を追加可能✤ 標準で⽤意されている属性は設定で required にチェックを⼊れるとサ

インアップ時に必須な情報となる✤ Email や電話番号を使ってサインインしたい場合はエイリアスを利⽤

する✤ カスタム属性

✤⽂字列もしくは数値で定義可能✤最⼤/最⼩⽂字数を設定可能✤暗号化され、検索不可

Page 35: Black Belt Online Seminar Amazon Cognito

ユーザ属性属性名 エイリアス利⽤化 備考address

birth_date

email ✓ 検証可能family_name

gender

given_name

locale

middle_name

nickname

phone_number ✓ 検証可能国番号が必須(+81など)ハイフン不要

picture

preferred_username ✓ reqiuredとariasの両選択は不可profile

timezone

username プール内でユニークであること常に必須

website

Page 36: Black Belt Online Seminar Amazon Cognito

パスワードポリシーの設定✤ よくあるパスワードポリシーを設定可能

✤最⼩⽂字数(6⽂字以上)✤⼤⽂字が必ず含まれること✤数字が必ず含まれること✤以下の特殊⽂字が必ず含まれること

^ $ * . [ ] { } ( ) ? - “ ! @ # % & / , > < ‘ : ; | _ ~ `

Page 37: Black Belt Online Seminar Amazon Cognito

Email と電話番号の検証✤ 検証コードを Email もしくは SMS で送信することで⾃動的に有効性

を検証可能✤ 設定を有効にしておくとユーザ登録時もしくは「email」もしくは

「phone_number」の値が追加された時に⾃動で送信される✤ クライアントアプリ側では検証コードが必要かどうかが判別可能なの

でユーザに検証コードを促す UI を⽤意する✤ Email や電話番号を使わずに独⾃の⽅法で検証したい場合は「pre-

signup」フックと AWS Lambda を利⽤する

Page 38: Black Belt Online Seminar Amazon Cognito

MFA(Multi Factor Authentication)✤ SMS を利⽤した多要素認証をサポート✤ 必須にすることもユーザに選択させることも可能✤ MFAを有効にした場合は「phone_number」が必須になる✤ クライアントアプリでサインイン時にユーザ名とパスワードだけでな

くコード⼊⼒の UI を⽤意する✤ ベータ期間中は SMS の送信元番号は変更不可

Page 39: Black Belt Online Seminar Amazon Cognito

AWS Lambda を使ったカスタマイズ

AWS Lambda フック 例

Pre user sign-upサインアップリクエストを許可/拒否するためのカスタムバリデーション

Custom message検証メッセージのカスタマイズとローカライズ

Pre user sign-inサインインリクエストの拒否/許可するためのカスタムバリデーション

Post user sign-in カスタム分析のためのイベントロギング

Post user confirmationウェルカムメッセージやカスタム分析のためのイベントロギング

Page 40: Black Belt Online Seminar Amazon Cognito

Pricing✤ MAU(Monthly Active User)に基いて課⾦

✤サインアップ、サインイン、トークンの更新またはパスワードの変更などの操作が発⽣したユーザ

✤ 50000 MAUの無料利⽤枠

MAU MAUあたりの料⾦最初の 50,000 MAU まで 無料

次の 50,000 MAU まで 0.00550 USD

次の 900,000 MAU まで 0.00460 USD

次の 9,000,000 MAU まで 0.00325 USD

10,000,000 MAU を超える分 0.00250 USD

Page 41: Black Belt Online Seminar Amazon Cognito

Demo

Page 42: Black Belt Online Seminar Amazon Cognito
Page 43: Black Belt Online Seminar Amazon Cognito
Page 44: Black Belt Online Seminar Amazon Cognito
Page 45: Black Belt Online Seminar Amazon Cognito
Page 46: Black Belt Online Seminar Amazon Cognito
Page 47: Black Belt Online Seminar Amazon Cognito
Page 48: Black Belt Online Seminar Amazon Cognito
Page 49: Black Belt Online Seminar Amazon Cognito
Page 50: Black Belt Online Seminar Amazon Cognito
Page 51: Black Belt Online Seminar Amazon Cognito
Page 52: Black Belt Online Seminar Amazon Cognito
Page 53: Black Belt Online Seminar Amazon Cognito
Page 54: Black Belt Online Seminar Amazon Cognito
Page 55: Black Belt Online Seminar Amazon Cognito
Page 56: Black Belt Online Seminar Amazon Cognito
Page 57: Black Belt Online Seminar Amazon Cognito
Page 58: Black Belt Online Seminar Amazon Cognito
Page 59: Black Belt Online Seminar Amazon Cognito
Page 60: Black Belt Online Seminar Amazon Cognito
Page 61: Black Belt Online Seminar Amazon Cognito

Photo credit: rolands.lakis via VisualHunt.com / CC BY

Page 62: Black Belt Online Seminar Amazon Cognito

資料の配置場所✤ AWS クラウドサービス活⽤資料集

✤ http://aws.amazon.com/jp/aws-jp-introduction/

✤ AWS Solutions Architect ブログ✤最新の情報、セミナー中のQ&A等が掲載されています✤ http://aws.typepad.com/sajp/

Page 63: Black Belt Online Seminar Amazon Cognito

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp検索

最新技術情報、イベント情報、お役⽴ち情報、お得なキャンペーン情報などを⽇々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 64: Black Belt Online Seminar Amazon Cognito