シンジです。クラウドサービスに必要な物は、インターネット・アカウント名・パスワードですが、アカウント名とパスワードが漏れたら確実に死ぬと考えて良いです。AWSも例外ではありませんが、AWSのサービスをうまく活用することで回避出来る部分もあります。今回はその設定方法と、設定することでのデメリットを書きます。
その1 多要素認証を設定せよ
MFAとも言います。2要素認証とも言います。これには様々な方法があるのですが、オススメはiPod や iPhoneなどのスマホを使った方法です。認証用の専用アプリをダウンロードする必要があるのですが、シンジのオススメは2つ。
二要素認証(二段階認証)用無料アプリ「IIJ SmartKey」
http://www.iij.ad.jp/smartkey/
Google Authenticatorを App Store で
https://itunes.apple.com/jp/app/google-authenticator/id388497605?mt=8
この2つです。とりあえずインストール、といきたいところですが、MFAデバイスは複数持つことができません。個人レベルなら良いものの、企業の場合は管理者が管理すべき物になります。cloudpackの場合、MFAデバイスはiPod Touchを用意していて、これを金庫に閉まっています(他にも技術的な小細工はしていますが複雑なので割愛)。
ちなみに社内インフラアカウントの単一の話しではありません。cloudpackが所有する、全アカウントに対してMFAを設定しています。これはAWS MSP コンピテンシーと呼ばれる認定要件の中で、「全てのAWSアカウントにMFAを設定してあること」と定義されているため、必須です。
では多要素認証を設定してみよう
AWSアカウントを新規で適当に作ってみました。画面を見ながら進めて下さい。
AWSマネジメントコンソールにログインしたら、「セキュリティ&アイデンティティ」の「Identiy & Access Management」をクリックして下さい。ちなみにこれを略してIAM(アイアム)と読みます。
「ルートアカウントのMFAを有効化」から、「MFAの管理」をクリックします。
「仮想MFAデバイス」を選択した状態で、次のステップへ移りましょう。
なんか聞かれますが、お前のスマホに対応したアプリ入れてんのか?って話しなので華麗にスルーして次のステップへ移りましょう。
一番重要な画面が出ましたよ!このQRコード、スクリーンショットを撮って保存している方もいらっしゃるようです。考えましょう。
- この画面をスクリーンショットして保存しておくと、スマホなどを紛失したり
したときに復元できる利便性があります - この画面が漏れたときに、その人が多要素認証を突破する可能性があります
この辺りは「もとから複数デバイスでクラウド同期するアプリ」もあったりして賛否両論あるので、お好きにして下さい。
スマホなどにインストールしたアプリを起動して、このバーコードをスキャンして下さい。
こんなかんじ。
スキャン出来ると数字がずらずらっと出てくるので、その数字を「認証コード1」に入力します。数字は時間が経つと別の数字に変わるので、変わったところでその数字を「認証コード2」に入力して、「仮想MFAの有効化」をクリックです。
完了だぜ!!
これで”rootアカウント”でアクセスする際のセキュリティが高まりました
さて、肝心なのはこの後です。そもそもrootアカウントでアクセスしないようにしましょう。
その2 IAMユーザーの設定をしてみよう
「個々のIAMユーザーの作成」から「ユーザーの管理」をクリックして下さい。
「新規ユーザーの作成」をクリックしてください。
複数人一気に作ることが出来ますが、これは、対象のIAMアカウントにどんな権限を持たせるか個別に決められる為です。とりあえず自分が使う用のアカウントを作ることを想定しています。名前は適当に付けて下さい。
ユーザーの作成が完了しましたが、右下の「認証情報をダウンロード」を押しましょう。
ダウンロードしたファイルを開くと分かりますが、英数字の羅列が書かれていると思います。それがユーザー名とパスワードにあたる部分なので、この情報は大変重要なものとなります。使う使わない別として、きちんと保管しましょう。
その3 作ったユーザーに権限を与えよう
ポリシーの割り当てとか、ポリシーの適用ともいいます。
先程作成したアカウント名をクリックします。
「アクセス許可」から「ポリシーのアタッチ」をクリックします。
今回は、管理者がIAMユーザーだという想定なので、AdministratorAccessを与えます。ポリシーをアタッチしてみましょう。
きちんとポリシーがアタッチされたことが確認出来ますね。
その4 作ったユーザーにパスワードを与えよう
「認証情報」から「パスワードの管理」をクリックします。現状ではパスワードが設定されていないことも確認出来ますね。
パスワードは、ランダムな物が自動的に割り当てられるか、自分で好きなパスワードを設定かで選べます。
今度はパスワードが設定されましたね。ついでにMFAもやっちゃいましょう。手順は上記と同様なので割愛します。
その5 rootはサインアウト、封印して、IAMユーザーでログインしてみよう
左上の「ダッシュボード」をクリックすると、「IAMユーザーのサインインリンク」を確認出来ます。このURLこそが、あなたのAWSマネジメントコンソールにログイン出来る固有のURLなのです。モザイクの部分には数字の羅列が入りますが、右側の「カスタマイズ」をクリックすると、好きな文字列に変更する事も出来ます。元に戻すことも出来ます。
このURLを記録したら、rootからはサインアウトして、対象のURLを開き、先程作成したIAMユーザーでログイン出来れば完了です!
Admin権限を持ったIAMユーザーなら最強だ!と思いきや、出来ない事がある
実は、あれだけ忌み嫌ったrootアカウントでしか出来ない事があります。
- 侵入テスト申請(脆弱性診断関係)
- EC2からのメール送信の制限解除(逆引き設定を含む)
- AWSアカウントの設定変更(まぁそりゃそうか)
- APIを使って出来ない事は全部できない
- あとなんかあったっけ
ということで、rootアカウントが葬られることは無いのです。この辺りはAWSさん宜しくお願いしますとしか言えないのですが、宜しくお願いしますwww
もっと深掘りすると、ロールやAPIキーなど様々な便利機能がある
使えば使うほど素晴らしいセキュリティ対策機能がふんだんに盛り込まれています。上記のものは「最低限、絶対にやるべき内容」として、他の機能についてもいろいろと使ってみて下さい。
cloudpackでは、自動的にIAMユーザーを作ったり制限したりしています
Active Directoryとシングルサインオン、フェデレーションの技術などなどを使って、自動的に、利用者が意識すること無く、安全にAWS環境へログインできるようになっています。世の中のAWS利用者が全員このシステムでログインしようというのは無理な話なので、最低限「IAMユーザー」「MFA」「rootは使わない」これを徹底して、正しく安全にAWSを使いましょう〜