どうも、吉田真吾(@yoshidashingo)です。
AWSアカウントが発行されると、ひもづくAmazon.comのアカウントも作成されます。
AWSのルートアカウントでメールアドレスやパスワード、クレジットカード情報などを変更するとAmazon.comにも反映され、逆にAmazon.com側で決済オプションなどを変更した場合、AWS側にも反映されます。(完全に両側から同一の操作ができるわけではなく微妙に優先される条件などがある)
以下のようにAWS側でクレジットカード情報をすべて削除しようとした場合に「削除したいならAmazon.com側で操作してください」と言われることからも、決済システムが共通っぽいことがうかがえます。
ということで、もし「AWSアカウントないしAmazon.comアカウントのメールアドレス/パスワード」が漏洩した場合、AWSのルートアカウントにMFAを設定していることで、AWSリソースを不正利用されることは防げるけど、Amazon.com側からメールアドレス/パスワード/決済情報のあたりが変更されるのは困りますね。
で、あまり悲観的な憶測をされると困るので、とりいそぎメールアドレス/パスワードが流出した状態で何ができるか確かめてみたところ、AWS側に対する影響は以下のような感じでした。
以下は発生しうる
- 決済方法のクレジットカードが削除されてしまうことで次回決済時に決済できずサービスが停止する可能性
以下は起きない
- カード情報の流出
- Amazon.com側において、カード番号自体は一度設定してしまえば、ログインしても見えないようになっているため、カード情報の流出はない
- メールアドレス/パスワードの書き換え
- Amazon.com側からメールアドレス/パスワードなどが変更された場合、「Revision to Your Amazon.com Account」というメールが、(メールアドレス変更の場合)変更前/後両方のメールアドレスに送信されるためいたずらにすぐ気づくことができ、メールに指定された「Contat Us」にクレームできる
- AWSのMFAの解除
- AWS側のMFAの解除リクエストしようとしても、AWS側で設定してある電話番号はAmazon.com側と連携していないので、必ずAWSアカウントに設定済みの連絡先に電話連絡がくるため防げる(※Amazon.comにも携帯番号を設定する欄があるが、AWS側とは連動していない模様)
ということで、実際はいたずら程度しかできなさそうですが、それで問題がないかっていうとそんな話でもないので、というかAWSは良くてもAmazon.comでお買い物とかされちゃったらイヤなので(もはやAWS関係ない)、今回はAWSアカウントにひもづくAmazon.comアカウントにも2要素認証をかけようという話です。
1. まずAWSのルートユーザーにMFAデバイスを設定する
これはもはや散々既出ですが、まずAWSのルートユーザーにはこんな感じでMFA(ハードウェアか仮想デバイスとしてAuthenticator app)を設定しますね。Credentialがあれば削除しましょう。
現状、AWSのルートアカウントに対してはSMS MFAはかけられない(IAMユーザーのみ)のですが、あれとても楽なのでルートアカウントにも設定できるようにして欲しいです。
メールアドレスとパスワードでルートユーザーのログイン
MFAデバイスに表示されるトークンを入力する
コンソールにログインできる
2. Amazon.comのユーザーにMFA(SMS)を設定する
次にこちらが本題のAmazon.com側です。まず(AWSのルートユーザーにあたる)メールアドレスとパスワードでAmazon.comにログインします。まあ、見慣れた普通のAmazon.comです。
2-1. 「Your Account」をクリックする
2-2. 「Change Account Settings」をクリックする
2-3. 「Advanced Security Settings」をクリックする
2-4. 「Get Started」をクリックする
2-5. Authenticator は Text message (SMS) と Authenticator App が選べるが今回は「Text message (SMS) 」をクリックし、SMSとして利用する電話番号(国番号:日本の場合は+81)を入力し、「Send code」をクリック
2-6. SMSを受信するので、入力して「Verify code and continue」をクリックする
2-7. バックアップ設定に遷移するので、これも Text message (SMS) と Authenticator App が選べるが今回は「Text message (SMS) 」をクリックして2本目の電話番号(国番号:日本の場合は+81)を入力し、「Send code」をクリック
2-6と同様に2本目の携帯で受信するコードを入力して続行する。
2-8. 最後にいくつかのデバイスだと入力方法が異なる旨の説明などが表示されるので「Got it. Turn on Two-Step Verification」をクリックしたら設定完了
これで、Amazon.comにログインするときに「Two-Step Verification」画面が表示されるようになるので、いたずらも怖くない。
3. 最後にAWS側で確認
では最後にAWSのルートアカウントでログインしてみましょう。
3-1. ルートログイン画面でメールアドレス/パスワードを入力する
3-2. Amazon.comの「Two-Step Verification」画面が表示されるので、SMS受信した番号を入力する
3-3. AWSの「Amazon Web Services Sign In With Authentication Device」画面が表示されるので、Authenticator(Google AuthenticatorやAuthy)のコードを入力します。
ログインできました。
その他
- 上記のようにAmazon.comにMFAを設定しても、IAMユーザーについては特にAmazon.comの「Two-Step Verification」画面が表示されるようにはならないので、特に通常利用(IAMユーザー)時に手数は増えません。
- 利便性を考慮してAmazon.com側のMFAには今回メイン/バックアップどちらもSMSを設定しました。いずれにもGoogle AuthenticatorやAuthyなどを設定可能ですが、そちらは未検証なので、何かあっても自己責任でおねがいしますね。
まとめ
- ルートアカウントとPayment Optionの防衛にAmazon.com側にも2要素認証をかけておいたほうが安全。