こんにちは、Mashです。
本記事は私自身がAWSをお勉強で触ってみた経験を共有するシリーズ Mash式AWSチュートリアル です。
前回記事で無事にAWSアカウントを作成できましたので、「さっそく実機検証だー!」と意気込んでいるみなさん!
意欲はすばらしいのですが、ちょっとまった!です。
AWSではアカウント作成後に必ず実施しておくべき初期設定がいくつかありまして、今回はそのなかでも ルートユーザの保護 というセキュリティのお話をご紹介します。
「アカウント情報を乗っ取られて大事故に!」なんてことになる前に、必ず目を通してください。
それではいきましょう!
ルートユーザは原則利用しない!
前回記事でAWSアカウントを作成しましたが、このとき自動的にAWS上で利用できるユーザが作成されています。
これをルートユーザと呼びます。
このルートユーザですが、最強の権限をもったユーザアカウントとなります。文字通り、なんでもできちゃいます。
AWSのすべてのサービスを操作できますし、契約情報などもすべて変更できてしまいます。
「なんでもできるなんてめっちゃ便利!」とお思いのあなた。
それはNGです。
セキュリティの世界では、必要な権限を必要な時に適切に与えることが推奨されます。
もし仮にこの最強のアカウントを盗まれでもしたら、とんでもないですよね。
デフォルト設定ですとセキュリティがちょいと甘いため、ここからはルートユーザアカウント保護のためのおすすめ設定をご紹介していきます。
企業内利用だとAWSサービス内の操作ログを取得したり等のより高度なセキュリティ設定を実装すべきと考えますが、今回は個人検証用ということで無料でできる範囲で、かつ簡単で効果的な(コスパの良い)セキュリティ対策をご紹介しています。
ルートユーザ保護のためにやるべきこと3選
ルートアカウントが乗っ取られると非常に危険なことがわかったかと思いますので、実際に初期設定として実施すべきことを3つ取り上げます。
ルートユーザのMFAを有効化
ルートアカウントを保護するのにとても有効な手段が MFA(Multi-Factor-Authentication) です。
MFAを日本語にすると 多要素認証 となります。
MFAを実装すると、仮にIDとパスワードを盗まれたとしてももうひとつの認証方法を突破しない限りはログインできないため、アカウント保護に非常に有効な手段です。
「もうひとつの認証情報」は、例えば指紋認証だったりカードタイプのパスワードだったり色々ありますが、今回はGoogle Authenticatorというスマホアプリを利用したいと思います。
ID、パスワード、スマホアプリの3つの情報が必要なMFAということですね。
スマホへGoogle Authenticatorをインストール
まずは事前準備としてスマホにアプリをインストールしておきます。
アプリストアで「Google Authenticator」や「Google認証システム」などと検索し、インストールします。

MFA有効化設定
つづいてPCのWebブラウザからAWSマネジメントコンソールにログインし、サービス検索より IAM へアクセスします。

IAMのダッシュボードには、まさに「MFAを有効化しろ」との指示が記載されています。
URLリンクになっている [MFAを有効] をクリックします。

移動したページで [MFAの有効化] をクリックします。

今回利用するMFAデバイスをの種類を選択します。
Google Authenticatorは 仮想MFAデバイス ですので、そのまま [続行] をクリックします。

表示された画面で QRコードを表示 をクリックすると、このような画面になります。

仮想デバイス登録
操作をスマホに切り替えまして、Google Authenticatorを起動します。
操作方法をお伝えするためにスマホアプリのスクリーンショットを撮ろうとしたのですが、なんとアプリの制限で取得できませんでした。
セキュアですね!笑
文字だけのご案内となりますがご了承ください。
画面右下の [+] ボタンをタップすると、
- QAコードをスキャン
- セットアップキーを入力
- [✕]
という選択肢が表示されますので、[QAコードをスキャン] をタップします。
カメラが起動するのでさきほど表示させたQAコードを読み取りましょう。
すると、「Amazon Web Service (root-account-mfa-device@xxxxx)」という行が作成されます。
ここで表示されている6ケタの数字がいわゆるワンタイムパスワード(一定時間の経過で変わるパスワード)になります。
PC画面に操作を戻しまして、
- いま表示されている6ケタのワンタイムパスワードを MFAコード1 に入力
- 少し待って、次に表示された6ケタのワンタイムパスワードを MFAコード1 に入力
します。

値が正しく入力できていればこのようにGoogle AuthenticatorアプリがMFA認証デバイスとして認識されます。

AWSマネジメントコンソールのIAM画面に戻ります。
仮想デバイスがひとつ追加されていることが確認できます。

MFA動作確認
それではAWSマネジメントコンソールから一度ログアウトして、再度ログインしてみます。
IDとパスワードを入力すると、このようにMFAコードを問われます。
さきほど追加したGoogle Authenticatorアプリに表示されている6ケタの数字を入力し、[送信] ボタンをクリックします。

はい、ログインできましたー!

MFA設定はこれでOKです。
IAMユーザを作成
前項の設定でルートユーザが盗まれるリスクは格段に低くなりました。
が、そもそもAWSでは「このルートユーザは通常の運用・開発業務では利用すべきではない」とされています。
重要
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html
強くお勧めしているのは、日常的なタスクには、それが管理者タスクであっても、root ユーザーを使用しないことです。代わりに、最初の IAM ユーザーを作成するためにのみ、ルートユーザーを使用するというベストプラクティスに従います。
それじゃあどうするかというと、引用文にも記載されている通り IAMユーザを作成 して、そのユーザを利用します。
以下、IAMユーザの作成手順です。
※IAMとは、AWS内のユーザ認証や各サービスへのアクセス権限を司るサービスです。IAMについてはまた別途取り扱います
AWSマネジメントコンソールへアクセス
AWSマネジメントコンソールから、IAM へアクセスします。
左側メニュー [ユーザー] を選択するとIAMユーザ一覧画面が表示されます。
IAMユーザを作成したことがない環境のはずですので、このようにIAMユーザは存在しません。
それでは [ユーザーを追加] ボタンをクリックします。

基本情報を定義
ユーザーを追加 画面に遷移します。
それぞれ項目を定義して、[次のステップ] をクリックします。
項目名 | 説明 |
---|---|
ユーザー名 | これはそのまま、作成するユーザー名。任意の名前でOK |
アクセスの種類 | AWSでは、いま操作をしているAWSマネジメントコンソールとは別にCLI(コマンド)や 自分で作成したプログラムから操作することもできます。 今回はAWSマネジメントコンソールだけチェックを入れて進めます。 |
コンソールのパスワード | AWSコンソールにログインする際のパスワード生成方法を指定します。 自動でも手動でもどちらでも構いません。お好みで。 |
パスワードのリセットが必要 | 作成したIAMユーザの初回利用時に、パスワードを再設定させるかどうかを決めます。 作成するIAMユーザを他人へ引き渡す場合は、リセットしたほうがよいです。 →自分がパスワードを知っている状態はよくない |

IAMポリシーを定義
アクセス許可の設定方法を選択します。
いろいろありますが、ここでは 既存のポリシーを直接アタッチ を選択してください。
そして、画面でみえている AdministratorAccess ポリシーにチェックを入れて [次のステップ] ボタンをクリックします。

AdministratorAccessはすべてのAWSリソースにアクセスできる管理者権限です。
本来は「EC2だけ」とか「S3とLambdaだけ」等、利用サービスを限定して権限付与することが望ましいですが、今回は検証目的であること、そしてひとつめのIAMユーザであることからフル権限を与えています。
タグの追加画面に遷移します。適当につけていただいて構いません。

最終チェック
最後に確認画面が表示されますので、内容に問題がなければ [ユーザーの作成] ボタンをクリックします。

IAMユーザが作成できました!

動作確認
それでは作成したIAMユーザの動作確認をしてみましょう。
まずはじめにAWSマネジメントコンソールのIAMから、[ダッシュボード] へアクセスします。
すると、画面上部このようなURLが表示されていると思いますので、コピった上で一度ログアウトします。

ログアウトしたら、さきほどコピったURLへアクセスします。
するとこのように、ルートユーザではなくIAMユーザーとしてログインする画面になります。
さきほど作成したIAMユーザー名、パスワードを入力して [サインイン] ボタンをクリックします、

ユーザ名、パスワードがあっていればログインできます!
画面右上の表記にてログインしているユーザ名が確認できますので、意図したユーザかどうか確認してください。

以上の手順でIAMユーザが作成できましたので、ルートユーザを普段遣いする必要がなくなりました。
また、必要に応じてこのIAMユーザもMFAを有効化したほうがよいですね。
パスワードポリシーを強化
最後3つめ。
最近色々なWebサイトでパスワード設定のルールが厳しくなっていませんか?
「英数字、大文字小文字、記号、○○文字以上」みたいな。
パスワードが複雑になるほどハックされ難くなるので、そのためなんですね。
AWSでもパスワードルールを強化することが可能ですのでやっておきましょう。
AWSマネジメントコンソールへアクセス
再度AWSマネジメントコンソールのIAMへアクセスし、左側メニュー [アカウント設定] を選択します。
画面遷移した先で、[パスワードポリシーを設定する] をクリックします。

下記のように、いろんなルールが定義できます。ここはもうみなさんご自身で設定しちゃってください。
セキュリティと利便性はトレードオフ。。。


ご紹介が前後してしまいましたが、もしパスワードポリシーを定義するのであれば、IAMユーザ作成前のほうがよいですね。
まとめ
今回はルートユーザアカウントの重要性と、すぐにできるセキュリティ対策についてご紹介しました。
はやくAWSを触りたい気持ちはあるかと思いますが、最低限MFA有効化だけは絶対設定してくださいね!
次回はコスト管理系の初期設定についてご紹介します。
今回は以上です。
それじゃあまたね。