こんにちは、SCSK 網中です。
気が付けば、2021年も終わり、2022年も1カ月過ぎてしまいました。
最近はマルチアカウントの権限設計に携わることが多くなってきてまして、自身の振り返りもかねて、AWS Identity and Access Management(IAM)についての記事を投稿します。
AWS IAMって何?といった方や、AWS使い始めたばかりで何をすれば良いか分からない方向きに今回の記事を執筆していますので、是非ご一読いただけますと幸いです。
はじめに
今までブログを書こう書こうと思いつつ、内容がまとまらず、執筆できておらず…
2022年は「アウトプットの強化」との抱負を立て、月1くらいで記事の執筆していく所存です! が、今まで記事を書けなかった人間がすぐに内容の詰まった記事をかけるわけもない為、先ずは自分の得意分野の豆知識的な内容の記事を作成しようと考えた次第です!
AWSの認定試験では、クラウドプラクティショナーよりセキュリティ – 専門知識の点数の方が高かったような人間ですので、得意分野といえば、「AWSの権限設計」「AWSでのセキュリティ対策」でしょうか…
ということで、まずはAWS IAMやAWS Organizations・SSOとセキュリィ対策的なところも絡めつつ執筆していければと考えております。
AWS Identity and Access Management(IAM)とは
AWS Identity and Access Management(AWS IAM)は、AWSを操作する上で必要となるアクセス制御権限を管理するユーザ一元管理サービス になります。誰がどのサービスに、どのような条件でアクセスできるようにするかを設定できます。
適当にAdministrator Access(何でもできる管理者権限)でもつけとけ!みたいな雑な運用をしていると、利用者に好き放題された結果、想定外の利用料が発生するなんてこともあり得ます。。。また、IAMのアクセスキーが漏洩した結果、巨大且つ大量のインスタンスが起動され、仮想通貨のマイニングに利用され、身に覚えのない多額の利用費が請求されたり…という可能性もあります。
いくら利用しても料金が発生ないサービスになりますので、沢山検証してAWS利用者の生殺与奪の権を握りましょう!!!
AWS IAMを利用する際に覚えておくべき要素5点
IAMユーザ
人やアプリケーションが利用できる認証サービスとなります。ID・パスワードの組み合わせとアクセスキーID・シークレットアクセスキーの組み合わせが利用して、AWSにアクセスできます。
AWSを利用し始めた方は、まずはじめにIAMユーザを作成してください!
rootアカウントでずっと作業なんていうのは、NGです。すぐIAMユーザを作りましょう。
まずはAdministratorAccess権限を付与したIAMユーザを作成して、権限設計に慣れるまではそのIAMユーザで基本は作業するようにしてください。
その後、AWSを利用するユーザが増えてきたり、複数のアカウントを利用するようになったら、セキュリティベストプラクティスに沿った権限設計・運用を取り入れていくようにしましょう。また、基本的にユーザ一人に対して、一つのIAMユーザを払い出すようにしましょう。
IAMロール
人やAWSサービス・アプリケーションが利用できる認証サービスになります。IAMユーザと違って利用する際は、ID・パスワードやアクセスキーID・シークレットアクセスキーをユーザが管理する必要がない為、安全に利用できるサービスです。
LambdaやCloudformationを利用する際は必須の知識になりますので、ぜひ押さえておきましょう。
IAMグループ
IAMユーザを10も20も作る際に、同じ権限を一ユーザずつ付与するのはめんどくさい。そんな時に便利なのがIAMグループです。あらかじめ、IAMグループに権限を付与しておくことで、そのグループに所属したIAMユーザは皆同様権限でAWSを利用することができます。
なお、IAMユーザは複数のグループに所属できます。(最大10グループ)
IAMに関する上限値については、こちらをご参照ください。
IAMポリシー
権限の管理元となるサービスです。IAMポリシーは、上記3つに紐づけることができます。
カスタマー管理ポリシーといって、自分で1から作成することもできますが、最初のうちはAWSマネージドポリシーを利用することをお勧めです。
各サービスごとのポリシーやジョブ機能ポリシーなどかなり充実しているので、ご活用ください!
例)AdministratorAccess、AmazonEC2FullAccess、ViewOnlyAccess、Billing
MFA
AWSのサービスというわけではないですが、セキュリィ対策として忘れてはいけないのがMFA(多要素認証)。スマホのアプリなどで簡単に導入できますので、ぜひご利用ください。rootアカウントには必ずMFAを紐づけるようお願いします!また、できる限り各ユーザに対してもMFAを紐づけるようにしましょう。
もし、MFAを持ち込めないという環境下の方は操作元のIPを限定するような設定もできますので、後日記事をあげようかと思います。
AWSでのMFA仕様の詳細について知りたい方は、以下をご参照ください。
IAMユーザでのMFAの紐づけ方については、本記事でご紹介します。
SSOのMFAの紐づけ方については別の記事で紹介したいと思います。
詳細についてもっとよく知りたいという方がいらっしゃいましたら、
下記書籍がおすすめです。とても読みやすく、分量も多すぎず、良い感じです。
AWS IAMでまずはやってほしいこと:「IAMユーザ」の作成
権限設計に役立つ情報を絡めつつ書いていこうかと思いますので、途中途中の文章も読んでいただけると幸いです。
1.AWSアカウントにログイン
IAMユーザが払い出していない場合は、rootアカウントでログイン。
IAMユーザが払い出されている場合は、払い出されたIAMユーザでログインしてください。
2.IAMのコンソール画面に移動する
上の検索窓に「IAM」と移入して、Enterを押す。
もし、下の画面のように履歴が残っているようであれば、そこをクリックしてもアクセスできます。
3.左の一覧から「ユーザ」をクリックする。
4.ユーザーの詳細を設定する。
- 「ユーザー名」
適当な名前をご記入ください。 - 「アクセスキー-プログラムによるアクセス」
外部のアプリケーションからAWSを操作したい場合はチェックを入れてください。基本的にはチェックなしが推奨です。 - 「パスワード-AWSマネジメントコンソールへのアクセス」
こちらは基本的にチェックを入れてください。チェックを入れるとAWSマネジメントコンソールログインして、適用したポリシーに沿ってAWSを利用することができます。 - 「コンソールのパスワード」
記載してある通りです。ユーザ作成後にID・パスワード情報をダウンロードできますので、お好みの方をご選択ください。 - 「パスワードのリセットが必要」
基本的にはチェックを入れてください。
5.アクセス許可の設定
- 「ユーザーをグループに追加」
既存で作成しているグループに新規ユーザを追加することができます。 - 「アクセス権限を既存のユーザからコピー」
既存のユーザと同様の内容で新規ユーザのアクセス許可を設定できます。 - 「既存のポリシーを直接アタッチ」
今回は既存のユーザ・グループがないものとして、本項目を選びます。とりあえず、なんでもできるようにしたい為、「AdministratorAccess」を選択します。下記画像では、ジョブ機能の一覧を表示していますが、AWS側で想定されるジョブに対して必要となる権限リストが用意されています。
例:Billing → CostExploreやbudgetsなど利用料の管理で必要となるサービスの権限が付与されます。
6.タグの設定
お好みで設定してください。
7.確認
設定した内容が間違えていなければ、右下の「ユーザの作成」をクリックしてください。
8.認証情報のダウンロード
「CSVをダウンロード」クリックして、必ず 認証情報を保存するようにしましょう。
9.MFAの紐づけ
MFA(多要素認証)の設定を行います。
まず、作成したIAMユーザの詳細画面を表示します。(作成したIAMユーザの赤枠内をクリックしてください。)
赤枠内の「管理」をクリックします。
今回はスマホにインストールしたアプリケーションでMFAを登録する為、「仮想MFAデバイス」を選択します。
QRコードの表示をクリックして、表示されたQRコードをアプリケーションで読み取ります。
その後、連続するMFAコードを入力して、「MFAの割り当て」をクリックすれば、MFAの登録が完了です。
最後に
いかがでしたでしょうか?
少しでもAWSの権限管理について、ご理解いただけたのであれば、幸いです。
今後は、マルチアカウントの権限設計でのヒント・CloudformationでIAM・SSO作成自動化などなど書いてければなと…
何かAWS権限設計についてこんなこと知りたいなどご意見がございましたら、コメントに書いていただけますと幸いです。
2022/2/18追記
続きの記事を公開しました!