Azure Central Azure逆引きリファレンス[PR]
iPhone/Androidの2段階認証アプリ「Authy」で複数デバイス対応(Microsoftアカウント編)[PR]
パスワード漏えい問題が頻発する現在ではログインの2段階認証は必須だ。人気アプリ「Authy」を使って、各種スマホ&PCブラウザーなど複数デバイスで2段階認証用のトークンを取得する方法を紹介する。
今やほとんどの人がAzureだけでなくLINEやGoogleなど多数のサービスを日常的に使用し、それらのサービスへのログインではパスワードを使用しているだろう。しかし、使用するサイトが無数にあるため、各サイトで別々のパスワードを登録するのは現実的には非常に困難である。結果的に、ほとんどの人が同じパスワードをいくつかのサイトで使い回してしまっているのではないだろうか。このような場合、どこか1つのサイトが悪意のある第三者によって侵入され、パスワードが盗まれてしまうと、他のサービスにも危険が及んでしまう。例えば、Facebookなど個人情報が詰まったサイトの内容を閲覧されて外部に公開されたり、Twitterアカウントなどが乗っ取られたままログインできなくなったりする可能性があるのだ。
このようなログインに関するセキュリティ問題を回避するために考え出されたのが、2段階認証だ(厳密には「Two-factor authentication: 2要素認証」という名称で、2要素以上もあり得るので「Multi-factor authentication: 多要素認証」と呼ばれることもある)。これは、1段階目のパスワード認証の他に、2段階目の別の認証(例えば、カードに記載された乱数表や、別デバイス上で生成されるワンタイムパスワードなど)を組み合わせて、2段階の検証(Two-step verification)を必須にした認証のことである(※2段階認証については「Google 2 段階認証プロセス」が参考になる)。その2段階目の認証方法として最もよく採用されているのが「別デバイスで生成されたワンタイムパスワードによる認証」で、前述のAzure/Googleなどでもこれが採用されている。
ワンタイムパスワード(=サービスによっては「認証用コード」や「セキュリティコード」とも呼ばれる)を取得する方法には一般的に、
- SMSによる通知
- 電話による通知
- 2段階認証アプリ
などがあり、最近では2段階認証アプリ(=サービスによっては「本人確認アプリ」とも呼ばれる)の利用が推奨されているケースが多い。ちなみに細かな話になるが、ワンタイムパスワード(OTP:One Time Password)の生成アルゴリズムには標準仕様(回数ベースのHOTPと時間ベースのTOTP)が存在し、これのおかげで各種サービスのワンタイムパスワード生成を1つの2段階認証アプリで管理できるようになっている(※一般的にはTOTPが採用されている)。
その2段階認証アプリとして、iPhone/Android/Windows Phone向けには主に以下のようなものがある。
- Authy
- IIJ SmartKey
- Google Authenticator
- Microsoft Authenticator
- Salesforce Authenticator
1~2は2段階認証のために作られたアプリで、3~5は自社のサービスへのログイン用に作られた(と考えられる)アプリではあるが他社のサービスも登録可能になっている。この中で一番多くの人に使われているのは3のGoogle Authenticatorであると想像されるが、これの使い方については「Azureアカウントを取得したら最初にやっておくべき初期設定」で説明した(4の使い方も説明している)。
「ではGoogle Authenticatorで全て事足りるのか」というと、そうではないケースもある。
例えば、「(1)何らかの都合でiPhone/Androidデバイスを2台以上使うケース(もしくはスマートフォンを買い換えたケース)」では、1台目のデバイスに2段階認証用のサービスアカウントをセットアップしておき、後から追加で2台目のデバイス向けにもセットアップしたとすると、それ以前のセットアップ(つまり1台目のデバイスで生成されるワンタイムパスワード)は無効になってしまう。つまりGoogle Authenticatorでは、基本的にデバイスを新規追加して2台で同時に使うことはできないということだ*1。この問題は、新しいiPhone/Android端末に買い換えた場合にも発生し、新しい端末にインストールしたGoogle Authenticatorに対して全てのサービスアカウントの再登録が必要になってしまう。これはかなり面倒くさい。
- *1 ちなみに、QRコードをスキャンすることで、2段階認証アプリにサービスアカウントをセットアップする方法が一般的だが、そのQRコードを複数台の全てのデバイスでスキャンすれば、その全デバイスで同じワンタイムパスワードを生成できるようになる。こうすることでも、2段階認証アプリの複数デバイス対応は可能である。ただし、デバイスの買い換えや追加が発生すると、全デバイスでスキャンし直す手間が発生するので、あまり現実的な手段とはいえないだろう。
また、筆者自身の仕事でよくあるのだが、「(2)会議中など手元にスマートフォンがない状況で、PCでサイトを閲覧中に再ログインが要求されてしまうケース」では、2段階認証のワンタイムパスワードがすぐに得られずに今すぐ必要な目的のページが開けなくて困ってしまうことがある。
こういった「(1)複数台のスマートフォン所有」や「(2)スマートフォンの非携帯時」の問題を回避するには、1や2の専門アプリの複数デバイス対応機能が役立つ。そこで本稿は、比較的人気が高いAuthyを使って、複数デバイスで2段階認証用のワンタイムパスワードを取得できるようにする方法を説明する(日本ではIIJ SmartKeyも人気のようであるが、iPadで使えなかったので本稿での紹介は断念した)。
Authyの使い方と複数デバイス対応
それでは「習うより慣れろ」で、実際に使ってみよう。
Authyのインストール
まずは無料アプリのAuthyをiPhone/Android/iPadなどのスマートフォンにインストールする(※残念ながらWindows Phone向けにはアプリが提供されていない)。
- AuthyのiPhone/iPadアプリをインストール(App Store)
- AuthyのAndroidアプリをインストール(Google Play)
- AuthyのChrome拡張機能を追加(Chromeウェブストア)
3つ目に「Chrome拡張機能」*2とあるが、Authyはスマートフォン/タブレットだけでなく、WebブラウザーのChromeを使うことでWindows PCやMacなどでも使用できるのが特長だ*3。このようにAuthyは、クロスプラットフォーム&マルチデバイス対応を実現している。
- *2 現時点で、AuthyのChrome拡張機能は、内部でAuthyのChromeアプリを使う仕様となっている。ただし、「Chromeアプリ」という仕組み自体が2018年には廃止される予定なので、注意が必要だ。今後、Chrome向けのAuthyが、これにどのように対応していくのかは不明である(現時点で筆者は調べ切れていない)。
- *3 ただし、1段階目のパスワードと、2段階目のワンタイムパスワードを同じChromeで管理することは、それらが別々のデバイスに分かれている場合に比べてセキュリティリスクがより高まることは理解しておいた方がよいだろう。
各種デバイスへのアプリ/拡張機能のインストール方法はいずれも難しくないので説明を割愛する。
Authyアプリの初期設定と起動
インストールが完了したら、アプリを起動してみよう。図1の手順で電話番号とメールアドレスを入力して、それらが本当に正しいかが確認されたら、アプリが起動する(※この例はiPhoneだが、Androidでも同様の手順である)。
Authyアプリへの各種サービスアカウントの登録
次に、2段階認証が必要なサービスのアカウントを登録する。本稿では「Azureを利用する」という想定でMicrosoftアカウントを登録する。Microsoftアカウントに対する2段階認証の設定方法や一般的な認証アプリの使い方は、「Azureアカウントを取得したら最初にやっておくべき初期設定」の「二段階認証」と「Google Authenticatorなどの認証アプリを使う場合」の節で説明しているので併せて参照してほしい。
サービスアカウントの登録方法は、Google Authenticatorなど一般的な2段階認証アプリとほとんど変わらない(図2)。ただし初回登録時には、図2のようにアカウントデータを暗号化してバックアップするためのパスワードが要求されるので注意してほしい。
特に難しいところはないだろう。
別のデバイスでのAuthyの初期設定
2台目以降のAndroid/iPhoneデバイスでAuthyアプリをインストールして使い始める場合も、先ほどの説明と同様に初期設定したうえで起動できるが、既存デバイスを使って初期設定を簡略化することもできる。例えば図3はiPadにインストールしたAuthyアプリで先ほどと同じ電話番号を入力した後の画面だ。このように[Phone call]/[SMS]ボタンに加えて[Use existing device]ボタンが新たに表示されるようになるので、これをタップすればよい。
すると、既存デバイス側(本稿の例ではiPhone)のAuthyアプリで、新規デバイス(本稿の例ではiPad)の追加を許可(Accept)するか拒否(Deny)するかを問う表示になるので、図4の手順で許可すればよい。
デバイスが追加されると、新デバイス側(本稿の例だとiPad)では図5の流れでAuthyアプリを起動できる。あとは既存デバイスと同じように使える。
ChromeでのAuthyアプリの利用方法
最後に、Chrome拡張機能として提供されているAuthyを使う方法を簡単に紹介する。といっても、起動手順や使い方などAndroid/iPhone向けアプリとほとんど違いはない(図6)。Chromeの場合、[Master password]の設定が必要な点だけが異なる。
■
個人利用であれば、Authyは本稿の内容だけで十分使いこなせるだろう。1点だけ分かりにくいと感じたのが、登録済みのサービスアカウントの削除方法だが、これは[Settings]ダイアログの中の[External Accounts](スマートフォン上では[Accounts])の[Delete](ゴミ箱)ボタン(=スマートフォンでは項目行を右から左へスワイプすると表示される)を使えば行える。
Authyの業務利用も想定されているらしく、日本では「Twilio AUTHY | Twilio for KDDI Web Communications」というサイトでサービス提供が「準備中」となっている。
また、「ワンタイムパスワードの生成」機能(AuthyではSoftTokenと呼ばれている)の他にも、OneTouchや有償のOneCodeなどの機能も提供されている(各機能の説明は上記の日本語サイトを参照してほしい)。
プログラマー向けには、TOTP(時間ベースのワンタイムパスワード) API(OneCode&SoftToken用)やOneTouch APIなどが提供されているので、気になる方は公式ドキュメントやAPIリファレンス(Twilio内のAuthyページ)(いずれも英語)を参照するとよい。
※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
5. 設計時に使えるAzure/AWSサービス・アイコン集とダウンロード方法[PR]
クラウド上のシステムやサービスを設計する際には、視覚的に分かりやすいアイコンを使おう。アイコンセットのダウンロード方法を示し、各アイコンを用いてAzure/AWSサービスの対応一覧表をまとめる。
6. Azureアカウントを取得したら最初にやっておくべき初期設定[PR]
Azureを使い始めたら、特に重要なセキュリティ設定を初めに済ませよう! Azureアカウント保護(二段階認証)/アクセス制御(IAM)/セキュリティセンターの設定方法を説明。さらに各種アラートの作成方法や、入門者にお勧めのコンテンツも紹介する。
7. 【現在、表示中】≫ iPhone/Androidの2段階認証アプリ「Authy」で複数デバイス対応(Microsoftアカウント編)[PR]
パスワード漏えい問題が頻発する現在ではログインの2段階認証は必須だ。人気アプリ「Authy」を使って、各種スマホ&PCブラウザーなど複数デバイスで2段階認証用のトークンを取得する方法を紹介する。
8. Azure VMでLinuxインスタンスを起動したら最初にやっておくべき初期設定[PR]
Azure仮想マシンでLinuxインスタンスを立ち上げたら、SSH接続のための設定や、スワップファイルの有効化、タイムゾーンの設定、Azure CLIのインストールは必ず行いたい。その設定方法を紹介する。
9. 分かりにくいAzure BLOBの料金を事前にある程度推測する方法[PR]
新規作成時にVMサイズや価格レベルを選択できるサービスに比べて、従量課金型のBLOBストレージは実際に使ってみるまでいくらになるのか料金が分からない。実際の料金と照らし合わせながら、使い始める前にその推測値を計算する方法を紹介する。