KAROUSHI -Japanese Engineer Blog-

コボルドからドラゴンへ -Kobold to Dragon-

システムエンジニアのブログです。サイト名は「雑魚キャラからボスキャラへレベルアップしたい!」という思いを込めて命名しました。自分はやっとリザードマンになったくらいです。

AWSを登録したら最初にやりたい。IAMで多要素認証やアクセス権限などの5つの設定

AWSを登録したら一番初めにやってほしいのが多要素認証(MFA:Multi-Factor Authentication)の設定です。従来のユーザ名とパスワードの他にもう一要素(例えばワンタイムパスワード)を入力してログインする手法です。AWSではデフォルトでは設定されていないので、Identify and Access Management(通称IAM)で設定する必要があります。所要時間は30分から1時間程度です。たったそれだけの時間でMFAを設定できて、セキュリティも向上するならやらない選択肢はありません。またIAMは新規ユーザを作る際にも覚えておきたいサービスなので、この機会に一度触ってみてください。

目次

セキュリティステータスの設定

AWSマネジメントコンソール画面の左上の[サービス]→[IAM]を選択してIAMのダッシュボード画面を表示しましょう。
f:id:jainders:20170630234940j:plain

画面を表示するとセキュリティステータス一覧が表示されています。これらを1つずつ設定していきます。(はじめからすでに「ルートアクセスキーの削除」はチェックが入っています。)

ルートアカウントのMFAを有効化

早速ルートアカウントにMFAの設定を行います。
[ルートアカウントのMFAを有効化]→[MFAの管理]を押します。
f:id:jainders:20170630232111j:plain

すると[MFAデバイスの管理]ダイアログが表示されます。
f:id:jainders:20170630235054j:plain

  • 仮想MFAデバイススマホにMFAアプリをインストールして認証コードを生成してログインする方法です。
  • ハードウェアMFAデバイス:仮想MFAデバイスと同様認証コードを生成してくれます。違うのは物理デバイスを別途購入する必要があります。

 AWSがサポートしている物理デバイスこちら。
 
仮想MFAデバイススマホにインストールして準備してほしい旨が記載されています。仮想MFAのアプリはいくつかあるようですが、以下が分かりやすくてオススメです。

  • Authy

スマホにインストールして設定が完了したら[次のステップ]を押します。
f:id:jainders:20170630235118j:plain

MFAデバイスの管理画面で、スマホにインストールした仮想MFAデバイスから認証コード6桁を生成して2回入力します。Authyの場合は6桁の認証コードを生成したあと、1分後にまた6桁の認証コードが生成されます。それらを入力した後[仮想MFAの有効化]を押してください。
f:id:jainders:20170630235137j:plain

成功すると以下のようにMFAデバイスとしてスマホが関連付けらえれた旨が表示され、MFAの設定は完了です。以降ルートアカウントでログインする際には毎回関連付けたスマホで認証コードを1コ生成してログインする必要があります。
スマホを亡くすとルートアカウントでログインできなくなります。AWSの解約はルートアカウントでしかできないので、失くしたり、他のスマホに変えた際に誤って捨てたりしないように注意してください。
万が一スマホを亡くしてAWS解約ができなくなってしまった場合は、AWSサポートに電話してMFAの設定を解除してもらいましょう。
f:id:jainders:20170630235224j:plain

個々のIAMユーザの作成

ここでは新規ユーザを作成します。AWSを他のインフラメンバーや開発メンバーに公開して一緒に使う場合などはここで新規アカウントと権限を設定して生成します。
f:id:jainders:20170630235246j:plain

以下画面から[ユーザ追加]を押して新規ユーザアカウントを作ってみます。
f:id:jainders:20170630235322j:plain

ユーザ追加画面で以下項目を入力して、[次のステップ:アクセス制限]を押します。

  • ユーザ名:任意。アクセス権限が同一でよいなら下にある[別のユーザの追加]をクリックして複数ユーザを同時に作ることが可能です。
  • アクセスの種類
    • プログラムによるアクセス:AWS CLIなどを利用する場合にチェックします。あとから設定変更可能なので、良く分からない場合はチェックを外しましょう。
    • AWSマネジメントコンソールへのアクセス:AWSマネジメントコンソールへアクセスする権限を付与します。AWSマネジメントコンソールとは今まさに触っている管理画面のことです。
  • パスワード
    • 自動生成パスワード:ランダムなパスワードを生成したい場合。
    • カスタムパスワード:最初から決まったパスワードを設定する場合。
  • パスワードのリセットが必要:開発メンバー用に生成する場合、上記を自動生成パスワードにして、ココもチェックしておきます。アカウントの作成が完了したらユーザ名と自動生成されたパスワードを開発メンバーに連絡して、ログインしてもらい新しいパスワードを設定してもらいましょう。

f:id:jainders:20170630235655j:plain

ユーザのアクセス制限を設定します。
グループを作成しておけば、新規アカウントをグループに紐づけるだけで、そのグループのアクセス権限が設定されるので楽です。今回は「グループを使用してアクセス許可を割り当て」で作成しますのでスキップします。
f:id:jainders:20170630235747j:plain

[既存のポリシーを直接アタッチ]を選択して[フィルター]のテキスト入力欄に"Admini"と入力します。すると一番上に[AdministratorAccess]が表示されるのでそこにチェックを入れます。ポリシーの設定が完了したら[次のステップ:確認]を押します。
※ AdministraterAccessはAWSの全権限を与えるポリシーです。本来であればセキュリティを強固に保つために、利用するサービスだけにチェックするべきです。今回は説明のためだけに設定しています。
f:id:jainders:20170630235755j:plain


アカウント作成前の確認画面です。
問題なければ[ユーザの作成]を押してください。
f:id:jainders:20170630235915j:plain

今回作成したユーザ情報をCSVでダウンロードしたり、Eメールで送信することができます。開発メンバーに送信したい場合はココから送信すると楽ですね。
[閉じる]を押してIAMのダッシュボード画面に戻ります。
f:id:jainders:20170630235927j:plain

グループを使用してアクセス許可を割り当て

グループ生成します。先ほどの個々のIAMユーザの作成でグループを作成している場合は、すでにチェックが付いていると思いますのでスキップしてください。
では[グループの管理]を押してグループを生成します。
f:id:jainders:20170630235935j:plain

[新しいグループの作成]を押しましょう。
f:id:jainders:20170630235949j:plain

グループ名を設定し、[次のステップ]を押します。
グループ名:任意。
f:id:jainders:20170701000306j:plain

グループに紐づけるポリシーを設定します。
フィルタのテキスト入力欄に"Admini"と入力してポリシーから[AdministratorAccess]にチェックを入れて[次のステップ]を押します。
※ AdministraterAccessはAWSの全権限を与えるポリシーです。本来であればセキュリティを強固に保つために、利用するサービスだけにチェックするべきです。今回は説明のためだけに設定しています。
f:id:jainders:20170701000344j:plain

グループ作成前の確認画面です。問題ないか確認して[グループの作成]を押します。
f:id:jainders:20170701000352j:plain

グループのTOP画面に戻り先ほど作成したグループ名が一覧に表示されていること確認してください。
f:id:jainders:20170701000404j:plain

IAMパスワードポリシーの適用

アカウントのパスワードポリシーを設定します。簡単なパスワードはブルートフォースアタックで簡単に突破されてしまいます。ここでパスワードポリシーを事前に決めておいて、ユーザにポリシーに合ったパスワードを設定してもらいましょう。
[パスワードポリシーの管理]を押します。
f:id:jainders:20170701000413j:plain

パスワードポリシー画面では、パスワードの最小長や、大文字小文字の必須チェックなど、社内のセキュリティに即したパスワードポリシーを設定してください。
Security Token Serviceリージョンは、東京以外使うことがなければ無効化しておくことをオススメします。
f:id:jainders:20170701000450j:plain

新規アカウントでログイン

さてIAMダッシュボードに表示されているセキュリティステータスはすべてチェックマークになったでしょうか。
ルートアカウント以外でログインする場合は、ログインするサイトが違うので注意が必要です。
IAMダッシュボードの[IAMユーザのサインインリンク]のURLをコピーしてブラウザのお気に入りに入れておきましょう。
f:id:jainders:20170701000509j:plain

それでは右上から一度サインアウトして新規アカウントでログインしてみてください。
新規アカウント用のログインページはルートアカウントのログインページとデザインが異なり以下のような画面です。
ログインに成功して、AMSマネジメントコンソールの画面が表示されれば成功です。
f:id:jainders:20170701000805j:plain

IAMの設定は以上です。お疲れさまでした。