Software Design (ソフトウェアデザイン) 2020年11月号 [雑誌]
- 発売日: 2020/10/17
- メディア: Kindle版
認証・認可に関する仕事に携わることになったので入門がてらに読んでみました。
特集
今さら聞けない認証・認可
認証と認可とは
- 「認証」はIdentifierとクレデンシャルを利用し、「本当に本人か?」と確認する。「認可」はそのユーザーにどういった権限を与えるか。
- 個人を表す要素(デジタルID)
- ID(Identifier)・・・ユーザIDなどの一意の値
- 属性(Attribute)・・・名前や性別等のユーザー別の情報
- 認証属性(クレデンシャル)・・・属性の中でもパスワード等の認証に使う物
- 例えばAWSやAzureのRBACなどは認可をロールで持ち、管理するもの。
- 認証方式は段階がある
- ユーザーの記憶によるもの(Something you know)・・・パスワード等
- ユーザーの所持しているもの(Something you have)・・・USBトークンやワンタイムパスワードなど
- ユーザーの身体的なもの(Something you are)・・・指紋や顔認証
- konw>have>areと強度は強くなる。二要素認証は複数の要素(knowとareなど)を組み合わせる。パスワードと秘密の質問などは両方knowなので「二要素」ではなく「二段階」
認証認可のフロー
- ソーシャルログイン(馴染みの機能なので割愛)
- FIDOはちょっとよくわからなかった
- OAuth2.0は認可の仕組み。例えばTwitterログインはTwitterのログイン画面が出てくるので認証はTwitterが行い、認証したトークンを使ってAPIを利用する。
- OpenIDConnect1.0はOAuth2.0をベースに、認証の仕組みを追加したもの。OAuth2.0で定義されていなかったIDトークンが定義化された。OpenIDプロバイダについてはよくわからなかった
- ActiveDirectoryなどのSAML、ケルベロス、AzureADなどのIdp Initiatedは馴染みがあった。
- ログインしたら色々なSaaSサービスのログイン画面が表示されるIdPポータルは一度使ってみたいなと思う。
- SAMLプロトコルはXML、OpenIDConnectはSON
ID管理技術
- SSOしたいWebサービスにエージェントを埋め込む方式や、クライアントPCにエージェントをインストールする代理認証方式は理解できたが、リバースプロキシ方式はリバースプロキシそのものが理解できていないのでよくわからなかった
安全な認証認可への取り組み
- NIST SP800-63では認証認可のプロトコルに「どのレベルで本人確認したか」「どういった手法で本人確認したか」が定義できるらしい。ドコモ口座の例もあるので本人確認レベルが定義できる必要性は高まってきそう。
- IAL1:検証に関する要件なし
- IAL2:対面もしくは非対面で検証
- IAL3:対面で検証
- その他、FIDOやFAPI、保証レベル選定など少し難しい話題が続いたので軽く読み飛ばし
- 自分の財布から免許証のカードを出して提示のように、必要な時に必要なだけ証明書を提示する「自己主権型アイデンティティ」は面白そうな考え方だなと思った。
Flutterモバイルアプリ開発
モバイル開発は完全に素人なので軽く読む。アプリを起動したままコードの変更ができる「ホットリロード」は便利そうだけど、ネイティブのUIコンポーネントが使えないのはデメリットとして少し大きそうな印象。
AndroidとiOSでデザインが揃えられるのはメリットが大きそうですが、他アプリやOSそのものとデザインコンセプトの差異がありそう。 そのあたりは大丈夫なのかなあ?
小特集
ソフトウェアの高速化
こちらも仕事で少し興味がある分野なので読み込んでみましたFPGAなどの低レイヤに関する話題が多かったように思いますが、調査⇒分析⇒検証⇒改善の開発フローはついつい流しがちになる基礎的な所なので意識していきたいと思いました。
独自ドメインのDNS選択等
マネージドDNS(AWSのRoute53など)について軽く触れた記事でしたが、ほぼ初心者の僕にはとくても勉強になりました。
なるほど、ドメインだけとってAWSのレジストラに登録すればいいのか…
ネットワークの基礎知識(2)
ネットワーク層についてのあれこれ。ICMPとかARPとか。馴染みの単語があってほっとしました。
パズルで鍛えるアルゴリズム力
オセロを題材にしたゲームアルゴリズムの解説。興味はあったけど力尽きた・・・
MySQLアーキテクチャの探求
読まずに飛ばした
Prometheusシステム監視入門
ほぼ読まずにスルー。AWSのCloudWatchやはてなさんのMackerelとの違いが気になる所。システム監視もゆくゆくは学んでいきたいので、その時がきたら思い出したい。
Ansible入門
こちらもほぼ読まずにスルー
VisualSudioCode入門
AzureのVisualSudioCodespacesが廃止されてGithub Codespaces一本になったのは知りませんでした。オンラインIDEは興味があるのでGithub Codespacesは少し試してみたいなー。
Vimの細道
Language Serverがインストールできるらしい。今のところVimでコーディングする予定がないけど、「こういうものもある」というのは覚えておきたい。