AWSアカウントのセキュリティを強化する 〜 MFAの利用

AWS

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

よく訓練されたアップル信者、都元です。アカウント認証というのはIDとパスワードによってなされるのが一般的です。パスワードは複数の文字種を使い、数字を含め、長いモノを設定する等、各種プラクティスはあちこちで議論されていますが、そもそものアカウントの数が多くなると、厳正なパスワード管理にもどこかにほころびが出てくる可能性 *1が出て来ます。

MFAによるセキュリティ向上

そういった状況で、パスワードだけに依らないセキュリティ向上の手段として、AWSではMFA(Multi-Factor Authentication - 二要素認証)に対応しています。

具体的にどういうことかというと、ログイン時には通常のIDとパスワード *2に加えて、そのログインのタイミングで手持ちのデバイス(ハードウェア)に表示されている数字 *3を入力しなければ、認証に成功しない、という認証方式です。デバイス上の数字は一定時間毎に更新されるため、事実上、そのハードウェアが手元になければログインできない、ということになります。

MFAデバイスの種類

AWSで利用出来るMFAには「ハードウェアMFA」と「バーチャルMFA」の2種類があります。前者は液晶のついたキーホルダーのような専用ハードウェア(Ezio Time-based 6-Digit Token for use with Amazon Web Services)のことです。

hardware-mfa

後者は、スマートフォン上のアプリケーションとして実装されたMFAです。各ハードウェア毎に実装が提供されていますので、お手持ちのハードウェアに合わせて適切な実装を利用します。

virtual-mfa

MFAの利用イメージ

MFAを利用するように設定すると、IDとパスワードによる認証の後に、下記のような画面が現れます。ここで、MFAでバイスに表示された数字を入力すると、ログインが完了します。

2013-07-10_1135-mfa-1

MFAの利用方法(ルートアカウント編)

さて、では実際にMFAの利用登録を行ってみたいと思います。残念ながら手元にハードウェアMFAが無いため、今回はバーチャルMFAでいきます。私はiPhoneを使っているので、Google Authenticatorをインストールしておきましょう。

MFAの準備ができたら、ルートアカウント(非IAMアカウント)でログインし、IAMのManagement Consoleを開きます。そのページのSecurity Statusというセクションに「Manage MFA Device」というボタンがあるのでクリックしましょう。

2013-07-10_1249-mfa-2

そして、今回はバーチャルMFAを使うので「A virtual MFA device」を選択。

2013-07-10_1250-mfa-3

下図は「この機能を有効にするには、まずアプリが要るよ」という警告ですね。インストール済みですので、そのままContinueします。

2013-07-10_1251-mfa-4

次に出てくるのはQRコードです。このQRコードを、Google Authenticatorで読み込みます。

2013-07-10_1252-mfa-5

アプリ右下の「+」ボタンをタップし、さらに「バーコードをスキャン」ボタンをタップします。

2013-07-10_1257-mfa-6

QRコードを読み取ると、Google Authenticatorにこのアカウントの情報が登録されます。もう認証コード(数字)を表示していますね。アカウントの名前は「root-account-mfa-device@(アカウント名)」といった形式になっています。私のiPhoneには、既に多くのアカウントが登録されていますので、複数の認証コードがリストアップされています。

2013-07-10_1257-mfa-7

左上の時計のようなマークでカウントダウンを行っており、時間が経過すると自動的に次の認証コードを表示していきます。ここで「2つの連続した認証コード」をAWS側に伝えることで、きちんとMFAとAWSアカウントが繋がった、という確認を行います。その為の入力欄が、QRコードの下にある2つのテキストフィールドです。2つの認証コードを入力すれば、登録完了です。

2013-07-10_1307-mfa-8

Security Statusのセクションにおいて、Root Account MFA が Enabled になっていることが確認できます。一度ログアウトし、ログインを試みてみてください。IDとパスワードの後に認証コードを求められますので、今iPhoneに表示されている番号を入力すればOKです。

ちなみに、MFAによる認証を廃止する場合は、「Manage MFA Device」ボタンより「Deactivate MFA device」を選択します。

MFAの利用方法(IAMユーザアカウント編)

さて、以上でルートアカウントのMFAによる保護ができました。これと同様の手順で、IAMアカウントについてもMFAによる保護が可能です。対象となるIAMユーザを選択し、右下の「Manage MFA Device」から、同じ手順で登録ができます。

2013-07-10_1313-mfa-10

まとめ

弊社では業務でお客様のAWSアカウントをお預かりし、様々なサービスを提供しています。AWSアカウントの数は、社内検証用のものも含めるとかなりの数にのぼり、それらのアカウントの認証情報は厳正に管理する必要があります。このような仕組みは、正規の利用者(自分自身ですね)にとっては少々の手間になることではありますが、積極利用でセキュリティ事故を防いで行く必要があります。

えーー、ここまで書いておきながら、今、たった今、ボスが過去に同じテーマの記事を既に書いていたのを発見しました。意外と凹みますね、これ。

…ではorz

脚注

  1. 保護対象のアカウント数と事故の可能性には相関関係がある、という確率の問題ですね。
  2. 第1の要素、つまりユーザーが知っているもの
  3. 第2の要素、つまりユーザーが持っているもの