JICS2013レポート(2) 3/4午後 Enterprise Sessions

AWSセキュリティープロセス概説

  • クラウドネイティブサービス
    • 必要な機能をサービスとしてオンデマンドに利用
    • 専用線接続、VPN接続: インターネット接続だけではない
    • スケールに応じて構成を拡張
      • DNSとWebサーバがあれば最低限は始められる
      • 10万、100万になったら、LB導入、WebとDBの分離
        • 拡張したときの図を見越してセキュリティーポリシーで運用できるのがAWS
        • マルチゾーンの設定も15分程で可能
  • 仮想クラウドのサーバ:幅広いニーズに対応
    • HPC, 料金体系、SSD、I/O能の保証
  • これまでの構成がそのまま移行できる
  • 一般的にみられる懸念事項
    • クラウドに関して心配なことは?(テックターゲット)
    • 情報漏洩、不正アクセス、他社データとの隔離、社外にデータを置くことへの抵抗
  • AWSのセキュリティーの実際
    • 梅谷(うめがい)さん
  • AWS Security Model Overview
    • 三者認証、責任共有モデル(顧客とAWSで同共でつくり上げる)
    • 物理的、AWS管理者アクセス、VM、ネットワーク
  • 責任共有モデル
    • AWSと顧客の責任分担の線引き
    • 柔軟な選択 → 顧客の責任範囲
    • 顧客側の例: サブネット構成、firewall設定
  • AWS Security Center
    • Security White Paper
    • Risk, Compliance White Paper
    • 定期的に更新
  • 三者認証: AWSで取得している認証
    • ISO 27001(ISMS), PCI DSS L1, SOC1/SOC2, SOX, FISMA, HIPAA
    • ISO 27001: AWSのインフラ、全世界、すべての地域のDCが取得している
  • 物理セキュリティー
    • non-descript facilities: 一見してAWS DCとはわからない。看板を出さない。場所を教えない
    • 周囲に対する堅牢な管理
    • 厳格に管理された物理的アクセス
    • 2つ以上のレベル・要素による認証(それ以上の場合もある)
    • すべてのアクセスはログされ監視される
  • EC2セキュリティー
    • ホストOS
      • 特定の管理用サーバーから個別のSSHキーによるログイン
      • すべてのアクセスはログされ監査される
    • ゲストOS
      • 顧客がroot権限を持ち管理
      • AWS管理者はログイン不可能 → 「なんとかしてください」と言われてもできない
      • アクセスには顧客自身で作成したキーを使用
    • firewall
      • inbound: default deny
    • サインドAPIコール
      • X.509証明書、もしくは顧客の秘密鍵が必要
  • ネットワークセキュリティー
    • DDoS対策
      • 標準的な緩和技術を施行
    • MITM (Man in the Middle)
      • すべてのエンドポイントはSSLで保護
      • EC2のホストキーはブート毎に生成・更新
    • IPスプーフィング
      • OSレベルで不強
    • ポートスキャン禁止
    • パケットスニッフィング
      • プロミスキャス・モードは不許可にしている(パブリッククラウドなので)
      • ハイパーバイザーレベルで制御

クラウドサービスとしてのdigital identity

  • Active Directory ドメインを使っている人
    • 中央システムとして、一部システムで〜 パラパラ 〜1/10以下
    • AD: 昔はディレクトリサービスだった。2008年以降、ソリューション全体を指す
      • ディレクトリ部分は「ADドメインサービス」
      • 他にAD ligtweight directory service (LDS) 単なるLDAP、証明書サービス、rights management service (RMS)
    • ADFS federation service: identity federation 2003R2以降でサポート 〜 いまだ浸透していない
  • サービスあるところIdPあり
    • サービス(Service Provider: SP)には認証と認可がつきもの
    • Facebook, Windows Live, google, Salesforce, MS Office 365
    • これまでオンプレミスで増えてしまったIdPをどうするか? → パブリッククラウドでもくり返すのか??
      • くり返されると困る
    • オンプレミスでは乱立をどう回避したのか → 回避は……できませんでした……
      • いままでの対拠
        • 統合認証: ひとまず一か所に集めてIdPで認証(SSOできるかどうかとは別)
        • 同期: 集め切れないものはメタデータ(人事データ等)から同期する
      • これをそのままクラウドに持っていくのはどうかと
  • クレームベース(認証と認可の分離)
    • 認証側と認可側に分離することが大前提。分かれていることが重要
    • IdP: ユーザー認証、デバイス認証を行いトークン(assertion)を発行
    • SP: トークンから本人を識別し、ロールを決定してアクセスを認可
    • クレームとは「要求」のこと「これこれの情報を持って来い。うちが信頼しているIdPからでよろ」
    • ユーザーはクレームを持ってIdPへ行く。IdPが認証を行う。トークン(署名済)にクレームを入れて渡す → SPはトークンを解析してクレームを取得。本人識別、ロール決定、アクセス認可
      • IdPの認証結果に応じてSP側でロールを再計算可能
    • SPにトークンを渡すのはユーザーであるのも重要。IdPとSP間は直接通信をする必要がない → SPからIdPに「これホント?」と聞きに行く必要がない
  • クレームベースのメリット
  • SaaSとしての認証Hub
    • マルチテナント
    • 複数の認可プロトコルに対応
    • 外部IdPとのフェデレーション
    • アプリケーションはIdPを意識する必要はない(統一フォーマットのトークンだけ知っていればOK)
  • 会場でフェデレーション導入されている方 → ほとんどいない
    • SEが理解できない → ローカル認証で行っちまえ、ってなっちゃってる
  • ADの3形態
    • オンプレミス: Server AD
    • IaaS: Server AD on Azure VM
    • SaaS: Azure AD
  • Directory
    • マルチテナントに対応したディレクトリサービス
    • AD LDS: ようするにLDAP
    • オンプレミスADとの同期、フェデレーションが可能
    • 多要素認証
  • Access Control
    • 外部IdPとのIDフェデレーション
    • OAuth 2.0, OpenID (Connectは予定), SAML 2.0, WS-Federation
    • ユーザメリット: どのIdPでログオンしてもアプリが使える
      • devメリット: Access Control用のコードを1種類書けば自動的にすべてのIdPに対応
    • WAAD, SAML/P
  • Graph API
    • Odata V3
  • オンプレミスADとの同期
    • すでにオンプレミスSSOができている場合
    • Azure ADと同期(Graph API, PowerShell, DirSync, Forefront Id Manager)
    • 利点: 管理すべきリポジトリはオンプレミスのServer ADのみ
  • まとめ
    • Id federationを正しく理解しましょう
    • public cloudのIdPをうまく使うには
      • アプリをクレームベースに対応
      • アプリとの互換性を確認
      • 運用をイメージする

感想

  • AWSは各国ごとに違う法律への対応どうしているのだろうと思っていました。米国ガバメント用にデータセンターを分けている、などはスケールメリットのひとつかな、と思います。
  • 安納さんのお話はすごく勉強になりました。各技術がつながって全体としてどうなっているかわかりやすかったです。

JICS2013レポート(1) 3/4午前 学認シンポジウム

3月4日〜5日、Japan Identity & Cloud Summit(JICS)に参加してきました。今回はNIIとOpenID Foundation Japanの共催で、産官学が集結する日本初のidentity summitとなったそうです。

4日はGeneral Track、5日はOpenID Hackathonを中心に参加しました。

当日取ったメモを公開します。間違いや発言意図と違うなどありましたらご指摘お願いします。

学認トラストフレームワーク

  • 学認の定義
    • SSOの運用主体
    • 参加・運用ポリシーを定める
    • 参加申請
    • 正しく運用されているかチェック(アンケート)
  • 学認はself-containedなTF
    • 学認の与える漠とした信頼
      • 学認に入ってIdPを運用している機関は信頼できる
      • 学認に入ってSP(RP)を運用しているところは信頼できる
    • OIX (OpenIdentityExchange)
  • TFの御利益
    • SPはIdPのLoAについて一定の保証を得られる
    • RPのサービスポシシー・セキュリティーポリシー・プライバシーポリシーの評価について一定の保証が得られる
    • なんとなくの信頼ではなく監査による信頼性の保証
    • OIXが学認のトラストチームを認定
  • OIXと学認
    • OIX: OpenIdentityExchange
  • 学認とOIX
    • 学認はOIXにspecial providerとして参加
    • OIXは「学認のIdPに対してFICAM LoA1認定を行うアセッサ」を学認内で指定する
  • LoA1
    • 世界標準
    • レベル1〜4
    • 認定基準
      • Governance(成熟度), Privacy, Technical
    • OIXの審査基準を適用
    • 学認の場合
      • 学認アンケートにポジティブな答える出ればLoA1はOK
  • 学認アンケート
    • 組織の成熟度(Governance)を調査する手段
      • きちんとIdPを運用しているか。文書化されているか
    • Identity管理
    • パスワード管理
    • プライバシー
    • テクニカル
  • 学認アンケート
    • おおむねpositive
    • 運用スコアつけてみた

学認R&D 2013春モデル

  • 学認申請システム
    • 申請と最低限のメタデータ生成の機能しかなかった
    • 2012年の改良
      • 申請
        • OpenIdP対応
        • 運用責任者による電子的な確認
        • アンケート
      • メタデータ: DSと連携
      • attribute-filter.xml
  • OpenIdP対応
    • これまでは申請のためのアカウントをローカルに発行(メアド、パスワード)
    • → OpenIdPで認証可能に
    • OpenIdP: IdPを構築していない組織の人たちが試験的に利用できる
      • 学認サービスの一部を利用可能
  • 運用責任者
    • 副運用担当者が指定可能: eppnがあれば主担当者が確認済みにできる
  • 学認アンケート機能
  • mdui対応
    • SAML V2.0 Metadadata Extensions for Login and Discovery User Interface Version 1.0
      • IdPを見つけやすくなる
    • mdui:DisplayName, Description, Keywords, Logo, PrivacyStatementURL
    • IPHint, DomainHint, GeolocationHint
      • ログイン時のIPアドレスやgeoロケーションでDSを選択
  • attribute-filter
  • 利用可能なIdP/SPの設定を固別に可能
    • IdPに対応していないSPを非表示

ケーススタディー中小大学の例

  • かかえていた問題
    • 業務サーバーがばらばら → ID/PWもばらばら
    • LMS,教務管理、語学演習、図書館、物品請求、出張申請、サイボウズなどなど
  • 採用したソリューション
    • SSO・ID統合管理: OSSTech OpenAM、代理認証、Shibboleth連携
    • ID統合管理: LDAPマネージャー
    • サーバー統合、仮想化
  • SSO対応
    • 外部認証非対応なもの: LDAPが引けないなど
      • 教務管理、物品請求、出張申請
      • LDAPからCSV出力 → インポート
    • 学外のサーバー
  • データの流れ
    • 教職員: 人事データ → LDAPマネージャ → 各システム(一部CSV・手入力)
    • 学生データ: 入試データ → Campus Square → LDAPマネージャ
      • Campus Square: CSVでID, PWをインポートできないのでまずこいつに入れる
      • 4月1日に学籍番号が振られてから遅滞なくID連携しないと履習ができない。1日2日の勝負。パラレルに処理する
  • 「ID連携する」と言うとアブナクなるんじゃないかという心配が出るので学内に説明が必要だった
  • SSO実装の方針: SSO 代理認証方式、チケットで
  • 導入までのタイムライン
    • 2009.9 認証に関する学内調査開始
    • 2009.12 マスターDBの作成: 名寄せ作業はNDAの上で外注、教職員は教職員番号のないDBもあったので手作業が頼り
    • 2010.3 SSOについてのモデル策定、システム更新の仕様策定
    • 2010.7 入札公告
    • 2011.3 システム稼動
  • 苦労話
    • 重要なサーバほど、古くて融通が効かない → Win2000だったり
    • 事務職員の配置転換(3年) → システムに精通している人がいなくなる
    • 学内への接し方: まあまあ、あの先生がそうおっしゃるならという気の使い方が重要
  • Shibboleth連携
    • 学内SSOにログイン後、Shibboleth連携ボタンをクリック
    • 本学SPを立て、そこから本学IdPでいったん認証、そのセッション情報をクライアントへ送信

高専のID連携

  • 校内LANシステム更新計画(平成21年度)
    • 交付金から予算を念出 → リースで(平成24年〜25年)
    • スケールメリットを活かした戦略的な整備
    • 一定基準で同一物品を機構本部が一括して調達
      • まずfirewall, 認証サーバーから → 次のリースからは全部を一括調達にしたい
  • ID管理
    • 高専共通システム、各高専設置の校内システム
    • ユーザーIDはドメインつきとし、かぶらないように
  • IDサーバー機能
    • 教職員のデータのみ、30分に1回、各高専サーバーと機構サーバーで同期
    • パスワードポリシーの統一
  • 学認連携をどうしたいか(アイディア段階)
    • 学認と高専設置サーバーで連携
    • 全51高専から接続
    • 平成26年から使える予定
    • 高専サーバーから学認サーバーへの個人属性情報送信する
      • ?uApprove.jpを利用 or ?ログイン画面にポリシー表示
      • どっちにするか検討中
  • 今後のとりくみ
    • LANケーブルが古い(お金がなくて買えない)ところさえある!
  • まとめ
    • 各校内システムとの認証連携を随時開始
    • Web給与明細システムの連携ができた

eduroam

  • eduroamとは
    • 大学・研究機関間国際無線LANローミングアクセスサービス
    • International Roaming Access Service for High-Educationで「いろは」
    • 個人ごとのアカウント/パスワードで認証を受けて安全に接続
    • SSID「eduroam」で802.1x方式
      • Radius認証
        • 自組織realm → IDデータベースを見る
        • 他組織realm → 問合せを上位へ転送 → 認証してもらう
    • 国際的な適合条件
  • セキュリティー
    • 安全で使いやすくて安定、WPA2/AES
    • 個人認証 → インシデント時の追跡
    • 強固すぎるとかえって使いにくい
    • 教職員・学生で数万人規模になる大学も! → スケーラビリティー
    • 教員ですべてをカバーしようと考えないことが重要
  • 世界共通無線LANローミング
    • 世界中の機関で共通: ベンダロックインされない
    • 億人のレベルになる → 認証連携による所属機関のアカウントで利用
  • eduroam
    • ヨーロッパのTERENAで開発
    • EU40か国、au, nz, hk, tw, cn, jp, ca, us, ru
    • 日本: 2006年東北大学が初導入、NIIと共同で運用・技術開発
    • www.eduroam.jp
  • eduroamの認証連携
    • この段階ではまだ学認と関係ない
    • 機関RADIUSサーバー → 国内RADIUSプロキシ → トップレベRADIUSプロキシ
    • IEEE802.1x認証
    • クライアント証明書による認証(EAP-TLS)も研究開発中
  • eduroamの参加方法
    • 学内にIdPとアカウント配布
    • RADIUS IdP + RADIUS Proxy
      • 別案(代理認証システム、仮名アカウント発行システム)
    • 無線LANシステムの整備: 互恵が基本
      • ゲストネットワークを用意
  • 無線LANの運用管理
    • セキュリティー
      • 通信内容の暗号化: 共通鍵(WEP) or 利用者認証(主体認証、機器識別)
    • 学内ネットワークの利用資格の例外措置
      • 通常は「本学構成員 + 許可を受けて情報システムを利用する者」
      • eduroamでは個人認証できる → 大学側でeduroamなら個別の許可不要という例外措置
    • 互恵的な無償での提供(非事業)
  • 代理認証システム
    • DEAS: Delegate Authentication System
    • RADIUS IdPの機能を代行するアカウント発行ウェブサービス
    • 利用登録した管理者がアカウントをバルク発行 → 配布
  • 仮名アカウント発行システム: 学認が前提
    • 個別ユーザが個人用アカウントを随時取得可能
    • 学認システムのみで使える
  • 無線LANネットワークの構成・アクセス制御
    • 学内ページを見られるのがイヤだ、電子ジャーナルなどの不正利用されたらイヤだ
    • ゲストネットワークの構築
    • 認証VLAN利用

Q&A

  • nov: 学認のIdP, SPのホワイトリストを作るという話: 学認側での一括管理の他、参加側で個別にブラックリストを持てるのか
    • 大谷さん: 作成中だが、DSから表示・非表示の制御、attribute-filterに使おうとしている。
    • 中村さん: 自分のIdPに手で設定するのがめんどくさいだろう → 管理者がチェックすれば、自分のサーバーに反映される仕組: 自分のIdPにログインして編集しなくてもいいというコスト削減策

感想

  • ケーススタディーの話がとても面白かったです。結構な部分でCSVに頼っているのがわかりました。

JICS2013レポート(4) 3/5午前 キーノート

OpenID

  • OIDF J 八木さん
  • JICS
    • 来場予定者数 1200名 (2日間のべ)
      • 昨日は350名くらいだった?
    • digital identityという単一のテーマでこれだけの人が集まるのは世界にも例を見ないconference
    • OIDF Jを立ち上げたのは5年前
    • ID, 属性情報の連携が広まってきた。標準化、普及活動をしてきた
    • 民間ではOpenIDを使った連携はデファクトになっている
    • 自民党でもマイナンバー法案閣議決定された。「マイナンバー」は「個人番号」になるかもしれない。「マイナンバー法案」も「番号法案」となり、国会でも熱い議論がされると期待される
      • 今日からは「個人番号」「番号法案」としてツイートしていただきたい
    • 官民でのID連携はますます高まる
  • 今回、NII, OIDFが共同でJISを開催
    • ここ数年来ID連携が広まってきた: コンシューマWeb、ソーシャル、エンプラ、アカデミック、モバイル、国民IDなど
    • いままではバラバラに検討されてきた感がある
    • 今回はNIIとOIDFで共同でやってみようということで「サイロを越えて、つなぐ」 産官学をつなぐ、分野・業界・産業を越えてつなぐ、日本・海外をつなぐ、テクノロジー・ポリシーをつなぐ
  • トラック紹介
    • キーノート、学認、Trust Framework Workshop、ID Tech Intro、Enterprise Sessions

Y! Japan ID Open Strategy 〜爆速 to the Future〜

  • Y! 谷田さん
    • 爆速Tシャツw
    • Y!のオープン化について
  • Y! Jの紹介ビデオ
    • 利用者数4279万人、PV539億/月、日本のインターネット利用者の84%が使用
  • 2012年4月から新体制になって課題解決エンジンとして活動
  • Y! Jオープン化にはじまり
    • トップページのほとんどのサービスでY! IDを使っていただいている
    • 顧客にとってY! IDはY!に閉ざされた空間でだけ使えることはうれしいのか?
      • 広告だけに使われる、というのも違う
    • 2007/4 広告 ADネットワークオープン化
    • 2007/8 Y! ウォレット
    • 2008/1 OpenID 2.0
    • 2009/7 OAuth 1.0対応
    • 5年経った今 Y! J ID 2800万ID、Y! ウォレット2.3万件のパートナーサイト
  • 2012/12 OpenID Connect採用 → YConnect
    • OpenID Connectがもたらすもの
      • 開発効率があっとう的に上がった
      • 安全性があっとう的に高まった
  • 開発効率アップ → パートナー様に爆速で導入
  • 安全性が高まった
    • 属性情報の活用
      • Y!Jが預っている顧客情報をパートナーサイトに安全に持ち運ぶことが可能
      • 顧客ニーズに基づいてパートナーサイトで活用
  • Y!Jのオープン化を5年にわたって考えてきた
    • IDのオープン化を進めていて思ったこと
    • これまで
      • 認証・認可のプロトコル自体が分離・分散されていた
      • パートナーサイト: IDをたくさん採用することによって多数の顧客を集めていた
    • これから
      • ソーシャルのパートナー: ソーシャルに強い顧客を集める
      • 決済・コマースのパートナー: 決済情報を備えた顧客のID
      • パートナーが使いたいと思っている顧客のIDを集めたい : 顧客サービスに合ったIDを使いたい
    • 「IdPはユーザドリブンで選択される」
      • ユーザーファーストで課題解決 → インターネットをますます活性化
  • Q: フェデレーションすることをビジネス的に決断するに至ったキーポイントは?
    • A: 2つある
      • ひとつはスマートフォンの登場。顧客のコンタクトポイントがY!トップページからアプリになった。アプリにおいてYConnectを使いたい。
      • もうひとつは、技術者がアプリをどんどん開発できる環境が備った → Y!のID基盤を使ってサービスを作れるようになった。ID管理はコストがかかる。悪い人と戦うにもコストがかかる。パートナーには本業に徹していただきたい。そういう環境を提供したい

Mobage Open Platformの歴史とIdentity関連技術について

  • DeNA 山口さん ZIGOROU
  • Mobage Open Platformの歩み
    • 2009/11 フィーチャフォン用sandbox
    • 2010/1 ローンチ
    • 2010/7 Y! Mobage sandbox
    • 2010/10 Y! Mobage サービスローンチ
    • 2011/2 スマホ用sandbox ブラウザ向け→ サービスローンチ
    • 2011/4 スマホSDK(ngCore) → ローンチ
    • 2011/8 Nave SDK
    • 2011/11 Unity SDK
    • 2012/12 Android版 Shell App
  • X-Border and X-Device
  • 利用しているID技術
    • OAuth 1.0の話
    • スマホUA → プロキシサーバー → OAuth 1.0 auth_token, auth_token_secret → ゲームサーバー
      • 戻り: レスポンスをフィルタしてUAに返す
    • PCにおけるOAuth 1.0
      • Gadget(Social JS API) → Gadget Server → Game Server
    • SDKにおけるOAuth 1.0
      • SNS本体のコンテナからOAuth credentialsをSDKに渡す。それを使ってSocialAPIからゲームサーバーへ
  • 開発中のID技術応用事例
    • Session Cookieへの応用
      • UA上のセッションにJWTを利用
      • クッキーの中にJWSをそのまま入れる
      • クッキーとはクライアント時刻に左右される → JWTなら失効日時をサーバー時刻でうめこめる
      • その他、JSONに様々なデータを入れられる。セッションID、Sticky Sessionのようなバックエンド系統の情報、UA文字列のハッシュ値(セッション奪取を防ぐため)
      • 注意: クッキーの許容サイズには限界がある
    • Internal APIへの応用
      • Authorization Proxy Serverを前段に作る
      • 様々な認証リクエストを解釈: OAuth 1.0のbackward compatibility
        • 一定のformatのJWTを作ってバックエンドに投げる
      • 必要な場合はJSON Patchでフィルタ(バックエンドがRESTful APIの場合)
      • バックエンドにディスパッチ
  • 今後
    • OAuth 2.0, OpenID Connectの段階的導入
      • SDKで導入したい
    • Schema
      • JSON Schemaの全面的採用
      • Appにおけるvalidation
      • specification, documentationへの利用
  • Q: いまAPI連携を続けていると思うが、どういうところに一番課題を感じているか?
    • A: アプリケーションは育ってきちゃう。そうするとメンテがだんだん難しくなる。アプリを切り出したくなる。そういうときにID連携がほしくなる

Google Identity Directions

  • Tim Bray
  • What does Google care about?
    • Googleはビジネスである。IDスペースで何に興味があるのか
    • Google wants everyone to be online all the time
    • Anything reduces productivity, pleasure, on the internet activity is a problem.
    • ID登録などがそういうもの
    • カンタンにしていきたい
  • 検索はGoogle活動の中心であり収入の中心でもある
    • 検索アルゴリズムの開発が重要
    • 10年前は検索を改良するのは楽だったった。楽な勝利はすべて終わった。低い果実は全部取っちゃった
    • クエリを理解するのは難しくなっている
    • 自明な方法はユーザーを理解することだ
    • OAuthを検索すると、左側に人形アイコンが出る。それは「あなたが」見るべき情報だ
      • Search Needs to know who you are
      • 右上をクリックすればパーソナライズをon/offできる
  • もうひとつはモバイルデバイス
    • すぐにmajorityになる
    • いくつかの場所では100%である
    • モバイルデバイスでパスワードを入力するのはとても難しい
      • 人々が短い低品質のパスワードを使いがちになってしまう
      • you & mobile deviceは常にいっしょにいる。トイレにもいっしょにいく
      • mobile devices need to know who you are。これを理解しないとモバイルデバイスは十分に活用できない
  • ソーシャル
    • Internet is not about 本を買う、猫ビデオを見る
    • Internet is for communicating
    • 人々のポテンシャルにリーチするにはソーシャルが必要
    • Social Needs to know who you are
  • ID technologies
    • いま感じているpainはどんどん悪くなる
    • 人々が使わないといけないIDの数は増え続ける
    • ID技術のリストもすでに長ーい。頭痛の種
      • 複雑すぎる。難しい。エキスパートでないと理解できない。disappointing。まだ成功とはいえない
    • 大きな問題はtoo hard to solve the whole problem
    • Internetの歴史を見るとlightweightな技術が勝ってきた。80%のbenefitは20%のeffortから得られる
  • Google is betting very heavily on OAuth2 and OpenID Connect
    • Everything we do forward Search, Social, Mobile, will be based on OAuth2 and OpenID Connect
    • 他の大きたtechnology providersもそうである
  • 3つのこと: introduce new identity technology
    • 1. Good User experience
    • 2. Effective security
    • 3. Good developer experience
      • これまでは無視されすぎていた。500ページのマニュアルや難しい数式が必要だった。developers don't have to understand identity. 使いやすいAPIがあればいい。そうでなければ使われない
  • Googleがしていること
    • Google+ sign-in 2週間前ローンチ
    • Google+アカウントで他のサービスにログインできる
    • モバイルで効果的に使うことができる。web appの認証がワンクリックでできる
    • 自分がオンラインで何が好きで嫌いかもshareできる
      • 自分が上司・恋人・サッカークラブでshareしたいものは違う。そういう制御ができる
  • Account Choooser
    • OpenID foundation thing (not Google's)
    • Webサイトに行くと自分が使っているアカウントがリストされる。ワンクリックでログインできる
    • 切りかえるにも2クリック
  • mobile applications
    • モバイルデバイスで、誰かにパスワードをタイプさせるように頼むのはunreasonable
    • 君はどれ? と選ばせるのが理にかなっている
  • ほとんどのmobile appはバックエンドサーバーを持っている。ゲームでもハイスコアを保存している
    • HTTPSを使ってセキュリティーを得ている
    • サーバーは誰と話しているのかわからないという問題がある
    • OpenID Connectとid_tokenをモバイルデバイス上のコードがサーバーに送れば、ユーザーが誰だかわかる。パスワード入力の必要なしに
  • Google is committed to work with identity
    • ID communityにgood-byeを言うべきだ。IDエキスパート同士で話をするのではない。世界中と話をするべきだ
    • stop storing password, stop using password. Use identity
  • Q&A

  • natさんからコメント
    • ID federationを使ったAPI連携がどんどん主流になる
    • ちょっとprivacyの話が出てきた。policyトラックではそういう話もする

Developers Summit 2013レポート(3)

デブサミ2013 2/15分後半です。

5msの中身を公開!〜ネット広告配信と支える職人達〜

RealTime Biddingとは
  • RTB
    • RealTime Bidding
    • 広告を配信する瞬間にオークションを実行
    • オークショ主催側: SSP (Supply Side Platform)
    • オークション参加側: DSP 広告配信側
  • RTBの流れ
    • Webページ表示時、SSPがRTBリクエストを送出、DSPからいくらで買うかをビッド。最も高い値をつけたDSPが勝ち、広告を表示できる
  • 本日のお話
    • MicroAd BLADE (DSP)の入礼処理の一部を公開
      • DSPの入札処理のポイント
      • 適切な広告・入札がく決定、高速な処理
  • 1.適切な広告選定・入札額決定
    • どの広告を入札するべきか
      • 落札しただけではダメで、クリックして成果が必要
    • いくらで入礼するべきか
      • 上げる: 配信量増○、コスト高×
      • 下げる: 逆
  • 2. 高速な入礼処理
    • 制約条件が多い
    • 入札処理に使える時間は10ms前後
MicroAd BLADEの特徴
  • MicroAd BLADE
    • 2011年6月から
    • 4000社をこえる広告主
    • リターゲティング/オーディエンスターゲティング広告
  • retargeting
    • 広告主サイトへの再来訪を促す広告配信手法
  • audience targeting
    • 潜在顧客をターゲットとして広告を配信する
      • 統計的手法により、どういう人が興味を持っているかをためる
      • 広告主はどのあたりに配信したいかターゲットを設定
      • 設定に合う人に対して広告を配信
  • BLADEのRTBレスポンス数
    • 2013/1現在、25億件/日
BLADEの内部
  • RTBの入札部分のシステム構成
  • 処理の流れ
    • 広告リストアップ
      • 広告データ、リターゲティング、オーディエンスターゲティングデータ、demographicsデータ それぞれ数億件
    • 配信不可広告のフィルタ: 競合社の広告など
    • 入札額の導出
      • frequencyデータ: 同じ広告を何度も見ると興味が下がっていくため
    • 入札広告の決定
  • 5msへの取り組み
    • データ参照がボトルネックになりがち
      • 一般Webアプリと同じ
    • アプリケーションまわりのデータ参照の工夫
      • KVS(Kyoto Tycoon)
      • replication
      • cache
      • object cache
  • KVS: Kyoto Tycoon
    • レコード数が多い
    • key/value
      • Webユーザーにひもづくデータ
    • 数億件でも数万QPS以上が可能
    • 負荷対応
      • 1. 参照は複数台のスレーブ
      • 2. 更新が多い場合はストレージIO高速化
        • 更新遅延よりも参照遅延の方が致命的
        • スレーブ側の高性能化が重要
      • 3. マスター分散
        • keyによるpartitioning
    • Kyoto Tycoon用のJava binding: 公式なものはない
      • memcached互換はあるが要件が合わない → 自作
      • thread safe, connection pooling, data serialize/deserialize等等
  • replicationとローカル参照
    • デー糸サイズが大きい(1k〜)と通信コストが高くなる
    • データ参照するRTBサーバ上にスレーブを立てて通信を減らす
  • cache
    • 使い分けが大事
      • 整理性やリアルタイム性をどの程度担保すべきか
    • よく使う方法2つ: 全件キャッシュ、有効期限つきLRU
    • 全件キャッシュ: まんべんなくアクセスされる
      • 起動時にロード、2分ごとに更新スレッドで全件リロード
      • 入札に選ばれたときに最終確認する
    • LRU: 頻繁に参照されるもの
      • 広告枠ごとのベース入札額
      • 一定件数だけcache
      • ミスヒット時、マスタから取得、一定確率でcache
  • object cache
    • 取得したデータをJavaのObjectにするにも時間がかかる
    • Objectになった時点でキャッシュ
まとめ
  • まとめ
    • RTBってのがあるんだよー
    • 業務ロジックの高度化と処理の高速化が両方必要
    • Microad BLADEはがんばっています
  • もっと話したかったこと
    • 少数精鋭: 入札アプリは3名のエンジニア
    • なぞな職人たち
  • Action!
    • 職人魂でエッジの効いたモノづくりをしていきましょう!
  • 想い: 動けばいい/無駄なんて気にするな、サーバー足せばいい
    • → クールじゃない。伝統職人に笑われちゃう
感想

普段見ているWeb広告がこのような仕組で配信されているとは知りませんでした。時間的制約のある中での処理の工夫が面白かったです。最終確認でアウトならあきらめるというのは、処理数が多いからできる技でもありますね。

ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜

はじめに
  • 本当に必要なものがわかるか?
    • ブランコの絵
    • SIでよく起こる話
    • もっとひどいバージョン
    • 期待のマネジメントに失敗
  • システムの機能の利用割合
    • 2000年 Stanish
    • まったく使わない機能が45%、ほとんど使わない19、たまに16、よく使う13、いつも使う7
    • まったく使わない、ほとんど使わないで64%。これらを作らなかったら3分の1の期間・コストで作れたのでは?
  • あなたの開発はムダだらけ?
    • トヨタ生産方式
    • ムダ: 作りすぎ/手待ち/運搬/加工/在庫/動作/不良をつくる
    • 加工のムダの例: 進捗はわかっているのにおえらいさん向けにプレゼンを作る
  • コストの見積りは正しいか
    • 不確実性コーン
  • ウォーターフォールV字モデル
    • 時間がかかりすぎて、出来た頃には要求が変化。そもそも要件があっていなかったということが全部できてからわかる
  • よく見かける光景
    • 設計までは順調→開発・テストで遅れ→受入れ試験でニーズ不一致が判明
    • 多くのリスクが後半になって顕在。そのころにはとり返しがつかない
  • Agile Manifest
    • Kent Beck, Martin Fowlerら
    • 顧客満足を最優先し、規値あるソフトウェアを早く継続的に提供する
    • マーケットに製品を早期に投入して、投資を回収し、利益に結びつける必要がある
    • ドカーンと計画して長い時間かけて作ります、ではない
アジャイル開発
  • Flickr
    • 右上に「最後の更新がいつで何個の更新」と出ている
    • 毎日何回も本番環境にデプロイできているか == 顧客に頻繁に価値を届けられているか
  • Amazon: 最大1時間に1079回デプロイ
  • よくある話
    • 「てめーもっとちゃんとアプリ作れ」
    • 「運用でなんとかすんのがあんたらの仕事だろ」
    • 「そんなのどっちでもいいからビジネスのこと考えてよ」
  • 会場調査
    • unit test〜CIサーバー〜結合・受入テスト自動化〜自動デプロイ〜環境構築の自動化
      • unit testしてるのはほぼ全員。自動デプロイまでは数人、しかし環境構築の自動化までしている人はいない
    • 一日にしてならず。銀の弾丸はない。自分達のプロセスは自分達で進化させる
      • 製品そのものをAgileな状態に保つ
      • 技術的負債を少なく保つ
継続的デリバリー
  • 継続的デリバリーの原則
    • 1. デプロイはくり返し可能であり信頼性がある
    • 2. すべてを自動化する
    • 3. 難解、苦痛なことを自動化
    • 4. すべてをSCMで管理
    • 5. 完了は「リリースされたこと」を意味する
    • 6. 品質を作りこむ
    • 7. すべての人にリリースプロセスに対して責任がある(もっと言うとプロダクトに対して)
    • 8. 継続的に改善する
  • 継続的デリバリーの4プラクティス
    • バイナリは一度だけビルドする
    • すべての環境にデプロイするのに完全に同一のメカニズムを使う
    • スモークテストを実施する
    • 何か問題が起こったらラインを止める
テスト自動化
  • テスト自動化
    • アジャイル開発においては必須
    • 小規模リリースのたびに手動テストするといつかテストしかできなくなる
    • 損益分岐点
  • 問題は早めに解決する
    • 早く見つけて早く直す
  • デプロイのたびに人手でテストするなんて無理
    • テストしてないものを目をつぶってデプロイしてはいけない
      • 悪魔のささやき: 設定ファイル1行だけだから平気だよね?
  • アジャイルテストの4象限
  • 自動テストに求められる特性
    • repeatable, independent, self validation, easy
  • webだと
    • controllerのテストを沢出書かなきゃいけないのはfat controllerだから
  • 完了の定義
    • 何をもってデプロイしていいかを定める
  • XPのプラクティスの利用
  • Jenkins
    • 継続的にテストしていないといつこわれたかわからない
  • CIサーバ
    • プロジェクト初期からやる
    • メトリクス取得や静的解析は初期からじゃないとダメ
  • CIアンチパターン
    • テストコードと製品コードを同時にコミットしない
    • 帰り際にコミットして結果を見ずに帰る
    • 何も変更してないのにビルドが落ちたり落ちなかったり
    • CIサーバーのメッセージが多すぎる
    • 本番環境とステージング環境が大幅に違う
    • チェック内容が変わらない、プロセスが変わらない
    • などなど
バージョン管理
  • バージョン管理
    • 設定情報のバージョン管理
    • バージョン管理は開発者のしつけ
    • どの断面でも再現可能か(昨日、1週間前、先月のバージョンに戻せるか)
マイグレーション
環境構築の自動化
  • 環境構築の自動化
    • そもそも時間がかかる、単純作業はミスしやすい
    • ミスした場合の検知する仕かけが本番障害しかない
    • 手順書の妥当性検証が難しい
  • 自動化しておけば、いつでもクリーンな環境を作れる
    • 場合によっては5分くらいで最新版アプリを動かせられる
  • 設定やインストールの自動化
    • 本番環境と開発環境の各種バージョンを合わせることが可能
    • Chef/Chef Solo
      • 多数のRecipesが公開されている
    • puppet
  • 仮想化と自動化
    • VagrantでSandbox
    • 実験しやすい。失敗したら戻せばいい
    • AWSでStampパターンを使う
  • 環境構築で自動化
    • 課題: 有償ソフトウエアのライセンス管理
デプロイ自動化
  • デプロイ自動化
    • 以上ができてはじめて可能になる
    • 手でWinScpとかありえない
  • ゼロデプロイ
    • プロジェクト最初に、デプロイを自動化する
    • デプロイが自動化しやすいプロダクトの作り方がある
  • 気をつけること
    • デプロイが失敗した場合にロールバックできるようにする
    • デプロイが途中で失敗した場合、その先を手動でやってはいけない
  • Capistrano
    • Webistrano: Web GUI
    • Fabric: Pythonのデプロイツール
  • よくあるデプロイ方法
    • 難しいところ
    • DBの不可逆な変更を避けるようにアプリを作り込んだほうが良い場合が多い
      • 1回冗長にしておいて、うまくいったら消す
      • いったんトリガを張っておいて後で消す
  • ビルドパイプライン
  • テスト完了してからリリースするまで何日かかる?
    • 障害時に1日でリリースできるのに、障害でないときにできないのは、プロセスに組織的なムダがあります
    • ワンクリックでデプロイできたとしても、リリースの意志決定が遅かったら意味がない
    • → 組織のアジリティーを高める
      • 変化しないとゆるやかに死ぬ
      • 自分たちで変えていく。できることは沢山あるはず
    • すぐできるものではない
  • DevOps
    • 開発と運用が協力しあって、継続的にプロダクトを顧客に届けつづける
まとめ
  • まとめ
    • ビジネスのために継続的に
    • アジャイルなやり方
    • テストの自動化
    • 常に出荷可能
    • デプロイや環境構築も自動化
    • 改善をずっと続ける
感想

「ワンクリックデプロイ」というタイトルから、chefやcapistranoの話かと思って聞きにきました。しかしアジャイルスクラムの話が長々と続き、これはどうしたことだと思っていました。話が最後の方まで来てようやく、「ワンクリックデプロイ」というのはアジャイル開発の一部であることを理解しました。ばーんと導入してばーんとできるようになるものでなく、プロセスの改善を続けてだんだん近づいていくゴール(サブゴール)だということがわかっていなかったんですね。一段上の視点を得られた貴重なお話でした。

セキュリティ要求仕様モデルプランで日本は変わるか?

  • 15-C-8
  • @takesako
  • @ockeghem 'or'1'='1'--@tokumaru.org
    • うっかりSQLインジェクション脆弱性があると困るアドレス、アカウント登録には使っていない。こわくて使えないw
    • orをandにすればというマジレスをもらっている
  • 百瀬昌幸さん
  • セキュリティ要求仕様モデルプラン知ってる人? → 6人くらい
  • IPA
    • 安全なウェブサイトの作り方
    • 安全なSQLの呼び出し方
    • ウェブ健康診断仕様
  • 時々オフレコマークがつきますよ
  • 地方公共団体における〜〜モデルプラン、略して「モデルプラン」
モデルプランの紹介
  • モデルプランの中身
    • Webアプリケーション(とプラットフォーム)の脆弱性対策関連の要件に特化した仕様書(特記仕様書)
      • 入札条件にぽっとはりつけられる仕様書
    • セキュリティー保証期間
    • 提案時の提出物
    • ソフトウェア選択に係る要件
    • 対応すべき脆弱性のリスト
    • セキュリティー機能要件
    • テスト要件
    • 検収方法
    • 成果物(納品物)
    • 保守対応関係要件
  • セキュリティー仕様選定基準イメージ
    • A 実際に攻撃に使われている手法
    • B 現売点で悪用可能で、将来攻撃に悪用される可能性のある手法
    • その他に未知の脆弱性などがある
  • 対策が可能でコストがかかりすぎないものを選んでモデルプランとした
    • 脆弱性対応に関する要件
    • セキュリティー機能に関する実装上の要件
      • パスワード保存時は5文字以上のソルトつけなさい、など
  • セキュリティー要件の提示方法: それぞれ長短あり
    • 脅威を明示
    • 名前を明示
    • 実装方法を指定
    • 検査方法を明示
  • 実装方法を指定するのがわかりやすい
  • 脆弱性が発見されたら直してください、など
  • なぜ作ったか
    • ウェブ健康診断
      • 手動で診断。20分くらい、精密検査ではなく
      • クローラへの耐性も入れている 〜librahack事件を受けて
    • ウェブ健康診断仕様はIPAにその維持・発展を引きついだ
  • 脆弱性対策に関する課題
    • 突然発覚する脆弱性への対応について幹部の理解が得られない
    • 必要性を理解していない
    • 人事異動で…
  • モデルプラン検討経緯
    • 救援を送る → ムリ、首長を啓蒙する → どこから話していいか
    • 根本的な対策が必要 → そもそも脆弱性のあるソフトを作らなければいい
    • 容易に改修できるようにする
  • 今後、地方公共団体のセキュリティーレベル向上に必要な施策
    • 事後対策 + 事前対策(new) = セキュリティーレベル向上
    • 地方団体が1800近くある。お金ののあるとこもないところも
      • ユーザー企業・団体・国も巻き込みたい。ベンダーさんにもあらかじめ対応しておいてもらいたい
    • 「いいモデルプランです、パクっていいですか」「どんどんパクってください」
  • モデルプランのポイント
    • 「セキュリティ保証期間」という期間を設け、「脆弱性リスト」で示したものに限定して対処を求めている
    • 「セキュリティ保証期間」==5年間(稼動予定期間)とする
      • 瑕疵担保期間とは別
    • 追加費用なしで直せ≠無償で
  • 追加費用なしでの効用
    • リスクの見積もりを提案者(ベンター)に委ねる
    • 「自ら開発したソフトで事後に脆弱性が発覚するリスクを見込んで保守費用に対応費用をあらかじめのせといてください」
  • 地方公共団体の調達==ほとんど入札、となれば広がっていくはず
  • モデルプランの採用が進むと…
    • 対応可能なベンダーが強くなり、脆弱性のある製品が減る
  • アンケート: モデルプランを利用したいと思いますか
    • 46% 1: 利用を検討したい
    • 51% 2: 内容を確認してから検討したい
    • ASP, SaaSについて同様のモデルがほしい
    • ユーザー・ベンターの相互の意識を高めることが必要ですね
  • まとめ
    • 期間と内容を限定して、万一出たら直してくださいね、となっている
    • 熱心なベンダーにとっては優位な仕様
    • 地方公共団体向けだけど、もっと活用の幅を広げたい
  • Action!
    • セキュリティは文化
    • 積極的に、ポジティブに、要求仕様の内容を良くごらんください
    • 「これって当たり前だよね〜(今のやつには実装してないけど)」がほとんどだと思います
    • 当たり前の文化(=開発規約)にすれば、随分世の中の脆弱性がなくなるはず
    • 地方が上げていけばベンダーのレベルも上がる。日本全体のセキュリティーレベルが上がる
    • 「日本のセキュリティの夜明けぜよ!」
モデルプランの主要論点
  • 徳丸さん
  • 大変な仕事だった。高木浩光さんにウンと言わせるのが大変だった
  • 論点1: 脆弱性名の列記ではあいまい
    • 「○○脆弱性がないこと」では契約にならないのでは? など
  • 論点3: セキュリティー保証期間
    • OS、ミドルウエアも5年なら5年保証しないといけない(サポートライフサイクル)
    • セキュリティー保証期間、これは瑕疵担保ではないのか → 別のもの
  • 論点4: 地方公共団体職員の検収能力に関する課題
    • 職員さんはまじめだが技術力はない。検収できるのか?
    • 受注者に「セキュリティ検査報告書」の提出を求める。入礼価格の中でやってもらう
  • 発注者にとってのモデルプラン
    • 発注者とベンターの責任分担を明確にする
    • 未知の問題については責任を問えないので、発注側の責任
  • 提案者にとっての意義
    • セキュリティ施策について、何をどこまでやればよいかを明示
    • 対応範囲を明確にする
    • 提案時に責任範囲を明確にすることにより、真面目なベンダーさんが得をするように(安かろう悪かろうが勝たないように)
  • 脆弱性が指摘されたとき実際に改修しましたか?
    • 1: 発注者の費用で直した 15%
    • 2: 受注者の費用で直した 55%
    • 3: そう方の負担で直した 30%
    • 4: 直さなかった 0%
    • どうせ受注者の持ち出しになるなら、そう明記しておくほうがいい
  • サポートライフサイクルポリシー
    • Linux, OSSなど
    • MSのがすごくよくできてる
      • 2012が発売される直前に2008を導入した。最短(でも)7年間保証される
      • 最新バージョンを使う限り、古いものも延長サポート可能
    • RedHat
      • 7年→10年に延長: リリースから数えるのでいつ導入するかによって違うが、まあOKじゃね
      • RHEL/CentOS5 2017/3/31
      • RHEL/CentOS6 2020/11/30
      • RPMPHPを入れたらRedHatがサポートしてくれる。これはすごい
  • 脆弱性対応
    • あいまい性があっては困る。IPA, CWEを参照している
    • 脆弱性リスト16種類
      • クリックジャッキング、オープンリダイレクタ、クローラ耐性など
  • セキュリティ機能
    • ログイン処理、アクセス制御処理、認可処理
    • 自社製品へのガイドラインとしても使えそう
  • セキュリティー対策を理由とともに説明
    • 例: ログイン失敗時のメッセージ出力のとき、ユーザー/パスワードのどっちが間違っているか表示してはいけない理由、など
Q&A
  • 会場: 自治体サイトに脆弱性が発見された場合、ベンダーの立場として費用をかけて改修しましょうと言ってもなかなか難しい。enforceする仕組はあるのか
    • 百: お金がなければできない。結局お金の問題になってしまう。今後はあらかじめ用意しておきましょうという話になる
  • 徳: 脆弱性診断をしているとPHP4だから上げましょう → 「RedHatのサポートが切れているので上げられません」…あっ、PHPって無料じゃなかったんだ、と思った瞬間だった
    • 竹: サポート期間が5年ということでRHEL6を選択するような力がかかると
  • 竹: モデルプランはPHP以外にも適用可能?
    • 徳: JavaもOKです。ただし、サポートサイクル的にJava6が終わっても平気かどうかは検討が必要。どうしてもJava6でないと困るという場合、重要事項説明を書いてもらって別途費用がかかる旨書けばいい
  • 竹: 最近のJava脆弱性はクライアントアプレット側のものが多いが、サーバー側の修正も必要でしょうか
    • 徳: 大丈夫という判断ができるなら、当てなくてもいい
  • 竹: Java脆弱性で困ったことはあるか?
    • 会場: サーバーサイドのバージョンアップはほとんどされていない。基本的にエンタープライズ用途なので、アプリサーバーがfirewallなどで守られていることが多い。
  • 竹: Javaの場合はbyte codeの後方互換性は守られているので、気にしない人が多いのかな、と思っていたんだけど
    • 徳: そこまで大胆に上げる人はいないのでは?
    • 会場: オラクルから非互換リストも出ているので、テストなしでアップデートはありえない。unit testで確認するということはある
  • 百: クライアントサイドの問題が取りざたされている。省庁によってはJavaの古いバージョンを使い続けるのは許さないというのが強く打ち出されてきている。そういう号令は省庁では絶対の話。クライアント側はむしろ強く求められていく
  • 竹: Javaアプリを使っている地方団体アプリはあるのでしょうか
    • 百: いやーあるんですよー、IE6でしか動かないとかー。対応するためにベンダー内では、専用のパソコンを別ネットに用意して検証しているようだ
  • 徳: 「5年しか使えないの?」という声もあった。発注したからには未来永劫使いたい、と。5年経ったらチェックして、使えますねとなったら使い続けるなどを推奨する
    • 竹: 民間企業だと減価償却もあるので5年というのはいいセンだろうと思う
    • 竹: 旧ソ連には減価償却という概念がなかったので古いものが使われ続け、結局崩壊につながってしまったという話もある
  • 会場: セキュリティーの範囲として、スマホタブレットに対応というと、Webと環境が違うと思う。適用できるのか
    • 徳: スマホのアプリは対象外である。スマホ端末が対象でもいいが、ブラウザで動くものと考えている。HTML5はどうなのという話があると思うが、脆弱性もまだわかっていない。アプリは作る側のリスクになる
    • 百: どういったデバイスに対応するかは明確にしたいと考えている。要求の段階でタブレットはいらないよ、となっていたのに後からほしいと言われても、仕様に入ってないじゃない、とすることができる
  • 竹: JSSECから「アンドロイドアプリのセキュア設計・セキュアコーディングガイド」が出ているのでチェックするのをおすすめ
  • 会場: リスク評価して応札価値に上乗せしろ、とかそんなことは実現可能なのか
    • 百: 脆弱性が出たのに対応してくれないような業者は淘汰されていくと考えている。チェックできるような書類も提出してもらうことになっているので、後から何かあったときにもさかのぼってチェックできる。このモデルプランで万全ということではなく、うまくいかないということになればまた第2版、第3版と改訂していけばいいと考えている
  • 会場: Javaのアップデートするとき、旧バージョンをアンインストールしないと、アプレットがバージョンを指定することができてしまう
    • 百: 旧バージョンを消してね、という通知はしている
  • 会場: T市のように海外のサービスに自治体サイトを移した場合、海外サービスのセキュリティー評価をするようなこともあるのか?
    • 百: 答えにくい。セキュリティー健康診断サイトもやっている。基本的にはアプリを提供しているベンダーの許可がなくてはできないよ、としている
    • 徳: ASPSaaSのひとつがたまたまFackbookと考えることができる。残念ながらモデルプランではASPSaaSは対象外。この文書を提示して対応してますか、と聞くことはできるだろう。T市の場合いきなり一社に発注していることのほうが問題。自治体や上場企業だと明確な理由なしに一社に決めることはできないだろう
Action!
  • 徳: 関心を持っていただきたい。いろんな意見をください。発注書というのはいい例がなくて手さぐりで作ってみた
  • 百: ぜひ自治体を助けてください。本当に困ってると思います。お金もらってないし、と他人事ではなく。日本全体のセキュリティーレベルを上げていくためのひとつのマイルストーンができたと思う
  • 竹: 地方から日本は変わる、デベロッパーによって変われると思う
感想

自治体システムの場合、納入後の運用におけるセキュリティー上の施策に関して予算確保などいろいろな問題があるのですね。モデルプランでは入札によるシステム開発におけるセキュリティー要件を明確にしたということに意義があるとのことです。セキュリティーの問題は技術者以外の人々に必要性を正しく理解していただくのが難しいと感じています。このような文書を参照できることが重要ですね。いい話をたくさん聞けました。ありがとうございました。

Developers Summit 2013レポート(2)

デブサミ2/15分前半です。長くなったので2つに分けました。

2日目は同じ会場で続けてセッションを聞く場合、廊下に出ずにチェックインできるようになっていました。ラウンジの電源も1日目の終わりから使えるようになっていましたし、スタッフのみなさんも改善が早いですね! そしてGREEさんのミネラルウォーターをいただきました。お水は本当に助かります。いつもありがとうございます。

「爆速」を支えるテクノロジー

  • 15-A-1
  • 村上臣 Y! チーフモバイルオフィサー
  • スライド
  • 漢字でわかるのはいいですね「爆速」
村上さんについて
  • Y!は基本的にPCの画面が想いうかぶでしょう。CMOを設置したのは…
    • PCのカテゴリー検索サイトとしてスタートしたY!、時代ともに形態も変わる
    • ガラケーiモード版が1998年、ケータイインターネットが世界に先がけてスタート。しかしあまり変わらなかった
    • iPhone 2007年からはスマホの世界がやってきた。このインパクトが大きい。タブレットも含めればPCより大きい
    • 新大陸が出てしまった。全容はわからないがどでかい。そっちに移らないといけないんじゃないか
    • CMO「Chief Mobile Officer」を置いた
  • 自分はPCの経験がない。ずっとモバイル畑
    • 最初は社内でも肩身のせまい部門だった。回りとPVもケタが違う。いつも携帯をたくさん並べてポチポチやってる人達、みたいなカンジ
    • 転機は2006年、ソフトバンクがキャリアを売収してYモバがはじまった
  • アマチュア無線
  • 小学校のころは自転車に無線機を乗せていた
    • 子供のころから移動体通信していた!
    • MSX 中学生のころ
      • MSXからシリアルをたたいて無線通信していた
  • 大学生のころ、電脳隊
    • IDO ezweb
    • auブラウザのuser agentに「UP」入っているのはUnwired Planetが起源
    • 1997年夏にシリコンバレーに遊びに行った
    • インターネットが使える携帯を見せられ、これはヤバイと思った
    • 外に出てインターネットが使えるというのはいい
      • NEC PCをカプラで公衆電話につなげたりしてたけど
    • そのうちメールが来て、日本に行くことになったよ「IDO
    • WAP技術。日本で知っている会社が他になかった → 仕事をもらったりとか
Yahoo! Japanについて
  • 2012年3月1日 Y!の経営体制変更
    • 創立以外増収増益をした、伸び続けている会社の役員を全部交代した。これはすごいこと
    • スマホの大陸が大きい、進化スピードも速い。それに合わせた体制にする
    • 経営陣も10歳以上若返り
  • 爆速
    • 速く世の中に出してフィードバックを得ていかないといけない
    • Y!自体も大きい会社になった(6千人、そのうち2千人くらいが開発)
    • アジャイルになかなかできない。承認が遅いなど
    • 結果はこれからついてくると思うが、大企業病からの脱却ができればと思う
  • 「迷ったらワイルドに行け」
    • 新社長宮坂の新入社員への言葉: 4つの約束
      • Focus。やるならフォーカスしろ、1個の得意技
      • Fast。早く動け
      • Fun。楽しんでやれ
      • Be Wild。迷ったらワイルドに行け
  • インド進出
    • Y! Inc.は世界中にブランドを持っているので、日本国外で何かやるときにはY!の名前は使えない
    • Bharti、エアテルとやっている
  • 米Bashoと提携
    • IDCフロンティアでRiakを導入
    • bashoを使った分散ストレージ 19-9の堅牢性(千京分の1)
    • S3互換APIを持っているので某A社と同じことができる
  • 石巻復興ベース開所 2012/7/30
    • Y-LD (Yahoo! Life Design)
    • 復興として会社がいろいろできている。みんな30年続くかというと、そうはいかない。数が減っていく。それ自体は自然なこと
      • 地元の人を巻き込んで黒字の会社を作ると続けていける。それができないと復興とは言えない
爆速について
  • 爆速
    • 状況把握 → 意思決定 → 実行: 三位一体として速くないと爆速にならない
    • PDCAと同じだがPがない。Pはふんわりと全体にかかっている感じ
    • トップだけが爆速ではダメ
    • 大組織になっても恐竜になってはいけない
      • 恐竜は尻尾を切ってから痛がるまでに数分かかると言われている。何が起こったかを即座に理解し、一体としてマネージしないといけない
    • 魚群になるべき。イワシの大群。「イワシ的なカタマリ」がわさーっと動いている。リーダーはいない
  • エンジニアの才能を生かす
  • 1. 承認プロセス数: 8 → 2
  • 2. iPhone/iPad全社員に配布、VPNも開放。内線をiPhoneに集約
    • プロファイル一括設定を使って社員ひとりひとりの証明書もインストール済みのiPhoneを配布
    • iPadでペーパーレスが進んだ。PCの画面を見せようと思うと2人でのぞき込むが、iPadならぽいっと渡してしまう
    • PCで入ってきた人達を変えるにはいろいろやらないといけない
  • 3. 月1ペースで全社ハッカソン実施
    • 任意参加
    • テーマを決める
    • 限られた時間で必ずアウトプットを出さないといけないと決まっているところがいい。爆速
    • 考えることが多くてあーだこーだ言ってるけど、それってどうなの?、がわからない。「で、それ、最初の画面に何が出るの?」が大事
    • 直接的な課題解決のための鍛錬にはハッカソンが向いている
    • 石巻Hackathon
      • 元々地方が持っていた課題、シャッター街とか。プラス震災。両方を解決しないといけない
      • 現地の人を巻きこんでいく
  • 4. Hack Day
    • 24時間以内に普段の業務とは関係なく自らが望むものを作り上げ、90秒で発表するというイベント
    • エンジニアはプレゼンが苦手という意識がある → いい訓練
    • 2012年夏の面白かったもの
      • PraRace: スマホを振っているとミニ4駆が動く
      • ブレインコプター: 脳波で動かす
      • i刺身: 刺身に電極をさしてSNSに刺身の気持ちを投稿する。食べられたら退会
    • 才能の無駄づかい推奨
    • 明日から2013/2/16〜18 今回は社内だけでなくフルオープンにした
  • 5. MYM
    • Hack Day生まれのプロダクト
    • コミュニケーションツール
    • 社内採用をYammerと競って勝利
    • 働き方が変わった。「メールよりMYM」
    • 趣味の部屋、秘密の部屋もたくさんある
    • 内製なのでフィードバック→即改善
  • 6. GitHub Enterprise全社導入
    • 2012年3月末、エンジニアがほしい → 上層部が「いいね、動いてみて」
    • 7月、アカウント数160でスタート → 一瞬でなくなる
    • 現在アカウント数500
    • Gitのすごさはpull request
    • 自律的な現場への変化、活性化
  • 7. アジャイル
    • 職能で分けていたチームをサービス単位に再編
    • 認定スクラムマスターを「黒帯」として迎える
  • つまり爆速を支えるテクノロジーとは
  • Y! だけが爆速でもダメ
    • すべての会社、すべてのエンジニアを爆速に
  • 課題解決エンジン
  • IT業界なんて世界全体から見るとまだまだ小さいですよ
感想

小学生のころから自転車で移動体通信とはすごいですね! 爆速、そのスピード感はすごいものを感じました。「エンジニアの才能を生かす」というのにしびれます。「マインドを変える」ということに関してエンジニアは柔軟であるだろうと思います。エンジニアのマインドが変わることによって、回りの人達も巻き込んでいけるんじゃないかと思っています。

モバイルファースト再考

  • AKQAの紹介ムービー
    • The Biggest Revolution is Happening on the Smallest Screen We Have
モバイルファースト
  • モバイルファーストの時代と言うが、モバイルファーストとは何?
    • 会場でモバイルファーストやってるって人? → いない
    • モバイル向けのWebサイト ┓
    • スマートフォン対応     ┣ ではない! (大きな×印)
    • モバイルアプリ       ┛
  • モバイルファーストの時代
    • モバイル端末を起点にしたサービス戦略
    • モバイルを第一に考えると良いサービスが作れる
    • Eric Schmidt (Google), Kate Aronowitz (Facebook )
  • 元気あるサービスはモバイルオンリーのものが多い
  • モバイル向けのデザイン原則
    • 小さな画面内での効果的なデザイン
    • 情報の見せ方、整理の仕方
    • タッチ/ジェスチャーのinteraction
    • バイス依存しない画面遷移
    • OSに依存した画面遷移
    • プラットフォームに依存した機能
  • Mobile First!
    • Luke Wroblewski (Y!)
    • Growth, Constrain, Capability (成長性、制約、可能性)
  • モバイルの成長性: まあわかってますしいいですよね
  • モバイルの制約
    • 小さい画面/パフォーマンス/場所と時間(モバイルではむしろ自由)
    • マイナスのデザイン
    • ネイティブの機能を使ってどうやるか
      • 必ずしもWebデザインの話ではないはず
  • モバイルの可能性 ← ここが本来のmobile firstでは?
  • Mobile First
    • モバイルで出来ること、出来ないこと → 特性を活かしたサービス
  • Contents First?
    • モバイルでもPCでも同じコンテンツを
    • まずはコンテンツありきであるべき
    • → 本来はデバイスに依存しない情報提供という考え方
    • Future Friendly
  • Mofile Firstの利点
    • 閲覧環境を選ばない
    • ブラウザに依存しない
    • 情報構造がシンプル
    • データが小さく軽い ……はず
  • デルタ航空の例
    • iPadアプリからチケットの予約、機内の映画情報、機内での現在地などがアクセス可能
ユーザーを見る
  • モバイルを使う人ってどんな人?
    • モバイルな場面を観察する エスノグラフィー(シャドウイング等)
    • 座って使う、カベ使ってメモしたり
    • 背中にかべが来るように立つ人が多い
    • パーソナルスペースを確保した上で使う
  • デザイン思考
    • まずはプロトタイプを作って、現場で実験と検証を行い、問題点を発見→改善、をくり返す
    • エスノグラフィーは本質を見抜くためには上流の手法
      • 小中学校を観察した例
      • TVがまったく使われない
      • 連絡ボード(コルクボード)があっても黒板が使われる
      • 椅子の足にテニスボールをかぶせている
      • キタナイ雑巾とキレイな雑巾を彼らなりに分けているが大人にはわからない
    • 新しい発見があります。本物(本筋)の発見があります
  • Action!
    • 書を捨てよ、町へ出よう(寺山修司)
      • デスクを捨てよ、モバイルを使おう
    • 本当のユーザーを知ろう
    • 実際にモバイル端末を使い倒そう
    • 端末は自分で買おう
      • 自分で買わないと使い倒しません
    • モバイル端末を使う日を週4日、少なくとも3日設定しよう
  • 参考書籍
    • Mobile First, Luke Wroblewski, Book A Part
    • The Mobile Frontier, Rachel Hinman, Rosenfeld Media
    • モバイルデザインパターン, Theresa Neil, オライリー
    • Design & Research Method Index 〜リサーチデザイン、新・100の法則, BNN
感想

モバイルファーストというお題でしたが、エスノグラフィーの話が面白かったです。もっとたくさん聞きたいと思いました。これまで会議室やデスクワークでのエスノグラフィーの話を聞いていたのですが、モバイルになるとフィールドがまた変わってくるのでしょうね。

Opsから挑むDevOps

  • 15-D-4
  • 千葉則行さん エクシード
  • インフラエンジニアとして
    • Dev - DevOps <= Ops
  • Action!
    • 人と艱難を共にすべく、人と安楽を共にすべからず
  • お題
    • エンジニアを解放する
      • 深夜の仕事が多い。年とってきた
    • DevOps
      • 2009年か2010年?
    • 私たちの取り組み
    • 改めて考えてみる
    • 再びAction!
インフラエンジニア
  • インフラエンジニアの苦悩
    • 突然の…
    • 明日までに…
    • そんなこと言われても…
  • 分業〜すべてのスキルを持つことができない時代
    • Dev vs Ops
    • エンジニア vs 営業
    • 企画部門 vs 技術部門

草勢衛基味

  • 対立なんて不毛
    • 世界中でスーパーな人たちが切差たくましているのに
DevOps
  • コラボレーションの仕組みをつくること
  • Cluture, Lean, Automation, Measurement, Sharing
    • DevOpscafe.org
Culture┳Lean   ━Automation
       ┗Sharing━Measurement
  • DevOpsと言って思いうかぶのは
    • Chef, puppet, cfengine
  • 例えばChef
    • 〜マイナーなんですよね
    • Facebookが採用、Erlangでスケーラビリティ拡大
  • Chef: 無防備な状態でつっこんでいくと間違いなく返り撃ちにあう
  • Chefの解説
  • スクリプトでよくね?
    • スクリプトよりも
      • 簡単、確実に記述できる
      • べき等性がある
    • Puppetよりも柔軟性があるが…
      • ベタのRubyを書ける
    • とっつきにくさは否めない
  • Mcollective
    • Puppet labsのブロダクト
    • 去年かおととし
    • スケーラビリティーがある
    • MQに入れ、ノードが取りに行く
  • 実際のインフラ屋の仕事
    • 設計、構築: とても静的な仕事〜設定したら変えたくない
    • 障害対応: とんでもなく動的〜急いで対応しないといけない
  • Automation?
    • 自動化できるのは静的なコトだけ
←静的 動的→
Chef Mcollective
Puppet Capistrano
  • ツールのまとめ
Pull Chef/Puppet 状態の一貫性
× 動的な操作は難しい(順番を指定して実行)
Push Capistrano 任意のタイミングで操作
× なんでもアリになってしまう
× スケールしない
async Mcollective 非同期型、スケールする
任意のタイミングで操作可能
× 単なるメッセージトランスポーターである
こんなのはじめました
  • cloudrop
    • 運用の静的な部分と動的な部分をあわせ持つような仕組みを作りたい
  • アーキテクチャ
   Portal
    ┃
 Restful API => Mcollective Client
    ┃
   ActiveMQ
 ┏━━┻━━┓
Mcollective Mcollective
Servers     Servers    
 ┃     ┃
Chef-solo  Chef-solo
Script     Script
  • pullでもpushでもなく非同期なカンジで仕事を流していく
  • オペレーションの標準化
    • なんでもアリにすると荒れる
    • 再利用するべき → 標準化

ボトムアップ
↑ システム構築の標準化
↑ 利用パッケ必ジの規格化
↑ 作業の細分化

    • → 品質(Q)-コスト(C)-スピード(Agility)のバランス
  • ボトムアップな標準化
    • タスク → パッケージ → バインダー → ライブラリ
    • パッケージ: MySQLなどミドルウエアのレベル
    • バインダー: 最終調整してシステムにする
  • フレームワーク」とは、流れは提供できるがノウハウ蓄積はお客様でやってね、ということ
  • 仕事はできる人に集まってくる
    • シニアなエンジニアはシニアな仕事をしてほしい。どんどんクックブックを生産してもらいたい
    • 現場の人は手順として確立されたものを確実に実行してほしい
  • ポータルですべての操作ができる → SSHでログインする必要がなくなる → 完全に誰が何をやったかをトラッキングできる
  • cloudropの効能: 標準化してナレッジをためると何ができるか
    • 手元の環境でテスト → 本番へ
    • テスト、QA、本番環境を同一に
      • configureの引数変えないでください! など
    • public <=> private間の相互利用
    • blue green deployment
      • 本番と新しいバージョンを全一構成で用意しておいて切り換えるデプロイ手法
改めて考えてみる
  • サービスを回し続けることである。そこにはDevもOpsもない
    • 関わる人全員が関連してはじめてできる仕事
  • サービス仕様 - アーキテクチャ - 運用 の三角形。どれかを先行してやれるものではない
  • もはや、そこには開発屋もインフラ屋も区別がない。あるのはスペシャリティだけ
再びAction!
  • Shareできるコト、できないコトがある。
  • 「人と艱難を共にすべく、人と安楽を共にすべからず」
    • つらいこと、難しいことは共有しやすい
    • 楽なことを共有しようとすると堕落してしまう
  • つらいコト、大変なコトを共有することから始めましょう
感想

ボトムアップからの積み上げというのは、インフラ・オペレーションの仕事にはよく合うと思います。

NoSQLの野心的な使い方 〜Apache Cassandra編〜

  • NoSQLのよくある誤解
    • 正解: 負荷分散に優れている、たい障害性が高い、データ一貫性は弱い
    • 誤解
      • ×データ一貫性がない
        • 弱いだけでないわけではないCassandraでもconsintency levelを調整してやればいい
        • CAP定理は正しい。が、誤解が異常に多い。同時には満たせないが同時でなければなんとかなる
      • ×トランザクションは無理
        • 一番カンタンには管理ノードを置いて、そこで処理すればいい
        • マスターノードを作っちゃうと分散は難しい。工夫が必要。工夫すればできる
      • ×業務系フロントシステムには向かない
        • RDBMSを主役にすえたNot Only SQL →なんて言ってるのはもう古い!
  • Cassandraを選んだ理由
  • どういったものを使いたいかをよく考えて選んでほしい
    • 一長一短あるので検討してほしい
  • NoSQLとRDBMSとの本当の関係
    • RDBMSでの高速化(負荷分散)
      • replicationで読み込み負荷分散 → 書き込みは負荷分散できない。RDBMSの最大の弱点
      • テーブル単位で複数サーバーに分割〜テーブルを分割 → 発想はNoSQLと同じ
      • インデックスを張る → 発想はNoSQLと同じ
      • 番外) SQLの解析を飛ばして直接ストレージアクセス → SQLですらない!
    • 設計を深くつきつめると同じ
      • そもそもCPUの処理量はDBに関係なく一定
      • CPU処理量の配分の最適化(「処理量保存の法則」)
    • いい使い方
      • NoSQL: フロント(オンライン)
      • RDBMS: バックヤード(オフライン)
      • Not Only SQLで推奨するのは↑とは逆の使い方
    • NoSQL: フロント向き
      • 書き込み負荷も容易に分散
      • 障害・アクシデントに強い
      • 分散がバックアップもかねる
    • RDBMS: バックヤードでの分析・統計向き
      • SQLが便利
      • 検索、ソートが効率的
  • 実案件でのNoSQL
    • 大規模ポイント管理サービス: 視聴率データの取り込み
    • 拡張性の担保
      • サーバーを追加すればOK
      • すでに秒間16000回を実証済
    • サーバー障害もひと通り経験
      • HDの大規模障害(半分落ちた)にも耐えた
    • こんなシステムを1人で構築することもできるのがNoSQLの面白いところ
  • NoSQLあるある
    • 社長「NoSQLって何?」 → 「さすがですね! これからのびる技術です」
    • 人事「新人でもできる?」→「ちょうど良かったです。そういう人の方が向いてます」→人材確保
    • 部長「お金になるワケ?」
  • NoSQLが熱い領域
    • M2M(広い意味で)
      • センサーネットワーク
      • 業界大手はHadoopによる可視化まで
    • 既存領域でもまだまだいける
  • Action!
  • 合言葉
    • NoSQLでうでを試そう
  • 大切な考え方・キーワード
    • 「○○マスター」を作らない
    • NoSQLは画面から作る(RDBMSのようにモデルから考えると失敗する)
      • DBは入れ物。だから分散できる
      • ロジックはアプリ側へ
    • CAP定理とBASE
    • めげない心
    • NoSQLはエンジニアの腕の見せ所がとても多い
      • NoSQLは技術ではなく市場である
    • RDBの誕生からSQLの標準化まで20年かかった
      • そこからNoSQLの誕生までやはり20年
      • 次の20年は?
感想

NoSQLにはなんでも入れられるから、モデルを先に作るより画面を考えよう、というのは、SQLに慣れた頭だと逆に難しそうです。

その他

ランチは1日目に満席で入れなかったカレー屋さんに行きました。おいしかったです。イベント会場周辺のランチ事情をどこかにまとめておきたいですね。

Developers Summit 2013レポート(1)

遅きに失した感がありますが、デブサミ2/14分のレポートです。

実はデブサミに参加したのは今回が初めてでした。 長い坂を降りて目黒雅叙園へ。 最初間違ってアルコタワーに入ってしまい、中から雅叙園へ回りました。後で聞いたところによると、エスカレーターを使って行けるルートがあるようですね。ぐぐるとすぐ見つかりました。

Webブラウザの時代は終わるのか?〜スマホアプリとHTML5の未来〜

ウェブが破壊したもの
  • 20年前のPC, MacCUIからGUIへの移行期にあり、PCは生産作業ツールだった
    • 当時はGUIが競争力の源泉と考えられていた(例: Apple vs MS裁判 1988-1994 → Apple敗訴)
    • GUI操作の特徴: シングルクリックで選択、ダブルクリックでデフォルトアクション
  • ところが1995年インターネットが登場し、PCはコミュニケーションツールに変わった(それ以前もパソコン通信はあった)
    • ウェブブラウザのUIはOS非依存
    • ブラウザ操作の特徴: シングルクリックはページ遷移
  • インターネットとブラウザの登場でOSメーカー(MS)とウェブ企業(Google等)の戦略は互いにつぶし合う様相に
iPhoneの登場とスマホアプリ
  • Apple社の戦略はOSメーカーとブラウザのつぶし合いとは違う
    • アプリならではの長所を生かし、AppStoreというエコシステムを形成
  • スマホへのブラウザアプリの最適化は不可能ではないとはいえ、専用にするならアプリの方が楽、クロスプラットフォームにしようと思うと互換性で苦労する
  • スマホアプリ=進化したウェブアプリなのか? Webの通信を使いながら、より優れたUXを提供できる。ウェブが終わりってアプリの時代が来るのか?
ウェブ vs アプリ

哲学

  • Webの基本3要素(Tim Berners-Lee)はHTML, HTTP, URI。一番重要なのはURI
    • URIができたので誰でも同じ情報を参照できるようになった。Google検索もURIがあるから可能
  • スマホアプリ=ウェブを補完する存在
    • better UXでウェブをサポートするが、URIは扱わないか意識させない作り

市場

  • スマホアプリ市場の規模感: 広告などと比べると小さい。日本のソーシャルゲームくらい
  • すべてのウェブサイトはアプリ化するのか?
    • メリットは業態によって様々。零細通販では開発費がペイできないかも
    • アプリ化のデメリットももちろんある: 開発コスト、アップデート頻度低下

技術

  • ウェブブラウザも進化している
  • W3C Push API
    • ウェブサイトからスマホへのpush通知。通知を受けるとブラウザが起動
  • 事例: ngCore on HTML5
    • ngCore: DeNAが提供するゲーム開発環境(ngMocoから)
    • JSでゲーム開発 → OpenGL等のネイティブAPIを利用
    • 2年前は夢物語と言われた → 今は結構動く
まとめ
  • スマホアプリ vs ブラウザアプリ: 対立というより相互補完の関係にある
    • アプリ: UIに優れる、ブラウザ: 幅広い用途に対応
  • 用途別分類: 横軸: 高度なUI←→機種非依存; 縦軸: 利用頻度としてプロットしてみる
Action!
  • できないと決めつけていることはありませんか
感想

スマホアプリとブラウザアプリは相互補完の関係にあるというのは実感としてもわかります。上手な分担ができれば使い勝手はよくなりそうです。アプリとブラウザ間でログインセッションの共有がもっとスムーズにできるといいな、などと連想しました。

トランザクショントレース

パフォーマンスチューニングとは
  • 要件を満たすための改善活動 → 目標がある
  • 3つのアプローチ → ずらす、変える、増やす
  • FAQ: 対策がわからない → 問題・原因がわかったつもりでクリアになっていないケースが多い
    • クリアにできない: 解明手段がない、セキュリティー上見えない
    • クリアにしたくない: メンタルな理由
パフォーマンス低下 - どうする?
  • アーキテクチャによって打つ手は違うだろうが、アプローチは本来同じであるはず
  • 標準アプローチを確実に押さえることが重要
  • Front-Back-DBのマルチtierの例
トランザクショントレース技術
  • Compuware社製品PurePath
  • ユーザーのクリックからDBクエリーまでをひもづけてトラッキング
  • 問: ネットワークモニタリングとは違うのか?
    • ネットワークモニタリング: スイッチにしかけてデータの流れを見る
    • トランザクショントレース: アプリケーションの動きを見ている
  • ユーザーのクリック → HTTPリクエスト → 各サーバーのどのメソッドを通るかを階層表示
PurePathの仕組み
  • タギングを使ってデータを識別
    • 各サーバーにインストールされたエージェントがメッセージにタグをつけていく
    • タグを分析サーバーに集約・分析
    • 流れに付随する引数なども取ってくる
    • 必要なコンテキスト情報をすべて取ることができる
  • PurePathの特長
デモ
  • よくある質問: このネットワーク図って、自分で定義しないといけないんですよね?
    • → サーバー間のトラフィックは実際の呼出しを分析して自動でネットワーク図作成
    • doLoginの第1引数がユーザー名と定義しておけば、ユーザーのクリックからの追跡を抽出できる
    • 取得したトランザクショントレースをexport → 別の技術者がimportして分析
      • 正常時のトレースと比較(リグレッション分析)
      • 今回のデモの例: authenticateメソッドが735回も余分に呼ばれている!
  • PurePathの機能
チューニングのアプローチが変わる
  • ログ分析 → トランザクショントレース
  • 再現待ちという仕事がなくなる → すぐに分析
  • 勘と経験 → 科学的、説明可能な分析
  • → 標準化
Action!
  • 快適なアプリケーションを通じて、快適な社会を作りましょう
感想

トランザクショントレース技術のすごさがよくわかるデモでした。他の技術と比べたとき、トランザクショントレースの弱点はなんだろうと思いました。

Ruby 2.0

  • 14-A-3
  • @yukihiro_matz
  • スライド
  • 毎年devsumiでは聴衆おいてけぼりで話せと言われている
  • 今日はRuby 2.0の好きなところを話す
Ruby誕生
  • Rubyを作りはじめたのが1993年2月24日。
  • この日に「Ruby」という名前が決まった
    • 概念としてのRubyが生まれたのはこの名前が決まった瞬間。そのときにRubyが誕生したと思っている
    • 会社にコンピュータがあってメールも使えたので、いっちょ作るか、と始めたのがRuby
    • あと10日で20周年
  • 言語を作るのは大変。"Hello World"を動かそうとすると文字列を作らなきゃいけない。そのためには文字列オブジェクト、文字列クラス、Objectクラス、といもづる式にいろんなものが必要に。出力するにはIOオブジェクト……
    • 最初のHello Worldが出るまでに半年かかっている
  • 1995年12月 Version 0.95初公開
    • 人にあげるたびに0.01ずつバージョンを上げていた
  • 1998年の1.2以降、開発系と安定系で分かれる
    • 盆と暮れに出すのが目標
  • プロットすると、2.0前でサチってしまいそう
    • 「これは本当に2.0にふさわしいんだろうか」という心理的ブロックがある
  • 一昨年2.0を出すとアナウンス「2013年2月24日にRuby2.0を出す」
とうとうやってきた2.0
  • Ruby2.0の話はこれまでずっとしてきていた
  • 過去の2.0候補
  • RubyConf2001 最初のRubyConf。キーノートで言及
    • 911があった年で米国入国が大変だった
    • スーツケース全部開けられた
    • Florida州タンパ。OOPSLA会場にて
    • 出席者32人の小さなカンファレンスだった
    • VM、新GC、ネイティブスレッド、埋込API
    • 心理的壁にもこのときすでに言及
    • 当時の構想: コア実装の置き換え
      • Perl, Pythonと比べて遅い遅いと言われていた
  • ここで言われていることはほとんどRuby 1.9で実現された
    • VMYARV ささだこういちさん Rubyバイトコード
    • GC → 世代別GC ひやまさん 1.6→1.7 でメモリ割当てを変更したらかえって遅くなってしまった
      • → 1.9ではLazy Sweepを導入。2.0ではbitmap marking
    • native thread → 1.8まではgreen thread(ユーザーレベルスレッド)
      • Ruby開発開始当時はマルチコアCPUもなかったし普通の人がマルチスレッド使う方が効率的という考え方はなかった
      • キレイにプログラムを書けるようにスレッドを用意した
      • 1.8ではthread切りかえのたびにスタックをまるごとコピー。リンクしたいネイティブライブラリがマルチスレッドだと相性が非常に悪い
      • 1.9ではnative thread。すべてのライブラリの再入可能性を保証できないのでGiant Interpreter Lockを使った。IOするときはロックを外すのでOK。IO heavyなプログラムでなければ使えないと文句を言われる。JRubyはnative threadだよー、とよく自慢される
    • 埋込API → 1.9では不採用。C APIについては互換性あり
現代のRuby2.0の起源
    • RubyConf2003のキーノートで言及
      • キーワード引数、新ハッシュリテラル、メソッドコンビネーション、セレクターネームスペース
    • 心理的壁を乗りこえられたのは
      • 20周年記念 Anniversary Driven Development
        • 20だから2.0みたいな。2000円札みたいな
      • キーワード引数、メソッドコンビネーション、セレクターネームスペースがそろったというのが大きい
Ruby 2.0の新機能紹介
  • キーワード引数
    • 名前つきオプショナル引数
    • 呼び出すほうは新ハッシュリテラル(1.9から使えるsyntax)
      • 一番最後の引数がハッシュだとブレース不要(昔からあるルール)
    • Ruby 1.9では問題がある。渡されるほうはhashで受けて手動で分解しないといけない
    • 2.0ではメソッド定義側で書けるようになった
      • def downto(from, to, step: 1)
    • APIの柔軟性、ドキュメント化、読みやすさ、覚えやすさ
  • Module#prepend
    • メソッドコンビネーションの実現
    • 既存のクラスの修飾
    • alias_method_chain: Railsで多用
      • 欠点: 名前衝突の危険、名前管理が必要、修飾のグループ化が困難
    • メソッドコンビネーション: CLOS (CommonLisp Object System)から
      • デフォルトで定義されているもの: before, after, around
      • 正直言うとRubyにはオーバースペック
    • 純化したもの → Module#prepend
    • prepend: 前につける: includeは後ろに追加、prependは前に追加
      • includeは自モジュールが優先だが、prependは入れた方が優先
    • 既存のメソッドをwrapし、superで呼び出す。その前後に追加の処理を記述
  • Refinements: 既存クラスの拡張
    • メソッドの追加、wrap
    • オープンクラス: クラス再定義。mathn, jcodeで使用
    • 実用するのは難しい。スコープ問題がある。クラスを再定義してしまうと、プログラムの他の部分に影響をおよぼす
    • そこでRefinements
      • スコープ限定のオープンクラス → 実験的機能として入れることに
      • 実験的とは? 実はJRubyなどで実装しようとして問題が発生
        • → 入れないと誰も使ってくれない。ブランチをDLして使ってみる人はいない
    • module R内でrefine String do ... end
      • using Rが有効なスコープ内でだけ、refinementsが使える
    • 他の言語の試み
      • Smallscript: Selector namespace
        • メッセージの名前空間分離による多重化。挙動が難しい(継承すると大変)
      • Smalltalk/Java: Classbox
        • 既存クラスを置き換える。GUIのlook&feelを変えちゃう例。local rebinding → lispの動的スコープ
      • C#: 拡張メソッド
        • Scalaのimplicit。追加しかできない
      • Classic: プロファイル。matzの卒論
        • ひとつの構造体に複数のインタフェース「プロファイル」。同じクラスに属するプロファイル間で相互に代入可能
  • Enumerable#lazy
    • 関数型プログラミング?
    • 関数型ワナビーとして
    • メソッドチェーン (1..Float::INFINITY).map{..}.select{..}.first(3) → 動かない(途中のmap, selectがeager動作)
    • 提案。遅延評価版のメソッドを作る: map_lz, select_lz (lazyが_lzになっている時点ですでになまけものだw)
      • 全部を置きかえるのめんどくさい
      • 遅延(lazy)を求めるものは怠惰(lazy)である
    • 最初にlazyってやればいい → ナイスアイディア
      • (1..Float::INFINITY).lazy.map{..}.select{..}.first(3)
      • 中身はいろいろ大変
  • その他の新機能
    • デフォルトUTF-8
    • Dtrace/TracePoint
    • 性能向上: VM,GC,Win上でのrequire
Ruby 2.0以後
    • 言語としてはほぼ完成。これ以上はやりたいこともあるが言語をこわさないといけない
    • そうは言っても、進化は続けなければならない
      • 性能改善: JITとか
        • JRubyが後発なのにうちの方が速いとか言っててムカツク
      • 適用分野拡大: 組み込み、ハイパフォーマンス
      • マルチコア
      • アクター
      • multiple VM
感想

まつもとさん、いつも楽しそうにしゃべりますね。キーワード引数はすぐにも使いたいです。Module#prependは下手に手を出すと可読性に難が出そうですが、instrumentation的な使い方が面白くなりそうでしょうか。

RubyiOS/Androidアプリを作るMobiRuby

mruby
  • 概要
    • 省メモリ環境向けのRubyの新しい実装
    • 2012年ISO/JIS Ruby
    • CRubyのサブセット: ないもの: File, Socket, Thread
    • OS/CPU 依存が少ない
      • POSIXが要求されなくなった。C99さえあればいい
  • configurable
    • 不要な機能をコンパイル時に削除
      • evalもいらないとか、Struct, Time, Math, STDIO, Regexp, sprintfなどはでかいから切り離したいとか
    • Tableをhashからlistに
    • 400〜500kからさらに小さく
      • Lego Mindstorm上でも動く
  • mruby target
    • 組込
    • バイスだけでなくアプリにも組み込める。エディタのマクロ言語とか
    • mod_mruby
  • mruby internals
    • VM: RiteVM: Multi VM instance
    • 弱点: スレッドセーフでない
  • 開発
    • 2010年春からクローズでスタート
    • 2012/04/22 GitHubに公開
  • mrbgems
    • 2012/11に@boviが作った(rubygemsとの互換性はない)
    • GitHubからカンタンにインストール
    • クロスビルドサポート
    • mrubyで提供されているライブラリbindings
      • digest, json, iconv, base64
      • 作ってるのは5人くらい
    • mruby: 車のエンジンのようなもの。シンプルな昔のエンジン
MobiRuby
  • 米国から日本への帰国便の中でiPhoneで動くことを確認
  • What's MobiRuby
    • iOS app development kit
    • MITライセンス - mrubyと同じ
    • Objective-Cで使える機能はすべてmrubyで書ける
    • Android版も準備中
    • AppStoreでmobirubyをさがせ
  • Vision
  • MobiRubyコードの例
    • defineはほとんどObjective-C
    • コード補完が効かないのが痛い
  • Next Step
MobiRubyスタック
  • mruby-cfunc: C言語の関数を呼ぶ。mallocも呼べる
  • mruby-cocoa: Cocoaブリッジ
    • CocoaはほぼすべてCから呼べるようになっている
      • mruby-cfuncでたたけば何でもできる
      • 速度が必要な部分などはCで書いた
    • delegate, blockも使える
    • キモイこともできる
      • Objective-CのクラスをRubyで継承、さらにObj-Cで継承
      • ひとつのメソッドだけRubyで定義
    • メモリ管理方法のミスマッチ(refcount vs mark-sweep)
      • 苦労して実装 → 遅い
  • mobiruby-common: iOS/Androidで共通にできるだろう機能
    • mrubyにはrequire, loadがない(なぜならFileがないから)
    • requireを作ってもらった
  • mobiruby-ios: iOS用にパッケージングするためのモジュール
  • ロードマップ
  • current status
    • MobiRuby based appがすでにOK
    • AppStore規約に合うか?
      • 外部から読み込んだコードを実行できてはいけない
      • プライベートAPIをたたいてはいけない
        • 仕様には書いていないがヘッダファイルに書いてあるAPIを使っている → 心配
    • 残存バグ: プロパティーが定義できるが読めない
  • テスト
    • C側のテストはだいたいそろった
    • ObjC側のテストをこれから作っていく
  • Pros
    • Ruby power
    • based on Matz implemented Ruby
    • mrbgems
    • MIT license
    • Compact (〜4000行)
    • mrubyで正規表現がサポートされれば……
  • Cons
    • 不安定。そもそもmrubyがまだバージョン番号もない
    • class/functionsが少ない
    • debugがつらいbacktraceがない
  • FAQ: RubyMotionと比べてどうよ
    • RubyMotion は2万円、MobiRubyは無料
      • 安定性から言って、いますぐ2万円払う方がおすすめですw
    • MobiRubyはMatz実装なのが大きい
Action!
  • MobyRubyの動機: Ruby Powerを世界に
    • JavaScriptiOSアプリを作る会社にいた
    • mrubyのα版をもらえるので作ってみた
    • 競合はしない
  • ワールドワイドのポートフォリオを作りたい
  • 海外のカンファレンスでしゃべる
感想

@masuidriveさんのTLを見ていると、日々@mattn_jpさんとキャッキャウフフしながらmrubyの実装を進めている様子が伺えます。mrubyいろいろ試してみたいです。

こわくない関数型言語

中野さん
  • 関数型言語ってこわい?
  • 関数型言語である」と思う基準は?
    • 関数が値として渡せる?
    • 高階じゃないと関数型じゃない?
    • 参照透過性? 副作用が隠蔽/分離されている? 型推論?
  • 答: 問題が不適切です
    • 「関数型」とはプログラミングスタイルである
    • 言語に依存しない問題
  • そもそも「関数」とは
    • 数学の関数の定義と同じ。入力集合の全ての値に対して結果がひとつ定まる
    • 関数でない例: 同じ値でも出力が変わってしまうもの、入力集合の一部に対して値が定義されないもの
  • 関数はどれ?
    • getchar(), putchar(int c), random(int p), inc(int* x)
    • 答: 問題が不適切。入力集合A、出力集合Bが定義されないとわからない
    • 入力は引数だけではない。出力は返り値だけではない
  • 関数化する
    • スライド参照
  • 関数化の注意点
    • f(g(x))のgを関数化する → gの入力集合が変わる → fの出力集合も
  • 関数型言語?
    • 入出力の集合を知らないといけないはず。どうする?
    • 結局のところ定義が難しい
  • 関数型プログラミングとは?
    • ほとんどが関数であるような記述。非関数をできる限り小さく
    • どんな言語でも書けるが、書きやすい言語は存在する
    • 関数型プログラミングが記述しやすい言語」
  • 関数型のメリット
    • モジュール化しやすい: 並行計算
    • 検証などの最新研究の恩恵: 型検査、モデル検査
    • エアバスA380: OCamlで検証・生成したCで実装されている
  • 関数型: 便利な機能に慣れる必要がありますが理論まで理解する必要はありません
    • Functional is Fun
  • takesakoさんのQ: 「関数」と「函数」の違いって何?
こわくないSML#
  • 上野さん
  • SML# 1993年 .netより前からあるんだよ
  • 2012年1.0リリース、2013年2.0
  • SML#: 強い型付け、eager評価。MLファミリー。OCaml, Standard MLの仲間
  • 関数型は輝かしい未来。Cとかはどろくさい現実。2つの世界は名状しがたい何かで分離されている。そこにはテクニカルな何かがある。SML#は2つの世界を結ぶ。輝かしい未来でなくどろくさい現実を指向した言語 #devsumiB
  • 3Dアニメは関数: 動画(時刻 t) → 画像
  • 多言語プログラミング
    • 手続き的な処理はC、宣言的に書けるところはML
  • pros
こわくないScala
  • 水島さん
  • こわそうなScala
    • implicit conversion, implicit parameter
  • 誤解1: 関数型の概念を理解する必要がある
    • 「タイプ数が少ないJava」になることをおそれない
    • 第一級の関数の活用 → ループから再帰高階関数
  • 誤解2: implicitなんとかを使いこなす必要がある
    • クラッチから書きときは必要ない
    • 標準ライブラリを読むときに勉強すればいい
    • 最初に全てを知ろうとしないことが大切
  • 誤解3: 関数型なコードを書かないとたたかれる
  • 誤解3: Scalazという難しいライブラリを普通に使う
    • コアライブラリの作者が使っていたりする

18:39

ここでMBAが電池切れになってしまい、自分も電池切れになったのでその後のパネルが思い出せません。すみません。
Togetterをどうぞ。

感想

関数型言語は、やろうやろうと思いつつまだ勉強していません。数学の定義から関数を考える、というのが結構わかりやすい気がしました。

その他

ノベルティーをたくさんもらいました。ステッカーとか、バレンタインデーだったのでチョコレートとかも。Amebaウォーター、いつも助かります。

この日のランチは目黒通りまで出たところの居酒屋ランチ。牛タンシチューをいただきました。その席で@kura_labさんから出た意見をツイートしたら、たくさんRTをいただきました

個人スポンサーはGravatarから写真を取っていたようなので、登録メールアドレスから取ってもらってもいいですね(もちろん許可した場合)。

あとはこんなのとかw

idcon15レポート

2月1日に行われた #idcon #15に行ってきました。
ミッドタウンタワーの大きなY!セミナールームがいっぱいになるほどの参加者でした。
idconとしては過去最大?

「Andouroid Android OSのカスタマイズによるアプリ間統合認証の実現」

  • ヤフー株式会社 安藤 義裕 氏
  • Andouroid: Android OSとJavaのFrameworkおよび下のCのレイヤに手を入れて作ったカスタムAndroid
    • 注: 個人としてやっているものでありY!がAndroidに〜という話ではありません
  • デモ
    • emulatorの中にAndouroid。起動に1分くらいかかる
    • ポイント: Y!のアプリを2種類使う。一方でログインすると、もう一方ではログインする必要がない
    • 最初にY!メールアプリを起動 → ログインしていないのでログイン画面が出る
    • 次にY!ブラウザを起動。ブラウザからメールを開く → やっぱりログインしていない
      • ここでログインしてY!メールを見てみる
      • ここでY!ブラウザを起動
    • さっきログインしていなかったY!メールを起動すると…… → ログイン済
    • おまけ: ほぼすべてのアプリをY!版で置きかえてみた。検索もY!
  • デモのポイント
    • アプリ自体には手を加えていない
  • しくみ
    • WebKitの改造
    • ログイン完了時にトークンをトークンストレージに格納
    • ログイン時にストレージにトークンがあればログイン処理を自動で行う
  • ストレージの説明の前に…
    • AndroidのユーザーIDはどうなっているか
    • プロセス一覧を見ると、アプリごとにuniqueなUIDが振られているのがわかる
    • アプリのDBファイル: アプリUID/GIDに対して0660になっている
  • あんどうろいどではyahoo(UID/GID)を追加した
    • uid, gidUNIXのようなファイルで管理されているわけではなくCソースにハードコードされている。それを改造した
    • アプリインストール時にY!アプリならUID/GIDをyahooに設定
    • 改造したOSのビルドは3時間〜3時間半
  • 認証情報の共有
    • データ共有の方法はいろいろある(Shared Preference, SQLiteなど)
      • Shared ID: アプリ署名の証明書が同一であれば複数のアプリにも同じUIDを振ることができる
    • なぜカスタマイズしたのか
      • アプリ単体でデータを持つ or 広くどのアプリからでもアクセスできるデータにするか
      • 今回の要望: Y!アプリに限って認証情報を共有したい
      • → グループの追加のようなやり方がよかった
  • バイス時代のID
    • OSを握って全部作る者がいろいろできて強い
    • PC時代はWebのIDと同じだった。デバイスのIDとWebのIDは違いがなくなってくる → デバイスを持っている会社がますます強く
  • OpenID Phoneなんて良さげ
  • Q&A
    • Q: アプリのUID/GIDをyahooに書きかえるときY!のアプリであるかどうかはどうやって判別しているのか
    • A: 今回はパッケージの名前で判定している → NGな方法。本来は独自マーケットを作成し、signatureをつけるなどの方法が必要
    • Q: nov: ストレージに保存しているのはOAuthのaccess_token? id_token?
    • A: 実はクッキーですw

アプリ間のトークン共有は発行者の認証や不正な共有を考えるとOSのサポートが必要なのだろうと思いました。そのへん、OSを押さえていると強いですね。

(19:32)

Yahoo! JAPANのOAuth/OpenIDに代わる新しい認証認可機能 〜YConnect〜」

  • ヤフー株式会社 河内 俊介 氏
    • こうち しゅんすけ
    • ID決済本部 2008年入社 2011年〜認証/セキュリティー等ID関連
  • YConnectとは
    • OAuth2.0に準拠、OpenID Connectをサポート
    • Y! J IDでログイン可能
    • 一部属性情報の連携も可能
    • OAuth 1.0と比べてRPの作り方がカンタン
  • YConnect歴史
    • 2011年末、設計開始
    • 2012年9月中旬 → パートナー企業に提供
    • 2012/11/17公開
  • サポート範囲
    • OAuth2.0: Authorization code, Implicit, resource owner password credential
      • resource id credential: 社内のみ
    • OpenID Connect: Basic Client, Implicit Client
  • パートナー、社内アプリで導入
    • Y!ショッピング、Y!バザールなど
  • ユースケース
    • Y! J IDでログイン → 認証機能を使用
    • リソースの提供 → Y!ウォレットの導入 → 決済(ID連携と独立して可能)
    • 属性情報の連携 → ユーザー登録時にプリセット。生年など
      • 提携パートナーにはより詳細な属性
    • Y!提供APIの活用
  • 導入構成図の事例
    • Webサイトの連携: authorization code
      • ①Auth endpoint → code入手
      • ②codeでToken endpoint → id_token, access_token, refresh_tokenを取得
      • ③id_tokenをチェック、リソース活用
    • クライアントアプリ連携(implicit)
      • id_token, access_token → アプリ内ストレージに保存
    • resource id credential
      • ①デバイスのUUID → YID発行API Y! ID, passwordの発行 → 保存
      • ②Y!ID passwordでYConnect → access_token, id_token
  • 裏話
    • OAuth1.0, BBAuthはすべてY!incのローカライズ
    • 全WebAPIのSSL化(署名不要になった代わりに全SSL化)
    • 翻訳プロジェクトへ業務として参加
    • Appleからのreject
      • 課金アプリでのブラウジング
      • ブラウザから「新規登録」リンクがあるとrejectiTunesから課金しろ
      • Safariを使ってログインしたらreject → OAuth2.0の仕様どうしよう
        • ログインしないと使えないものはrejectされるのかなー
    • 認証PF一覧
      • 用途によって認証PFがバラバラだった。ユーザー識別子もバラバラだった → YConnecetですべて統一
  • 機能拡張
    • PPID
    • OTP(one time password)
    • シングルログアウト
    • IDの質向上: 連携強化(自治体/金融をターゲットに)
  • OpenID Connect → 爆速で追っていきます!
  • Q&A
    • Q: (asyoulike007) implicitはスマートフォンでwebだけ? → アプリも
      • 課金もそのまま使える? → y
      • セキュリティー上の懸念は何か考えたか
      • 提供するSDKの中にも組み込まれている。トークンは暗号化して保存。アプリではアプリでしかアクセスできないストレージに入れるよう要請
        • jailbreakされる場合などは端末所有者の自己責任とするなど
    • Q: 導入事例のなかでここが良かったは?
      • id_tokenは特に便利という話は聞かないが…
      • access_tokenによるなんちゃって認証だったのが、ちゃんと認証できるようになった
      • 属性情報が信頼できるのはメリットとなっている
    • Q: カスタムURLスキームで後勝ち/先勝ちの問題はどう考えているか
      • Y!アプリのスキームでは外のアプリとカブらないようにしている → 外にもらさない
        • バレちゃって真似されないということ? → Androidではユーザーが選択できる。真似される件は今後の課題
      • 外部のアプリではカブってしまう場合がある → 懸念が残る
    • Q: 提携パートナーに属性を多く提供というのはclient_idで区別? → そのとおり
      • 公開クライアントでは使えなくしている? → 特にやっていない。WebサービスはsecretでBASIC認証してもらう
        • クライアントアプリはsecretによる認証なし
      • 提供アプリのclient_idがわかってしまうと困る? → return_uriで制御
      • (nov)以前のidconでも扱いましたがimplicitは難しいですねー
      • (nov)YConnectはOpenID Connectの商用実装の世界第1号ですよね?
        • → こんなツイートも

実際に運用されているというYConnectだけに裏話が面白かったです。

(20:00)

「C向けサービスで2要素認証を普及させるためにできること」

  • 株式会社ミクシィ 伊東 諒 氏
  • 去年話題になったネタ
    • パスワード管理
    • ログイン画面のURL
    • 2要素認証 ← 今日の話題
    • C向けだとID+passwordからの脱却は難しい。2要素認証でがんばっている
  • 現状と課題
    • 金融系、ゲームなどでは以前から昔及
    • ユーザー数の多いサービス、メールプロバイダ: パスワード使い回しが問題
    • 実装方法: ワンタイムパスワード: メール/SMSで送信など
    • ID/PW認証 + α
    • ハードウエアトークン → コスト高; ソフトウエアトークン → 鍵; 時計がずれたら? など
    • 脆弱性や課題については黙認状態
      • 銀行の乱数表がごっそり抜かれる時代なのだが
  • 2要素認証: ユーザーは各サービスごとに登録
    • よく聞かれるつぶやき: 「○○も2要素認証対応してほしい」
  • 普及への課題
    • ついてこれないユーザーがいる: サービスごとの設定はめんどくさい
    • 導入しにくいプロトコル: POP/IMAP/SMTP, XMPP……
      • 認証とリソースアクセスの結びつきが強いと2要素を導入するスキがない
      • Googleではアプリ固有パスワードで逃げている
  • 解決案
    • 設定がめんどい → 強い認証しているプロバイダの下にぶら下がる (G, f, Yなど)
    • 認証とリソースアクセスの結びつき → OpenID Connectのaccess_tokenを使おう
      • 認証とリソースアクセスを分離
      • Andouroidの場合だったら、パスワード設定しないでaccess_tokenだけでOTP認証する。その強度にしたがってメールのやりとりをするなどはどうか
  • OpenID Providerは何をやるべき?
    • 「認証強度の見える化
      • RPから見て、OPがどんな認証してくれるかわかる
      • ユーザーから見て、どんな認証してくれたのかわかる
    • RPが認証強度を要求
      • OpenID Connect仕様の"acr"パラメータをうまく使えばいい
  • RPがやるべきこと
    • 自分達のサービスに必要な認証強度を意識する
    • 適切なタイミング・強度で再認証を要求する
      • 銀行の例: ID/PWで残高見れる; 送金には乱数表が必要
  • 残る課題
    • 2要素認証を採用しないOPはオワコン?
      • 自サービスで課金しないとか
      • 認証よりもAPIを使ってもらいたいサービスではなかなか実装してくれない
    • 1ユーザーは1OPしか使わない風潮?
      • VPN経由で社内に行く場合など別PWが必要 → ID/PW+αでは組み合わせにくい
  • 追加認証に特化した認証プロバイダは面白いのではないか
    • どうやってもうけるかはまだわからないけど
    • RP側が既存OPとの組み合わせを使う → 柔軟な実装が可能
    • trustが重要
      • B向けに実績のあるサービスがC向けに出てきてくれるとうれしい
    • 物理デバイス、生体認証などの可能性
      • ID/PWの代替としては難しいが、オプションとしては使い途があるのでは?
  • まとめ
    • 普及のカギ: 「めんどくさい」
    • OpenID Connectは重要(OPの集約など)
    • 追加認証に特化した認証Pも面白い
  • 作ってみた!
  • 作ってみてわかったこと
    • メアドを識別子として使うとメアドの確認がめんどう
      • YConnect, Google, facebookでは認証済メアドを提供してくれる
      • フィッシング被害などのリスクがあってなかなか国内では提供しにくいよねー
    • Google Authenticatorを使う(Server側の処理)
      • ユーザー単位にSecret生成
      • 設定用のQRコード生成 → 中身を見てみると……
        • otpauth://totp/(メールアドレス)?secret=(base32_encoded_otp_secret)
      • ritouのブログを見よ
      • アプリをインストールし、QRコードを読み取ると、時計にしたがってコードが変わっていく
    • リモートログアウト
      • 不正利用対策、ログアウト忘れ
      • Facebook, Googleではリモートログアウトを実装
    • OpenID Connect Session Management
      • OPのログアウトをRPから検知するための仕様
      • AuthZ Responseにセッション識別子をつける
      • iframe + postMessageを送り続ける。ユーザー情報が変わったことを検出
    • 組み合わせてみる
      • 公共のPCでログイン → ログアウト忘れて帰宅
      • 自宅PCでログイン → リモートログアウト
      • RPはブラウザ起動時、悪い人が使おうとしたときにOPと交信 → ログアウトを検知
  • #idcon miniやるよー
    • 少人数、USTなし
    • アンカンファレンスもどき
    • 技術屋が気になることをじっくりと話せる場

追加認証プロバイダは面白そうですね。クレデンシャルで独自性も出せそうです

(20:25)

宣伝

  • JICS2013
  • OAuth翻訳プロジェクト
  • OpenID Foundation Japan会員企業募集中

(20:30) 休憩

パネルディスカッション「スマデバ時代ぼくらは幾つパスワードを使うのか 」Ustなしの予定

  • "SSL/PKIはなぜ危機に陥ったのか"
  • "二要素認証やバイオメトリクスは流行るのか"
  • "僕らは10年後いくつのパスワードを使い分けてるのか"
  • "スマデバで普通に使えるアクセス管理へ向けた課題を展望する"
  • モデレータ: ヤフー株式会社 セントラルサービスカンパニー 技術調査室 室長 楠 正憲 氏
  • 米国・OpenID Foundation 理事長 崎村 夏彦 氏
  • 独立行政法人 情報処理推進機構 神田 雅透 氏
  • セコム株式会社 IS研究所 松本 泰 氏
  • OpenID Foundation Japan 事務局長代行 高橋 伸和 氏
  • 諸注意
    • このパネルはustしてません
    • ふつうのしゃべってることはつぶやいてもOK
    • 「オフレコ」部分はブログに書いたりつぶやいたりしないでね
  • 楠さん: パスワードっていつからあったのか
    • 1961年IBMメインフレームでTSSが動いた時点でパスワードがあったはず
    • パスワードはもっと早くなくなると思ってたのに
    • 公開鍵暗号の出現により、なくなると信じていた
      • サーバー証明書としては普及したけど
      • 楕円暗号にもならずRSAの鍵長を長くしながら使い続けている
  • オープンデータのアイディア募集 IDEABOX
  • OpenIDの出現により、MS Passportが全部持っていく、ということにはならなかった
    • とはいえ、いまでもいつまでもたくさんのパスワードを覚えていないといけない
    • 10個以上パスワードを覚えられる人はいないだろうが、それでネット生活は心もとない
  • 去年のIIWではFederated IDに対して批判的な議論もあった
    • 心配: 「UX too hard」ID/PWだけでもこれだけ複雑なのにOTPとかみんな使えるのか
  • PKI基盤が2011年くらいからキワドイ状況。守り続けていけるのか
  • 神田さん: SSL/PKIはなぜ危機におちいったのか
  • PKI Day 2012」から資料を取ってください
  • ネットの信頼性ってどう担保されてるの
    • 技術/制度・運用/実装/ユーザリテラシ ← この4つのどこでも狙われるよ
  • ルートCAはPKIのTrust Anchor
    • 悪い人が何をしたいか: ルートCAに保証された中間CAになりたい
  • 公開鍵証明書が悪用されるのってどんな時?
    • 運用の問題
      • 登録局での検証ミス: 信頼の低い者を登録しちゃう(Comodo)
      • 認証局への不正アクセス (Diginator, TURKTRUST)
    • 技術の問題
      • 暗号強度が弱い
      • 証明書が偽物 (Flame, RapidSSL)
  • Diginotarのケース
    • CA機能を乗っ取られた
    • 6つのCAに不正侵入された → 500枚以上不正に証明書を発行されていた
    • ルートCAのずさんな運営管理/見過ごした監査体制
      • イラン在住の人がGmailにアクセスしたときに不正が発覚
      • 5週間以上対策を打たなかった
    • 不正*.google.com証明書のOCSPリクエストが急増していた → 監視でわかったはず
  • なぜ1か月も放置されたのか
    • 一般の人が使うときに証明書が正しいかどうか意識していない
    • OSの証明書チェックが正しい前提で自動で走っているから
    • Windowsだって設定すればOCSPのリアルタイム検証も可能なのに
  • (オフレコにつき割愛)
  • 楠: 20年も経ったら暗号なんて解けるよってわかっていたんじゃないの?
  • 高橋さん: 黎明期、cyber trust japan立ち上げ → verisignフェロー
    • PKIは技術+運用が一体になって初めて成立する
    • 認証局をビジネスとして立ち上げたときはここまでは想像していなかった
      • 昔のNetscape, MS IEはルート認証局は3つくらいしか入ってなかった。ハードな運用仕様を組んでやっていた
  • (オフレコにつき割愛)
  • 松本さん: idconは初めて。神田さんも。away感ある
    • 去年PKI攻撃とその対抗というパネルディスカッションをした
    • 「暗号アルゴリズム2010年問題」など
    • 電子政府: 適正な認証レベルをねらわないといけないが、どんどん高くなってしまう
  • ここ2〜3年、認証局の証明書が狙われている。昔からあったんだろうけど、顕著化している
    • trust anchorとして広く根づいているので、そこを取ればいろいろできるから
    • いま一番あぶないのはコード署名
  • ビジネスの話がわからないとわからない。証明局はもうかる商売じゃない。その中でweb for trust CAという「一見カッコイイ枠組」ができた。機能してるかというと……?
    • 競合やstakeholderが多数いる中でやっていくので難しい
  • (オフレコにつき割愛)
  • 楠: デバイスのレイヤーが安全じゃないとダメ。もうひとつはwebが頼られてきた中で起こった事件ではないか。この先federationとかなるとwebがますます重要になるのだが
  • 崎村さん: OAuth2ってsecurity propertyが全面的にSSLに頼っている。ここをちゃんとやってくれないと世界が崩壊する
    • アプリレベルで暗号・署名という防波堤もあるが、やってくれる人はほとんどいない
    • インフラとしてのPKIにはもっとがんばってもらいたい
  • 人の話はすごく難しい。海外の電子政府デンマークが注目されている
    • デンマーク: ソフトウエア証明書を使っていたがやめた ← ユーザーPCがマルウエアだらけで、そこで署名されたものが信用できない
  • 技術・運用・実装・人をバランスよくやるのは難しい
  • 楠さん: web trustが主犯じゃね?の話
    • MSは独禁法の話があって不当に影響を与えている部分をサードパーティーに出していく必要があった
    • 基準にしたがって広くしていくという圧力がかかっていた
  • イランの不正証明書がわかったのはGoogleが証明書を集めていたから。集中モデルだったから判明したことはアンビバレントである
    • ユーザーを信じて何でもできる時代 → スマートデバイスでは証明書・コードサイニングによりユーザーがしたいことを保証する時代
    • 集中と分散、経済的な要因が大きいと感じる
  • 神田さん: 矛盾ある状況でより安全な世界を作るには?
    • 日本で今何が起こっているか: 特定認証局が14ある
    • 認証局はもうからない → 移行の話がある → 機器をかえろ → ついて来れないCAがある
      • 「あそこがついてこれないから時期をずらす」
    • 安い証明書が出ても、メンテナンスがちゃんとできない。退場のしくみを考えないとtrustが続かない
  • 高橋さん: リテラシーが事業者やユーザーにあって、みんなでPKIを使いましょうという夢があった → ムリゲー → だったらID/PW使い続けましょう
    • 個人的にはID/PWはなくならないと思っている
    • 限界は: ぼくは1password使っているが100個以上入っている。もうムリ。
      • これを減らすためにはfederationしていかなきゃいけない
  • 楠さん: 最後にみなさんからひと言ずついただきたい。100〜200個のパスワードをどう集約するかというとIdP, OPをどう集約するかという話になる。またcredentialとしてパスワードの代替となるものは何か
  • 松本さん: 独占と分散という話ではエコシステムでtrustが形成されるのは重要。それが安全かというところに問題があった
    • いま同じことがNFC携帯にあると思う。felica, NFCは非接触のことだと思う人がいるが、もう一つの側面として鍵管理がある
    • 認証局がいくつも立つ。その中でtrustを組む。フレームワークになる
  • セキュアなストレージが必要。iPhoneiPadには元々チップが入っている。それを活用して切りくずすことができそう
  • 崎村さん: webではsecure storageをブラウザからJSで使えるようにしようという動きがある
    • パスワードは多分なくならない。証明書にしたところで使うにはパスワードが必要
    • ハンコって使いにくい。でも使うでしょう。法律で規定されたのが702年。大宝律令MD5同様なくなってもいいと思いつつ、いまだに使っている
  • 神田さん: パスワードマネージャを頼ってはいるが、アプリの作りによって何が起こっているかは実はわからない
  • 2048bitの証明書がいくつか破れている。素因数分解ができちゃった。乱数生成器の性能が悪かった。そういうことが起こっている
  • アプリがやってくれないかなという話と、それがちゃんと動いていることの認証制度がほしいなあ
  • 楠さん: 退出のルールというのは、退出させられて泣く人が出てくるということでもある
  • 高橋さん: 総合すると、デバイスIDは大事。platformer、IDを払い出している人達を見ていくと面白い。次にそこにrelyしている人達。
    • ここ2〜3年が楽しみ。特にOpenID Phoneが!

(21:30)

導入部楠先生の歴史のお話、毎度とても面白いです。そしてオフレコの部分の話題は本当に興味深く聞きました。

パスワードはなくならないですね…。一昔前はパスワードをコピペさせないのがセキュリティーだというときもあったと思いますが、今はパスワードをコピペできないと逆にセキュアなパスワードを使いにくいです(auto typeがありますが)。パスワードを入力させると、必ず「パスワードを忘れたときはこちら」も作らないといけないのが大変です…。

この後の懇親会にも参加させていただきました。抽選会では秋田の猫が1発目に来るとふんだのですが2発目でしたねー。惜しかった。

(記述が誤っている/発言意図と違うなどありましたらご指摘いただければ幸いです)