Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介

7.306 Aufrufe

Veröffentlicht am

AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介

Veröffentlicht in: Technologie
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介

  1. 1. アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 辻 義一 2017.10.10 【AWS Black Belt Online Seminar】 AWSにおけるアプリ認証パターン
  2. 2. AWS Black Belt Online Seminar とは AWSJのTechメンバがAWSに関する様々な事を紹介するオンラインセミナーです 【火曜 12:00〜13:00】 主にAWSのソリューションや 業界カットでの使いどころなどを紹介 (例:IoT、金融業界向け etc.) 【水曜 18:00〜19:00】 主にAWSサービスの紹介や アップデートの解説 (例:EC2、RDS、Lambda etc.) ※開催曜日と時間帯は変更となる場合がございます。 最新の情報は下記をご確認下さい。 オンラインセミナーのスケジュール&申し込みサイト https://aws.amazon.com/jp/about-aws/events/webinars/
  3. 3. 内容についての注意点 • 本資料では2017年10月10日時点のサービス内容および価格についてご説明しています。最新の 情報は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.
  4. 4. Agenda 用語について 本Webinarでの想定ユースケース3パターン 登場するサービスの概要紹介 AWS上での実現パターン
  5. 5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 用語について
  6. 6. 用語の確認(1/2) 統一されておらず曖昧な用語もあるが、本ウェビナーでは以下の通りとする。 認証 = Authentication (AuthN) 相手が本当に申告された人であるかを確認すること。 認可 = Authorization (AuthZ) 特定の条件で特定のリソースへのアクセスを許可すること。 認証連携 = Federated Authentication, Federated Identity, ID Federation, Federation サードパーティで行われた認証情報を受け取って、認証を実施する代わりにすること。 アプリにとって認証を委譲していることになる。 別の用語例: 実現方法の例:SAML, OpenID, OpenID Connect 代理アクセス = Delegated Acccess ユーザ合意の上で、サード−パーティがユーザの代わりにリソースへのアクセスを許可すること。 ユーザにとって認可されている一部をサードパーティに委譲することになる。 実現方法の例:OAuth
  7. 7. 用語の確認(2/2) 認証情報 = Credential 認証をパスするために必要な情報のこと。 具体例:ユーザ名とパスワード、IAMユーザのアクセスキーとシークレットアクセスキー トークン = Token, Ticket 認証をパスするために必要な情報で、一定期間のみ有効な情報のこと。 具体例:IAMロールで割り当てられるアクセスキーとシークレットアクセスキーとトークン、 SAMLで認証後に発行されるSAML Assertion、JWT (Json Web Token)
  8. 8. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本Webinarでの想定ユースケース 3パターン 勝手に 3分類
  9. 9. ① コンシューマ向けWebサイト 典型的なWebサイト構成 WebのHTML生成は サーバサイドで実施 初回ユーザ認証後は、 Cookieベースでの認証 ユーザの状態を セッションストアに保持 user001 ******** login ブラウザ □□□ Web + 認証機能 ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト
  10. 10. ① コンシューマ向けWebサイト 初回認証、その後Cookieベース認証のイメージ ID/Passwordでまず認証し、その後の通信ではCookie内のセッションIDを常に確認する。 初回アクセス、ID/Password認証 ブラウザ: HTMLのフォームでID/Passwordを送信する。 Webサーバ: ユーザストアにID/Passwordを確認する Webサーバ: セッションにログイン情報を反映する。 Webサーバ: セッションIDが入ったCookieを含めて HTMLコンテンツを返す。 2回目以降のアクセス、Cookieベースの認証 ブラウザ: セッションIDが入ったCookieを含めてリクエストを送る。 Webサーバ:セッションIDがログイン済みかセッションストアに確認する。 Webサーバ: ログイン済みであればHTMLコンテンツを返す。 ブラウザ Webサーバ user001 ******** login ユーザレポジトリ セッションストア 1 4 5 1 7 2 3 6 2 3 4 5 6 7 Cookie
  11. 11. ① コンシューマ向けWebサイト 典型的なWebサイト構成 WebのHTML生成は サーバサイドで実施 初回ユーザ認証後は、 Cookieベースでの認証 ユーザの状態を セッションストアに保持 user001 ******** login ブラウザ □□□ Web + 認証機能 ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト バックエンド システムアプリの認証情報 でアクセス API サードパーティ Webサイト a f t g サードパーティとの 認証連携 SAML ○○○ Web セッション ストア 内部や外部への認証連携 サードパーティ Webサイト AWSのマネージドサービス AWSリソースに 直接アクセス 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API
  12. 12. サードパーティ Webサイト サードパーティ Webサイト a f t g サードパーティとの 認証連携 OAuth AWSのマネージドサービス トークンで APIにアクセス 代理アクセスできる トークン発行 バックエンド SAML バックエンド システムアプリの認証情報 でアクセス API 外部への認証連携 AWSリソースに 直接アクセス モバイル アプリ ID/Passwodでの認証・ トークン発行 トークン ベースでの認証 API API トークン シングル ページ アプリケーション ○○○ API □□□ API + 認証機能 ユーザレポジトリ ② モバイルアプリやシングルページアプリケーショ ン サーバサイドはAPIで実現 サーバサイドは ステートレスな構成 モバイルアプリなど クライアントサイドの 画面はJavaScriptで構成 初回ユーザ認証後は、 トークンベースでの認証
  13. 13. ② モバイルアプリやシングルページアプリケーショ ン 初回認証、その後トークンベース認証のイメージ ID/Passwordでまず認証し、その後の通信ではトークンを付けてリクエストを行う。 初回アクセス、ID/Password認証 アプリ: ユーザの入力したID/Passwordを取り出し て認証APIに送信する。 APIサーバ: ユーザストアにID/Passwordを確認する。 APIサーバ: トークンを返す。 2回目以降のアクセス、Cookieベースの認証 アプリ: トークンを付けてリクエストを送る。 APIサーバ: トークンを公開鍵暗号方などで検証する。 APIサーバ: リクエストに応じてレスポンスを返す。 APIサーバ ユーザレポジトリ 1 3 4 1 6 2 2 3 4 5 6 モバイル アプリ シングル ページ アプリケーション 5
  14. 14. ③ エンタープライズ企業の社内システム SAML user001 ******** login 社員PC Active Directory Federation Service (ADFS, IdP) Acitve Directory Linux/Unix系 Webサーバ インターネット サードパーティ SaaS ユーザ レポジトリ SAML対応 Webサーバ Webサーバ サードパーティ との認証連携 SSO製品 社内での認証連携 Webサーバ ID/Passwodでの認証 統合Windows認証 / Kerberos認証 SSOやパスワード同期を実現 複数パスワード管理の煩雑さ やログインの手間を軽減する PCやサーバにWindowsが多数 使われるため、Windowsの認 証機能を活用 認証連携はSAMLで実現
  15. 15. 登場するサービスの概要紹介
  16. 16. AWS IAM (Identity and Access Management) ユーザやロールに、何を 行ってよいか記載された ポリシーを割り当てて制 御する。 APIにアクセスする際に 使用する認証情報は • アクセスキー • シークレットアクセスキー • トークン(有効期限ありの場合のみ) で構成されている。 AWSのサービスは認証情 報をSigV4という方法で署 名をAPIリクエストに毎回 付けてアクセスする。 AWSのサービスへの認証と認可を管理するサービス EC2 起動、停止 S3 アップロード ダウンロード Management Console ユーザ名・ パスワード AWS管理者・ オペレータ SDK アクセスキー・ シークレット アクセスキー AWS CLI > API IAMユーザ IAMロール ユーザ、 アプリ、 サービスなど アクセスキー・ シークレット アクセスキー・ トークン
  17. 17. Amazon Cognito Cognito User Pool アプリケーションにユーザー登録やサイ ンイン機能を追加できる。 • パスワードやMFAを使ったユーザ 認証、フェデレーションして認証 • 認証後に独自のアプリケーションで も検証可能なJWT形式のトークンが 得られる Cognito Federated Identities IDプロバイダと認証連携して、 ロールを使った一時的なAWS認証 情報を得られる。 主にモバイル向けに認証機能を提供するサービス Cognito Sync アプリケーションにデバイス間でユーザ出た の同期を実現できるサービスとライブラリ。
  18. 18. Amazon API Gateway REST APIを実現するリバースプロキシとして 動作 OS、キャパシティ等インフラの管理不要 認証・認可をメソッド単位で制御可能 • 標準:AWS認証情報 • カスタム:Lambdaで任意に実装可 APIに必要なスロットリング、キャッシュの 機能を提供 バックエンドとしてLambda、既存Webシステ ムを利用可能 Web APIの作成・保護・運⽤と公開を簡単に モバイル アプリ Webサイト サービス API Gatew ay Lambda API Gateway キャッシュ EC2 / Elastic Beanstalk Webサービス CloudWatch モニタリング Lambda カスタム オーソライザー
  19. 19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS上での実現パターン
  20. 20. user001 ******** login ブラウザ □□□ Web + 認証機能ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト バックエンド システムアプリの認証情報で アクセス API サードパーティ Webサイト a f t g サードパーティとの認 証連携 SAML ○○○ Web セッション ストア 内部や外部への認証連携 サードパーティ Webサイト AWSのマネージドサービス AWSリソースに 直接アクセス 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API ① コンシューマ向けWebサイト ID/Passwodでの認証・Cookie発行 Cookieベースでの認証 → user001 ******** login ブラウザ □□□ Web + 認証機能ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア 認証はAWS上でも実装方法に違いは無し。 ユーザレポジトリには以下のものが使用可。 • Amazon DynamoDB • Amazon RDS ユーザレポジトリ &セッションストア
  21. 21. user001 ******** login ブラウザ □□□ Web + 認証機能ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト バックエンド システムアプリの認証情報で アクセス API サードパーティ Webサイト a f t g サードパーティとの認 証連携 SAML ○○○ Web セッション ストア 内部や外部への認証連携 サードパーティ Webサイト AWSのマネージドサービス AWSリソースに 直接アクセス 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API ① コンシューマ向けWebサイト ブラウザからAWSリソースへのアクセス → S3とCloudFrontは認証の要否を設定でき、 認証方法の1つとして署名付きURLを利用で きる。 生成されたURLは、長いパラメータが付いて いますが単なるURLのため、HTML内にリン ク先やイメージのURL、ファイルのアップ ロード先に使用できる。 この方法は、Webサーバの負荷軽減、Web サーバのステートレス化に役立つ。 user001 ******** login ブラウザ AWSのマネージドサービス AWSリソースに 直接アクセス 署名付きURLをサーバサイド生成することで直接アクセス • Amazon S3 • Amazon CloudFront 例: https://s3-ap-northeast- 1.amazonaws.com/tsujiy- share/blackbelt.pdf?Signature=3qU6GYLrhaqUsA OZZs3%2BnkqEMFM%3D&Expires=1509937417 &AWSAccessKeyId=AKIAI5WBYZZKWLQO7XVA 署名付きURL をリンク先に
  22. 22. ■署名機能の違い ※ダウンロード回数制限や署名URLの失効はできない。URLの有効期限をかなり短くして、都度URLを生成する仕 組みで対応するのがおすすめ。 ① コンシューマ向けWebサイト S3 CloudFront ( + S3) 署名に必要な鍵 AWS認証情報 (IAMユーザ、IAMロール) CloudFrontキーペア 署名時に独自ドメイン名 利用可(HTTPのみ) 利用可(HTTPSも) 署名時に行える制限 有効期限 有効期限、開始日時、IPアドレス 署名時のスケーラビリ ティ キーを適切に分散させればスケーラビリティ が得られる キャッシュによりさらに高いスケーラビリ ティが得られる(認証情報でURLが異なって いてもキャッシュ有効) その他 - Cookieでも認証が可能で特定パス以下全体を 許可するなどが可能
  23. 23. user001 ******** login ブラウザ □□□ Web + 認証機能ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト バックエンド システムアプリの認証情報で アクセス API サードパーティ Webサイト a f t g サードパーティとの認 証連携 SAML ○○○ Web セッション ストア 内部や外部への認証連携 サードパーティ Webサイト AWSのマネージドサービス AWSリソースに 直接アクセス 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API ① コンシューマ向けWebサイト アプリの認証情報でアクセス → EC2 インスタンスプロファイルを使うと EC2 インスタンス内で、AWS 認証情報を入手で きる。 パラメータストアでは、パスワードやDB接 続文字列など任意の文字列を入手できる。 アプリケーション プログラムと認証情報を 分離できるため、パスワードなどの流出を防 ぎやすくなる。 アプリと認証情報を分離し、安全に管理 • EC2 インスタンスプロファイル • EC2 Systems Manager パラメータストア バックエンド システムアプリの認証情報で アクセス API AWSのマネージドサービス
  24. 24. user001 ******** login ブラウザ □□□ Web + 認証機能ID/Passwodでの 認証・Cookie発行 Cookieベースでの認証 Cookie ユーザレポジトリ &セッションストア Webサイト バックエンド システムアプリの認証情報で アクセス API サードパーティ Webサイト a f t g サードパーティとの認 証連携 SAML ○○○ Web セッション ストア 内部や外部への認証連携 サードパーティ Webサイト AWSのマネージドサービス AWSリソースに 直接アクセス 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API ① コンシューマ向けWebサイト サードパーティとの認証連携 内部との認証連携 代理アクセス → AWS上でも実装方法に違いは無し。 user001 ******** login ブラウザ サードパーティ Webサイト a f t g サードパーティとの認 証連携 SAML 内部や外部への認証連携 サードパーティ Webサイト 代理アクセスできる トークン発行 OAuth トークンで APIにアクセス API
  25. 25. SAML □□□ API + 認証機能 サードパーティ Webサイト a f t g サードパーティとの 認証連携 ID/Passwodでの認証・ トークン発行 ② モバイルアプリやシングルページアプリケーショ ン 代理アクセスできる トークン発行 サードパーティ Webサイト OAuth AWSのマネージドサービス トークンで APIにアクセス AWSリソースに 直接アクセス バックエンド システムアプリの認証情報で アクセス API バックエンド トークン ベースでの認証 API API トークン ○○○ API ユーザレポジトリ モバイル アプリ シングル ページ アプリケーション トークン ベースでの認証 API トークン ○○○ API API AWSのマネージドサービス AWSリソースに 直接アクセス ID/Passwodでの認証・ トークン発行 ID/Passwodでの認証・トークン発行 トークンベースでの認証 ブラウザからAWSリソースへのアクセス → ユーザ認証・ユーザレポジトリ・ トークン発行をサービスで実現 • Amazon Cognito Cognito ID/Passwodでの認証・ トークン発行 認証に関連する内容を一通りサービスで 実現できるため、実装コストや期間を 減らすことができる。 Eメールや携帯電話番号へのSMSを使った MFAも可能。
  26. 26. ② モバイルアプリやシングルページアプリケーション Cognito User Poolを使用した場合のユーザ認証のおおまかな流れ 標準ではSecure Remote Passwordプロトコルという仕組み でユーザ名とパスワードが検証される。 アプリ :InitiateAuth APIを呼び出す。 認証フローとしてUSER_SRP_AUTHを指定。 Cognito :チャレンジを返す。 チャレンジの種類としてPASSWORD_VERIFIERを返し、 パスワードの検証を求める。 アプリ :RespondToAuthChallenge APIを呼び出す。 パスワードを使って生成したチャレンジレスポンスを送る。 Cognito :3種類トークンを返す。 ・IDトークン(JWT形式、クレーム情報と認証用) ・アクセストークン(JWT形式、認証用) ・更新トークン(他トークン更新依頼時用) JWTトークン Cognito User PoolAPI (JSON) http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html 初回アクセス、ID/Password認証 JWT トークン モバイル アプリ シングル ページ アプリケーション user001 ******** login SDK iOS, Android, JavaScript 1 2 3 4 1 2 3 4
  27. 27. アプリ :独自のAPIを呼び出す。 Cognitoから受け取ったJWTトークンをAPIサーバへの呼び 出しに含める。 APIサーバ:JWTセットをダウンロードする。 APIサーバ :トークンを検証して、結果を返す。 JWTセットに含まれる公開鍵でユーザから受け取った JWTトークンの署名を検証して、OKであれば、 リクエストされたAPIを処理して結果を返す。 ② モバイルアプリやシングルページアプリケーション Cognito User Poolを使用した場合のユーザ認証のおおまかな流れ API http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity- providers.html#amazon-cognito-identity-user-pools-using-id-and-access-tokens-in-web-api 2回目以降のアクセス、独自APIサーバへのトークンベースの認証 APIサーバ モバイル アプリ シングル ページ アプリケーション user001 ******** login SDK iOS, Android, JavaScript JWT セット JWT トークン Cognito User Pool JWTトークンの検証は 注意して実装 1 4 2 3 1 2 4 3
  28. 28. アプリ :API Gatewayを呼び出す。 Cognitoから受け取ったJWTトークンをAPI Gatewayへの呼 び出しに含める。 API Gateway:JWTトークンを検証して、 Lambdaを呼び出す。 API Gateway :結果を返す。 JWTセットに含まれる公開鍵でユーザから受け取った JWTトークンの署名を検証して、OKであれば、 リクエストされたAPIを処理して結果を返す。 ② モバイルアプリやシングルページアプリケーション Cognito User Poolを使用した場合のユーザ認証のおおまかな流れ API http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html 2回目以降のアクセス、API Gatewayへトークンベースの認証 API Gateway モバイル アプリ シングル ページ アプリケーション user001 ******** login SDK iOS, Android, JavaScript JWT トークン 1 3 1 2 3 2 Lambda
  29. 29. ② モバイルアプリやシングルページアプリケーション Cognito User Poolを使用した場合のユーザ認証のおおまかな流れ API http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html 2回目以降のアクセス、AWSリソースへの認証 AWSの マネージドサービス モバイル アプリ シングル ページ アプリケーション user001 ******** login SDK iOS, Android, JavaScript AWS 認証情報 API JWT トークン アプリ :GetCredentialsForIdentity APIを呼び出す。 Cognito User Poolから受け取ったJWTトークンをCognito Federated Identitiesに渡す。 Cognito :AWS認証情報を返す。 認証情報は一時的なもので、アクセスキー、シークレット アクセスキー、トークンで構成されている。 アプリ :AWS認証情報を使ってAWSの他のサービス にアクセスする。 AWSサービス:結果を返す。 Cognito Federated Identities 1 2 3 4 1 2 3 4
  30. 30. □□□ API + 認証機能 サードパーティ Webサイト a f t g サードパーティとの 認証連携 ID/Passwodでの認証・ トークン発行 ② モバイルアプリやシングルページアプリケーショ ン サードパーティとの認証連携 → 代理アクセスできる トークン発行 サードパーティ Webサイト OAuth AWSのマネージドサービス トークンで APIにアクセス AWSリソースに 直接アクセス バックエンド システムアプリの認証情報で アクセス API バックエンド トークン ベースでの認証 API API トークン ○○○ API ユーザレポジトリ モバイル アプリ シングル ページ アプリケーション トークン サードパーティ Webサイト a f t g SAML Amazon, Facebook, Google, SAML との 認証連携をサービスで実現 • Amazon Cognito Cognitoサードパーティとの 認証連携 ユーザ認証に使用できるCognito User Pool で認証連携も行える。 ※Cognito User PoolはOpenID Connect、Twitterには現時点で未対応。 Cognito Federated IdentitiesはOpenID Connect、Twitterに対応しており、 AWS認証情報を得られる。
  31. 31. SAML □□□ API + 認証機能 サードパーティ Webサイト a f t g サードパーティとの 認証連携 ID/Passwodでの認証・ トークン発行 ② モバイルアプリやシングルページアプリケーショ ン 代理アクセスできる トークン発行 サードパーティ Webサイト OAuth AWSのマネージドサービス トークンで APIにアクセス AWSリソースに 直接アクセス バックエンド システムアプリの認証情報で アクセス API バックエンド トークン ベースでの認証 API API トークン ○○○ API ユーザレポジトリ モバイル アプリ シングル ページ アプリケーション トークン API AWSのマネージドサービス AWSリソースに 直接アクセス ID/Passwodでの認証・ トークン発行 ID/Passwodでの認証・トークン発行 ブラウザからAWSリソースへのアクセス Cognitoで対応できない方法で実現したい場合 → 以下のような場合、独自で認証を実現する 事が考えられる。 • クライアント証明書認証 • 独自のMFA • 独自ポリシーのパスワード認証 独自に認証してAWSの認証情報を発行 • AWS Security Token Service (STS)
  32. 32. □□□ API + 認証機能 サードパーティ Webサイト a f t g サードパーティとの 認証連携 ID/Passwodでの認証・ トークン発行 ② モバイルアプリやシングルページアプリケーショ ン トークンベースの認証 → 代理アクセスできる トークン発行 サードパーティ Webサイト OAuth AWSのマネージドサービス トークンで APIにアクセス AWSリソースに 直接アクセス バックエンド システムアプリの認証情報で アクセス API バックエンド トークン ベースでの認証 API API トークン ○○○ API ユーザレポジトリ モバイル アプリ シングル ページ アプリケーション 標準でAWSの認証情報に対応しており、認 証・認可をパスしたアクセスのみEC2や Lambdaなどに送ることができる。 Custom Authorizerで独自のトークンにも 対応できる。 トークン ベースでの認証 API API AWSの認証情報を使った認証・認可を サービスで実現 • Amazon API Gateway
  33. 33. サードパーティ Webサイト a f t g SAML サードパーティとの 認証連携 □□□ API + 認証機能 サードパーティ Webサイト a f t g サードパーティとの 認証連携 ID/Passwodでの認証・ トークン発行 ② モバイルアプリやシングルページアプリケーショ ン 代理アクセス → 代理アクセスできる トークン発行 サードパーティ Webサイト OAuth AWSのマネージドサービス トークンで APIにアクセス AWSリソースに 直接アクセス バックエンド システムアプリの認証情報で アクセス API バックエンド トークン ベースでの認証 API API トークン ○○○ API ユーザレポジトリ モバイル アプリ シングル ページ アプリケーション ユーザ認証に使用できるCognito User Pool で代理アクセスを実現できるOAuthプロコ ルに対応して、トークンをサードパーティ Webサイトに提供も行える。 サードパーティ Webサイト OAuth トークンで APIにアクセス API 代理アクセスできる トークン発行 OAuth を使った代理アクセス機能を実現 • Amazon Cognito Cognito
  34. 34. SAML user001 ******** login 社員PC Active Directory Federation Service (ADFS, IdP) Acitve Directory Linux/Unix系 Webサーバ インターネット サードパーティ SaaS ユーザ レポジトリ SAML対応 Webサーバ Webサーバ サードパーティ との認証連携 SSO製品 社内での認証連携 Webサーバ ID/Passwodでの認証 統合Windows認証 / Kerberos認証 Acitve Directory ③ エンタープライズ企業の社内システム Active Directory (AD) → 認証を利用するリソースをAWS上に 配置するなどのユースケースで Directory ServiceのMicrosoft ADを利用で きる。 ただし、既存のADを完全にAWS上に置き 換えたいなどの場合は、移行コストを考え るとEC2上のWindows Serverで実現する方 が良い。 ADの構築運用をサービスで実現 • AWS Directory Service • Amazon EC2 Systems Manager Config user001 ******** login 社員PC Webサーバ統合Windows認証 / Kerberos認証 インスタンス作成時に ドメインの自動参加
  35. 35. SAML user001 ******** login 社員PC Active Directory Federation Service (ADFS, IdP) Acitve Directory Linux/Unix系 Webサーバ インターネット サードパーティ SaaS ユーザ レポジトリ SAML対応 Webサーバ Webサーバ サードパーティ との認証連携 SSO製品 社内での認証連携 Webサーバ ID/Passwodでの認証 統合Windows認証 / Kerberos認証 ③ エンタープライズ企業の社内システム ID/Passwordでの認証 社内での認証連携 サードパーティとの認証連携 → AWS上でも実装方法に違いは無し。 SAML user001 ******** login 社員PC Active Directory Federation Service (ADFS, IdP) Linux/Unix系 Webサーバ インターネット サードパーティ SaaS ユーザ レポジトリ SAML対応 Webサーバ サードパーティ との認証連携 SSO製品 社内での認証連携 Webサーバ ID/Passwodでの認証
  36. 36. 組み合わせ: API Gateway + CloudFrontの署名Cookie 認証あり静的Webサイトを実現 • Amazon CloudFront + Amazon S3 Cookie Cookieベースでの認証 CloudFront S3 API Gateway Lambda トークンでの認証 ・Cookie発行 トークン ID/Passwodでの認証 ・トークン発行 Cognito user001 ******** login ブラウザ 認証部分のみHTML+JavaScriptでクライア ント部分を実装し、認証後はCookieを元に 単純な静的Webサイトを提供できる。 サードパーティ Webサイト a f t g サードパーティとの 認証連携 SAML
  37. 37. 最後に 認証機能はセンシティブで ユーザエクスペリエンスにも影響する。 マネージドサービスを使える所は使おう。 の組み合わせは特におすすめ。 Cognito API Gateway
  38. 38. 参考URL S3 署名付きURLを使ったダウンロード/アップロード: http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ShareObjectPreSignedURL.html http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/PresignedUrlUploadObject.html CloudFront署名付きURL/Cookie: http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html EC2 インスタンスプロファイル: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html EC2 Systems Manager パラメータストア: https://aws.amazon.com/jp/ec2/systems-manager/parameter-store/ http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-paramstore.html AWS re:Invent 2016: Serverless Authentication and Authorization (MBL306) https://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-serverless-authentication-and-authorization-identity- management-for-serverless-architectures-mbl306 AWS re:Invent 2016: Add User Sign-In, User Management, and Security to your Mobile and Web Applications with Amazon Cognito (MBL310) https://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-add-user-signin-user-management-and-security-to- your-mobile-and-web-applications-with-amazon-cognito-mbl310
  39. 39. オンラインセミナー資料の配置場所 AWS クラウドサービス活用資料集 • http://aws.amazon.com/jp/aws-jp-introduction/ AWS Solutions Architect ブログ • 最新の情報、セミナー中のQ&A等が掲載されています • http://aws.typepad.com/sajp/
  40. 40. @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、 お得なキャンペーン情報などを日々更新しています! もしくは http://on.fb.me/1vR8yWm 公式Twitter/Facebook AWSの最新情報をお届けします
  41. 41. AWSの導入、お問い合わせのご相談 AWSクラウド導入に関するご質問、お見積り、資料請求を ご希望のお客様は以下のリンクよりお気軽にご相談ください https://aws.amazon.com/jp/contact-us/aws-sales/ ※「AWS 問い合わせ」で検索してください
  42. 42. AWS Well Architected 個別技術相談会のお知らせ Well Architectedフレームワークに基づく数十個の質問項目を元に、お客 様がAWS上で構築するシステムに潜むリスクやその回避方法をお伝えす る個別相談会 https://pages.awscloud.com/well-architected-consulting-2017Q4-jp.html 参加無料 毎週火曜・木曜開催
  43. 43. ご参加ありがとうございました

×