はじめに
最近、社内でよく聞かれることがあります。
「新しくAWSアカウントを取得したのだけれど、まず何をすればいいですか?」
AWSには、利用1日目(通称:Day1)に最初に行うべき設定がいくつかあります。それは、不意な課金を抑えたり、セキュリティを高めたりするための重要な設定です。どのような設定をすべきかは以下のURLでAWSからスライドが公開されています。
Day 1 with Amazon Web Services – AWSご利用開始時に最低限おさえておきたい10のこと
しかし、このスライドだけでは具体的にどのような設定を行えばいいか、AWSの利用が初めての方々にはわからない部分もあると思います。
そこで、このシリーズではAWSの利用が初めての方のために、最初に行うべき設定の手順を実際の画面を交えて紹介していきます。
最初に行うべき設定には、大きく分けて以下の3つのカテゴリーがあります。
- セキュリティ
- コスト最適化
- 信頼性
まずは3つのカテゴリーの1つ、セキュリティについてこの記事と次の記事の2本に渡ってお届けします。
※この記事はあくまでもAWSから公開されている「Day 1 with Amazon Web Services AWSご利用開始時に最低限おさえておきたい10のこと」を実現する方法の一例を紹介しています。この設定をしていれば必ず安全であると保証するものではありません。
(1)AWSルートアカウントは極力使用しない
AWSルートアカウントはアカウント作成直後、最初にサインインすることになります。AWSルートアカウントは全ての権限をもっているため、サインイン情報が漏洩した場合などにアカウントを削除されたり、意図しない課金が発生する可能性があります。まずはAWSルートアカウントのセキュリティを高め、容易にサインインできないようにしましょう。この項目では、「AWSルートアカウントにMFAを設定する」手順を説明します。(「ルートアカウントでなくIAMを利用する」手順については(2)で説明します)
MFAとは多要素認証(Multi-Factor Authentication)のことで、サインイン時にユーザー名とパスワードに加えて、短時間で更新されるセキュリティトークンを使用する認証方式です。
まずAWSマネジメントコンソールにサインインします。右上のアカウント名を押下し、プルダウンメニューから「セキュリティ認証情報」を押下します。
警告が表示されたら「Continue to Security Credentials」を選び、警告を閉じます。
「多要素認証(MFA)」を押下すると表示される「MFAの有効化」のボタンを押下します。
利用するデバイスを選択します。
ここでは、スマートフォンやタブレットにアプリケーションをインストールして使用する「仮想MFAデバイス」を選択します。チェックを入れて「続行」を押下します。
ここで、認証に使用するデバイスの設定を行います。
以下のアプリケーション(以下認証アプリ)をデバイスにインストールします。
iOSはこちら→ Google Authenticator
Androidはこちら→ Google 認証システム
認証アプリを起動します。(以降Androidの画面で説明しますので、iOSは適宜読み替えてください)
アカウントの追加で「バーコードをスキャン」を押下します。
AWSマネジメントコンソールでQRコードの「表示」を押下し、表示されたQRコードを認証アプリで読み取ります。
認証アプリに6桁の数字が表示されました。
認証アプリに表示された6桁の数字をAWSマネジメントコンソールの「MFAコード1」に入力し、約30秒後に、認証アプリに表示された数字が変わったら、「MFAコード2」に新しい6桁の数字を入力します。(「MFAコード1」と「MFAコード2」は連続して表示された数字である必要があります)
入力後、「MFAの割り当て」を押下します。
多要素認証が使えるようになりました。「閉じる」を押下して閉じます。
サインイン方法を確かめてみましょう。右上のアカウント名を押下し、プルダウンメニューから「サインアウト」を押下します。
再度サインインするため、「コンソールへログイン」を押下します。
先ほどまでサインインしていたアカウントのメールアドレスが表示されていることを確認して、(または、メールアドレスを入力して)パスワードも入力し、「サインイン」を押下します。
認証アプリに表示されている6桁の数字を入力します。
サインインできました。
(2)ユーザーには最低限の権限を付与する
(1)でAWSルートアカウントにMFAを設定しましたが、AWSルートアカウントでは、複数のユーザーで使用する場合にユーザーによって権限を分けることができません。サーバを作成したり削除したりできるユーザーとそうでないユーザーを分けて作成したり、請求情報の確認だけができる経理用のユーザーを作成したい場合もあるでしょう。
ユーザーの権限の管理はIAM(Identity & Access Management)というサービスで行います。AWSでは、ユーザーには最低限の権限を与えるべきという考え方をするため、全ての権限を持つAWSルートアカウントは日常的には使わないようにし、普段は最小限の権限を持つユーザー(IAMユーザー)を作成して利用します。
AWSマネジメントコンソールにサインインし、「IAM」を押下します。
左カラムの「ユーザー」を押下します。
「ユーザーを追加」を押下します。
ユーザー名に任意の文字列を入力します。AWSアクセスの種類では、そのユーザーがAWSのリソースにどのようにアクセスするかを選択します。AWSマネジメントコンソールにサインインさせたい場合は「AWSマネジメントコンソールへのアクセス」にチェックを入れます。
コンソールのパスワードは「自動生成パスワード」にチェックを入れます。(または「カスタムパスワード」にチェック入れ、任意のパスワードを入力してもかまいません)
このユーザーが最初にサインインしたときに任意のパスワードを設定させたいならば、「ユーザーは次回のサインインで新しいパスワードを作成する必要があります」にチェックを入れます。その後、「次のステップ:アクセス権限」を押下します。
ここではユーザーに権限を付与することが出来ますが、一旦何も設定せずに「次のステップ:確認」を押下して進みます。
内容に間違いがなければ「ユーザーの作成」を押下します。
ユーザーが出来たら忘れずに接続情報を保存します。
「csvのダウンロード」から接続情報の含まれたcsvファイルを保存します。(または、パスワードの「表示」を押下することでこの画面でパスワードの確認を行うこともできます)
接続情報を保存したら「閉じる」を押下します。
次に、ユーザーが所属するグループを作成します。
グループは必ず作成しなくてはならないものではありませんが、権限の管理の利便性を考慮し、権限をグループに付与する方法で設定します。左カラムの「グループ」を押下します。
「新しいグループの作成」を押下します。
任意のグループ名を入力し、「次のステップ」を押下します。
この画面で、グループに付与する権限(ポリシー)を選択します。ポリシーは同時に複数付与することができます。ここでは例として、EC2の参照権限である「AmazonEC2ReadOnlyAccess」にチェックを入れます。チェックを入れたら「次のステップ」を押下します。
内容を確認し、間違いなければ「グループの作成」を押下します。
作成したグループにユーザーを所属させます。それにより、ユーザーに権限を付与することができます。グループ名にチェックを入れて、「グループのアクション」を選択し、プルダウンメニューから「グループにユーザーを追加」を押下します。
グループに所属させたいユーザーにチェックを入れ、「ユーザーの追加」を押下する。
次にアカウントIDを変更し、サインインしやすくします。IAMで作ったユーザーがサインインする際にはユーザー名、パスワードだけでなく、アカウントIDが必要ですが、アカウントIDはデフォルトでは数字の羅列であるため、覚えて入力するのが難しいですし、控えているところから調べて入力するのが手間です。また、複数のアカウントを使用している場合、数字だけではアカウントの区別もつきにくいです。ここでは、アカウントIDに任意の文字列を指定することでそれらの不都合を解消します。
左カラムから「ダッシュボード」を開き、IAMユーザーのサインインリンクの右の「カスタマイズ」を押下します。
アカウントエイリアスに任意の文字列を入力します。この文字列は他のアカウントと重複することはできません。
IAMユーザーのサインインリンク内のアカウントIDが数字から任意の文字列に変更されました。
試しにサインインしてみましょう。サインアウトしてからサインイン画面に戻り、「AWSアカウントのEメールアドレス」に先ほど設定したアカウントIDのエイリアス(任意の文字列)を入力し、「次へ」を押下します。
先ほど作ったユーザー名とそのユーザーのパスワードを入力し、「サインイン」を押下します。
ユーザーを作成した際、「ユーザーは次回のサインインで新しいパスワードを作成する必要があります」にチェックを入れた場合は、ここでパスワードを変更します。
サインインできました。IAMユーザーでサインインしたときは、右上の表示が「ユーザー名@アカウントID」になります。
設定した権限が反映されていることを確認しましょう。
メニュー画面で「EC2」を押下します。
「インスタンスの作成」を押下します。
OSの右の「選択」を押下します。OSはどんどん新しいものがリリースされるため、ここに貼っている画面のものと同じOSが表示されなくなったりすると思いますが、この手順は確認だけですので、選択するOSは、画面と同じでなくてかまいません。
タイプが「t2.micro」の行にチェックを入れ、「確認と作成」を押下します。
内容に間違いがないか確認し、「作成」を押下します。
キーペアの選択画面が起動します。任意のキーペア名を入力し、「キーペアのダウンロード」を押下してください。IAMユーザーの権限が正しく設定されていれば、エラーが表示されるはずです。これは、このIAMユーザーがEC2の参照権限しか持たないため、キーペアを作成しようとしてエラーになっているのです。既存のキーペアが存在する場合でも、インスタンスを作成しようとすると同じようにエラーになりサーバを立てることはできません。
おわりに
今回はセキュリティに関する2つの設定を行いました。これにより、
・AWSルートアカウントにMFAを設定することで、不正アクセスを防止すること
・最小限の権限をもったIAMユーザーを作成することで、サーバの起動停止など
ユーザが実行できるアクションを制限すること
がそれぞれ実現できました。
次回の記事では、認証情報をセキュアに取り扱う方法や、操作ログを取得する方法など、引き続き、セキュリティに関する項目を紹介していく予定です。
執筆者プロフィール
-
物理からクラウドまで幅広く手掛けるインフラエンジニア。
最近はどっぷりAWSに浸かっています。好きなAWSサービスは「CloudFormation」
この執筆者の最新記事
- Pick UP!2020.11.30AWS re:Invent 2019見聞録・後編――英語ができなくても楽しめる
- Pick UP!2020.11.30AWS re:Invent 2019見聞録・前編――AWS注目サービス情報
- AWS・クラウド2019.09.13Day1~AWSで最初に行うべき設定 信頼性編
- AWS・クラウド2019.07.31Day1~AWSで最初に行うべき設定 コスト編