はじめる前に
- 必須AWS アカウントを持っていること(最初に作った「ルートユーザー」でサインインできること)
- 必須スマートフォンに認証アプリを入れられること(例:Google Authenticator、Microsoft Authenticator など。無料)
- あると良い「ID とパスワード」「二段階認証(ワンタイムコード)」を、他のサービスで使ったことがある
※ このハンズオンは すべてコンソールだけで完結します。IAM は地域(リージョン)に依存しないグローバルなサービスなので、リージョンの指定は不要です。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
AWS アカウントを作ると、最初にルートユーザーという管理者でサインインできます。これは何でもできてしまう、いちばん強い権限を持つ存在です。便利ですが、その分とても危険でもあります。もしルートのパスワードが漏れたら、アカウントごと乗っ取られてしまいます。
そこで AWS では、ルートユーザーは普段使わずに大切にしまっておき、日々の作業は「IAM ユーザー」で行うことが強くすすめられています。IAM ユーザーは、必要な権限だけを持たせた作業用の身分証のようなものです。さらに、ログインを二段階認証(MFA)で守ると、たとえパスワードが漏れても、手元のスマホがなければ入れなくなります。今回は、この「作業用ユーザー+二段階認証」を作ります。
ルートと IAM ユーザーは、何が違うの?
ルートは「アカウントの親鍵」で、すべてを操作でき、止めることもできません。IAM ユーザーは「必要なドアだけ開けられる合鍵」です。普段は合鍵で作業し、親鍵は金庫にしまっておく——というイメージです。
二段階認証(MFA)って何?
「パスワード(知っているもの)」に加えて、「スマホに表示されるワンタイムコード(持っているもの)」の 2 つがそろって初めてログインできる仕組みです。片方(パスワード)が漏れても、もう片方(スマホ)がなければ入れないので、ぐっと安全になります。
必要な権限を付けた IAM ユーザーを 1 つ作成し、二段階認証(MFA)を有効化する。最後にいったんサインアウトし、その IAM ユーザーで、パスワードとワンタイムコードを使ってサインインできることを確認する。
つくる構成
「何でもできるルート」はしまっておき、「必要な権限だけの作業用ユーザー」を普段使いにします。そのユーザーのログインを、パスワード+ワンタイムコードの二段階で守ります。
アカウントの親鍵
(普段は使わない)
- 何でもできてしまう(止められない)
- 漏れるとアカウントごと危険
- 大切にしまっておく存在
作業用の合鍵
(普段使い)
- 必要な権限だけを持つ
- 二段階認証(MFA)で守る
- 万一のときも被害を抑えやすい
要件
以下の要件を満たし、作った IAM ユーザーで二段階認証ログインができることを確認してください。
| No | 要件 |
|---|---|
| 1 | ルートユーザーでサインインし、IAM コンソールを開く。 |
| 2 | IAM ユーザーを 1 つ作成する(例:my-iam-user)。マネジメントコンソールへのアクセスを有効にし、パスワードを設定する。 |
| 3 | そのユーザーに権限を付与する。学習用に、まずは閲覧のみ可能な権限(例:マネージドポリシー ReadOnlyAccess)を付ける。 |
| 4 | そのユーザーに仮想 MFA デバイス(認証アプリ)を有効化する。 |
| 5 | いったんサインアウトし、作成した IAM ユーザーで、パスワードとワンタイムコードを使ってサインインできることを確認する。 |
構築の進め方
「ユーザーを作る → 権限を付ける → 二段階認証を有効にする → そのユーザーで入り直す」の順に進みます。最後に自分でログインして確かめるところまでがゴールです。
-
ルートユーザーでサインインし、IAM コンソールを開く
最初に作ったルートユーザーでマネジメントコンソールにサインインします。画面上部の検索バーに
IAMと入力して、IAM コンソールを開きます。最初の 1 回だけルートを使う作業用ユーザーをまだ持っていない今だけ、ルートで作業します。このユーザーを作り終えたら、以降の作業はそちらに切り替えていく、というのが安全な進め方です。
-
IAM ユーザーを作成する(コンソールアクセスを有効に)
左メニュー「ユーザー」→「ユーザーの作成」を開きます。ユーザー名に
my-iam-userを入力し、「マネジメントコンソールへのユーザーアクセスを提供する」にチェックを入れます。パスワードを設定し(自動生成でも可)、画面の案内に従って進めます。サインイン情報は控えておく作成の最後に、サインイン用の URL・ユーザー名・パスワードが表示されます。あとでこのユーザーでログインするので、メモするか、表示される情報を保存しておきましょう。
-
権限(ポリシー)を付ける
権限の設定画面で、「ポリシーを直接アタッチする」を選び、一覧から
ReadOnlyAccessを検索してチェックを入れます。これで「見ることはできるが、変更はできない」権限になります。そのまま進めてユーザーを作成します。まずは最小限から権限は、必要なものだけを少しずつ付けるのが安全の基本です(最小権限)。今回は学習なので、まず安全な「閲覧のみ」を付けました。実際の作業で操作が必要になったら、その都度ふさわしい権限を足していきます。
-
そのユーザーに二段階認証(MFA)を有効にする
作成したユーザーを開き、「セキュリティ認証情報」タブ →「MFA デバイスの割り当て」を選びます。「認証アプリ(Authenticator app)」を選び、表示されるQR コードをスマホの認証アプリで読み取ります。アプリに表示される6 桁のコードを、続けて 2 回入力して登録します。
MFA デバイスの種類
認証システム(authenticator app)スマホの認証アプリで QR コードを読み取るセキュリティキー物理的な USB キーなどを使うハードウェア TOTP トークン専用のハードウェア機器を使う↳スマホの認証アプリだけで用意できるので、今回はこれを選びます
コードは 2 回続けて入力登録では、アプリに表示される連続した 2 つのコードを入力します。コードは時間で変わるので、1 つ目を入れたら、次に切り替わったコードを 2 つ目として入力します。あわてず、表示が変わるのを待ちましょう。
-
サインアウトして、IAM ユーザーで入り直す
画面右上からサインアウトします。手順 2 で控えたサインイン URL(または「IAM ユーザー」としてのサインイン)から、ユーザー名・パスワードを入力し、続けてスマホのワンタイムコードを入力します。無事に入れれば、二段階認証つきの作業用ユーザーの完成です。
ここが本番の確認「パスワードだけでなく、スマホのコードも求められる」「両方そろうと入れる」——これを自分で体験することが、このハンズオンのいちばん大事なポイントです。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「6 桁のコードを入れても、登録できない」
登録には連続した 2 つのコードが必要です。①1 つ目を入れたあと、アプリの表示が切り替わるのを待って 2 つ目を入れたか、②スマホの時刻が自動設定(正確な時刻)になっているかを確認しましょう。コードは時刻をもとに作られるため、スマホの時刻がずれていると合いません。
「ユーザー名やパスワードを入れても入れない」
サインインの入口を間違えている可能性があります。①「ルートユーザー」ではなく「IAM ユーザー」としてサインインしているか(入口の画面が分かれています)、②アカウント ID(またはアカウントの別名)を正しく入れているか、③手順 2 で控えたサインイン URL を使っているかを見直しましょう。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。IAM コンソールとサインイン画面で、次を順に確かめましょう。
- IAM の「ユーザー」一覧に、作成したユーザー(例:
my-iam-user)がある。 - そのユーザーの「許可」に、
ReadOnlyAccessなどの権限(ポリシー)が付いている。 - そのユーザーの「セキュリティ認証情報」に、MFA デバイスが割り当て済みと表示されている。
- サインアウト後、IAM ユーザーとしてサインインでき、その際にワンタイムコードを求められた。
- パスワードとコードの両方を入れて、マネジメントコンソールに入れた。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- 普段の作業を、ルートユーザーではなく IAM ユーザーで行うのはなぜでしょうか。もしルートで作業し続けると、どんなリスクがあるか考えてみましょう。
ヒント
ルートは何でもできるぶん、漏れたときの被害が最大になります。普段使いを「必要な権限だけの合鍵」にしておけば、万一漏れても被害を限定でき、ルート(親鍵)は安全にしまっておけます。「被害を小さく保つ」という観点で考えてみましょう。 - 二段階認証(MFA)は、「パスワードが漏れても安全」とよく言われます。なぜパスワードだけより安全なのか、2 つの要素の性質の違いから説明してみましょう。
ヒント
パスワードは「知っているもの」、スマホのコードは「持っているもの」です。攻撃者がパスワードを盗めても、あなたのスマホまでは手元にありません。2 種類の異なるものを両方そろえる必要がある、という点が安全さの理由です。 - 今回は学習のため「閲覧のみ」の権限を付けました。実際に作業するユーザーには、どんな考え方で権限を決めるとよいでしょうか。「とりあえず全部できる権限」にしない理由も考えてみましょう。
ヒント
必要な操作だけを許可する「最小権限」が基本です。全部できる権限にすると、誤操作や乗っ取りのときの被害が大きくなります。「その人(その用途)がやることに必要な権限だけ」を足していく、という観点で考えてみましょう。
後片づけ
IAM ユーザーや MFA は料金がかからないため、今回作ったユーザーは、これからの作業用にそのまま残しておくのがおすすめです。練習用として消したい場合だけ、次のように片づけます。
- 残す場合(おすすめ):作った IAM ユーザーは、今後の作業の入口として使い続けられます。ルートユーザーは、これ以降は基本的に使わず、大切にしまっておきましょう。
- 消す場合:IAM の「ユーザー」一覧で対象を選び、「削除」します(MFA デバイスも一緒に外れます)。ただし、これが唯一の作業用ユーザーなら、消すと普段使いの入口がなくなる点に注意します。
いちばん強いルートこそ、二段階認証を
今回は IAM ユーザーに MFA を付けましたが、ルートユーザーにも MFA を設定しておくのが安全のために重要です(手順はほぼ同じです)。いちばん強い権限を持つルートこそ、しっかり守りましょう。作った IAM ユーザーやパスワード、認証アプリの登録は、他人に渡さないよう管理してください。
コストに関する注意: IAM の利用そのものに料金はかかりません。IAM ユーザーの作成・権限の付与・MFA(二段階認証)の有効化は、すべて無料です。今回のハンズオンで料金が発生することはありません。なお、付与した権限を使って実際に何かのサービス(EC2 や S3 など)を作って動かせば、そのサービスぶんの料金はかかりますが、今回は「閲覧のみ」の権限なので、リソースを新しく作ることはありません。安心して進めてください。