Auth in a Serverless world

21
Auth in a serverless world 古⽥ 秀哉, CISSP Serverless Meetup Tokyo #3 07/12/2017

Transcript of Auth in a Serverless world

Page 1: Auth in a Serverless world

Auth in a serverless world古⽥ 秀哉, CISSP

Serverless Meetup Tokyo #307/12/2017

Page 2: Auth in a Serverless world

⾃⼰紹介Auth0 セールスエンジニア古⽥ 秀哉, CISSP

セキュリティの中の⼈。外資系ソフトウェア企業でIdentity Management

とか、セキュリティとかAPI Managementのコンサルティングを携わってます。

Page 3: Auth in a Serverless world

会社概要• 設⽴ 2013年• 本社所在地ワシントン州ベルビュー

ü ⽶国各地の他、ロンドン、ベルギー、シドニー、ブエノスアイレス、等

• 直近までマイクロソフト社に在籍していた創業メンバーü ジョン ゲルシー (Jon Gelsey, CEO)

ü ユージニオ ペース (Eugenio Pace, VP, Customer Success)

ü マティアス ウォロスキー (Matias Woloski, CTO)

• その他の創業メンバーü ジェアード ハンスン (Jared Hanson)

- 最も⼈気ある Node.js の認証フレームワーク ”Passport”の開発者

ü ユージン コーガン (Eugen Kogan)- AT&T、Amazon.com、国防総省での勤務経験のあるセキュリティ部⾨⻑

* Eugenio Pace と Matias Woloskiは、右の本の共著者

Page 4: Auth in a Serverless world

AuthN/AuthZって?Authentication (AuthN) = 認証

アクセスしてきたのが誰で、正しいかどうかを識別して確認することFactor: password, Matrix表, OTP, PKI, 指紋, 静脈, etc…

(What you know, what you have, What you are)

Authorization (AuthZ) = 認可リクエストが許可されるかどうかを決めること

Page 5: Auth in a Serverless world

認証・認可⽅式

Authentication (認証):OpenID Connect • ⾃前で認証システムを構築したくないので外部の認証システムを利⽤したい。

facebookのアカウントを使って、⾃分で作ったアプリにログインさせたい

Authorization (認可 ):OAuth2.0 • ユーザの許可を得た上で、外部システムにアクセスしたい

facebookやlinkedInに登録されている属性情報を⼊⼿したいユーザーに成り代わって、ツイートしたい

Federation: SAML, WS-Federation

Page 6: Auth in a Serverless world

認証機能を組み込みたいけど・・・。

実装するの面倒だし大変そう

セキュリティとか認証は外でやってくれると嬉しい

Developerは提供する機能に集中し

たい

APIに認証・認可フローを入れる?

なんのためのマイクロサービス?

セキュリティのリスクや脆弱性対策どうするの?

認可フロー種類たくさんあるけど、どれが最適なの?

いちいちRFC読み解いて実装する?

Page 7: Auth in a Serverless world

Auth0, Identity as a Service platform (IDaaS)

ユーザ認証・認可社内外Webリソースの利⽤

パートナーとのコラボレーション

ソーシャルアカウント連携

APIのセキュアなアクセス

SaaS/PaaSへのシームレスなアクセス

SAML/WS-Fed

SAML

AD/LDAP

Oauth 2.0OIDC

Oauth 2.0OIDC

Oauth 2.0OIDC

JWT

Oauth 2.0OIDC Oauth 2.0

OIDC

Page 8: Auth in a Serverless world

ということで Auth0 (Fanctional SaaS)

認証・認可機能をSaaS (IDaaS)で提供している会社 https://auth0.com/

Node.jsベース。Microservicesでソリューションができており、機能拡張がしやすい-OAuth2.0/OpenID ConnectとかSAML, AD/LDAP, DBなどに対応-Identity ManagementやSocial Sign-inの導⼊が⾮常に簡単に⾏える-RESTful API (Authentication, Management API)を提供。SDKやサンプルプログラムも

githubで公開-認証Plug-inとして簡単にアプリ統合できる-様々なプラットフォーム・フレームワークに対応。ポータルからサンプルソースを⾃動⽣成

-Serveless環境を提供。認証サービスAuth0の拡張機能⽤でも利⽤

Page 9: Auth in a Serverless world

なんでAuth0がServerless?

フレキシブルで拡張性の⾼いことがAuth0 Identity Management プラットフォームの⼤きな特徴

そもそもの経緯はAuth0のテナント利⽤者が、認証認可トランザクションでカスタムコードの実⾏ができるようなSandbox環境が必要だったため

⾊々検討した結果、Auth0がServerless環境を開発しwebtaskとして公開

Page 10: Auth in a Serverless world

Webtaskとは …(Function as a Service)

信頼できないコードを セキュアな⽅法で実⾏するために開発された

マルチテナント サーバレス・プラットフォーム

Page 11: Auth in a Serverless world

1. マルチテナント システムで信頼できないコードを実⾏させる場合において、セキュアにコード実⾏が出来ること

2. 認証DoS攻撃に関連した不⽤意なリソース消費を防ぎたい

3. 認証サービスを提供しているので、Latencyは最⼩限に

Serverless 導⼊計画時の課題

Page 12: Auth in a Serverless world

⾊々なプラットフォームを利⽤することを検討してみましたが…結局 ⾃前でServerlessを構築することにしました。

Page 13: Auth in a Serverless world

Webtask の特徴CoreOS上に、Docker, etcd, fleetをベースにして構築各テナントごとに専⽤のwebataskコンテナを⽤意し実⾏

→他のテナントに影響を与えない→結果はJSON形式でレスポンス

Webtask runtimeはNode.jsベース。webtask環境に事前にNode.jsモジュールをProvisioningしておけば実⾏可能

(Node.jsもしくは.NET[C#]に対応)

各クラスタ上でPre-warm状態でwebtaskコンテナが動作→RPC Logicで動作→Cold Startup latencyを⼤幅に削減

Page 14: Auth in a Serverless world
Page 15: Auth in a Serverless world

Webtaskを外部公開

これ便利だから認証サービス関係なく公開したら使ってもらえるんじゃない?

で、公開しました。 https://webtask.io

評判良かったのでwebtaskをAuth0 ExtendとしてSubscription提供することに。(2017/04〜)

https://auth0.com/extend/

Page 16: Auth in a Serverless world

Image Background

Developer love

Very easy to use and fast to get going.

Rich web based node.js editing environment

Great Github integration

Most common npm modules built in

Low startup latency

Supports any cloud provider or can be ran on-premise

Page 17: Auth in a Serverless world

You can use any language and framework*

*as long as it is Node.js

Page 18: Auth in a Serverless world

Image Background

Use your own editor and our CLI

Or our web based editor

Page 19: Auth in a Serverless world

From Slack

Page 20: Auth in a Serverless world

よかったら無料トライアルをお試しください。

Authentication and Authorization ServicesAuth0 https://auth0.com/jp/

Serverless Platformhttps://webtask.io/

https://auth0.com/extend/

Page 21: Auth in a Serverless world

最後に・・・

どうでもいい話ですが、Serverless Frameworkの

「Join Beta」ボタンクリックすると表⽰される認証画⾯・・・。

あれ、Auth0のやつです。