AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのサービスです。
IAM は基本的な機能なのですが、非常に重要な機能です。AWS のアカウントを作成したばかりの状態ですと、Root ユーザーのみが作成され、そのユーザーでログインしています。
このRoot ユーザーですが、非常に権限のあるユーザーで、名前の通り、AWS 上のオペレーションを何でも行うことができます。
このアカウント情報が、仮に外部に漏れてしまうと、AWS アカウントが乗っ取られ、何でもできてしまうという危険があります。
これを避けるために、IAM ユーザーを作成し、そのユーザーを使って運用するというのが、ベストプラクティスとなります。
IAM の基本機能
IAM の設定項目として、以下の4つがあります。
IAM ポリシー: 何を許可し、何ができるのかを定義します。例えば、EC2の操作は閲覧と開始、起動のみ許可し、削除は許可しないなどです。
IAM ユーザー: ユーザー名のことです。
IAM グループ: 複数のユーザーをグループ化します。
IAM ロール: 何ができるかを定義するポリシーを指定し、サーバー(仮想インスタンス)に適用します。
これらの設定項目が、それぞれどの様なものなのか見ていきましょう。
IAM ユーザーとIAM ポリシーを作成します。
作成したポリシーを、権限内容に応じて、必要なIAM ユーザーに割り当てます。これで、IAM ユーザーに何ができるかの権限が割り当てられます。これをインラインポリシーと呼びます。
インラインポリシーでも良いのですが、IAM ユーザーの数が増えた場合はどうでしょうか。運用が煩雑になりますよね。権限の許可忘れや、意図しない権限を割り当ててしまったりして、事故に繋がるケースもあり得ます。
これを避けるために、IAM グループを利用します。IAM ポリシーは、IAMグループに割り当てます。そして、IAM ユーザーを、必要なIAM グループに所属させるのです。これにより、運用が楽になります。IAM ユーザーは、所属するグループを変更するだけで、権限内容も変更可能となります。
次に、IAM ロールです。
IAM ロールは、IAM ユーザーに割り当てるのではなく、サーバー(仮想インスタンス)に割り当てます。
IAM ポリシーで、何を許可するのかを定義し、そのIAM ポリシーをIAM ロールに割り当てます。そして、そのIAM ロールをサーバーに割り当てることで、サーバに権限を適用することができます。
IAM を使ってみよう
IAM ポリシーの作成
AWS の管理コンソールにログインし、検索テキストボックスにIAMと入力します。
IAM の管理コンソールに接続します。
左側のメニューから、「ポリシー」をクリックします。
ポリシーの一覧が表示されます。これらは、AWS が用意しているポリシーとなります。
自分で新規にポリシーを作成してみましょう。
「ポリシーのフィルター」をクリックし、表示されるメニューの中から「ユーザーによる管理」をクリックします。
「ポリシーの作成」をクリックします。
「ビジュアルエディタ」のタブの中に、メニューが表示されます。「サービス」をクリックします。
サービスの一覧が表示されます。非常にたくさんのサービスがありますので、検索を使って、使用したいサービスを選択していきます。
まず、EC2を設定してみましょう。検索エキストボックスに、「EC2」と入力します。
EC2関連のサービスのみが表示されますので、「EC2」をクリックします。
実行可能なアクションが表示されます。
リスト:参照系アクション
- リスト: 表示系のアクション
- 読み込み: 参照系のアクション
- タグ付け: タグの追加、削除、編集アクション
- 書き込み: 書き込み系のアクション
- アクセス権限の管理: アクセス制御系のアクション
「リスト」をクリックして、表示系アクションの詳細を表示します。
アクションの詳細が表示されます。ここから、具体的に適用したいアクションを細かく選択できます。
今回は、リストは、全てのアクションを選択します。また、読み込みも全てのアクションを選択します。
次に、「書き込み」をクリックします。
書き込み系アクションの一覧が表示されます。今回は、書き込みに関しては、一部のアクションのみを許可してみたいと思います。
アクションはたくさんあるので、CTL+Fで検索すると早いです。
今回許可したいアクションは、EC2インスタンスの起動(StartInstance)と停止(StopInstance)です。それ以外の書き込み系アクションは許可しません。この2つのアクションだけを選択します。
書き込み系アクションで、2つのみが許可されてますね。
次に、アクションの対象の指定です。「リソース」の項目になります。
今回は、「全てのリソース」を選択し、EC2インスタンス全てに対して、上記アクションを適用します。
「リクエスト条件」では、MFA(多要素認証が必要)や、送信元IPアドレスを限定するなどが設定可能となります。
今回はこれらの機能は使用しません。指定せずに進めます。
EC2に対しての権限設定は完了しました。画面の上部に戻り、EC2の横の三角ボタンを押して、詳細画面を閉じます。
再び、サービスの検索に戻ります。
次に、RDSに対するアクションを指定していきます。
検索テキストに「RDS」と入力し、RDS関連のサービス一覧を表示させます。
「アクセスレベル」が表示されます。先ほどのEC2の時と同じ感じで、設定していきます。
表示系と読み込み系の権限は、全て与えます。
書き込み系の権限はですが、今回は何も与えません。
次に、「リソース」の右側の三角ボタンをクリックします。
RDSサービスの全てに対して、指定したアクションを適用します。
これで、2つのサービスに対する権限が完成しました。
画面下部の「ポリシーの確認」をクリックします。
ポリシーの確認画面が表示されます。
今、作成したポリシーの名前を入力し、説明のテキストボックスに、そのポリシーの説明を入力します。
最後に、画面下部の「ポリシーの作成」をクリックします。
ポリシーが作成されました。
「ポリシーフィルター」から、実際に見てみましょう。
先ほど作成した、EC2とRDS向けのポリシーが見えますね。
IAM ユーザーの作成
次に、IAM ユーザーを作ってみましょう。
IAM 管理コンソールの左側メニューから、「ユーザー」をクリックします。
「ユーザーを追加」をクリックします。
まず、ユーザー名を入力します。
次に、「アクセスの種類」から、「AWSマネジメントコンソールへのアクセス」を選択します。
次に、「コンソールのパスワード」です。ここには、ログインの際に使用するパスワードを入力します。
最後に、「パスワードのリセットが必要」です。今回はこの機能は使用しませんので、チェックは入れません。
「次のステップ」をクリックします。
アクセス許可の設定画面が表示されます。
今回は、まずはインラインポリシー(IAM ユーザーに直接、IAM ポリシーを割り当てる)を試してみたいと思いますので、「既存のポリシーを直接アタッチ」を選択します。
ポリシーの一覧が表示されます。
「ポリシーのフィルタ」をクリックし、メニューから、「ユーザーによる管理」にチェックを入れます。
先ほど作成したポリシーが表示されますので、ポリシーの名前を選択します。
「次のステップ」をクリックします。
タグの追加画面が表示されます。
タグを入力しておきます。
「次のステップ」をクリックします。
最後に、画面下部の「ユーザーの作成」をクリックします。
ユーザーが作成されました。
これで、作成したユーザー「User-01」に対して、作成したIAM ポリシーが適用されました。
権限の確認
今回の手順では、ユーザーを作成し、そのユーザーに対して、自分で定義したポリシーを直接適用(インラインポリシー)しました。
次に、そのユーザーでログインして、想定通りの権限であるかを確認してみましょう。
IAM 管理コンソールの画面左側メニューから、「ダッシュボード」をクリックします。
「IAM ユーザーのサインインリンク」が表示され、その下にログインに使用するURLが表示されます。これをコピーします。
コピーしたURLをブラウザーに入力してアクセスします。
ログイン画面が表示されます。
作成したユーザー名、そのパスワード入力してログインします。
ログインすると、画面右上に、ログイン中のユーザー名が表示されます。「User-01」になってますね。
EC2の管理コンソールにアクセスします。
画面左側メニューの「インスタンス」をクリックして、インスタンスの管理画面にアクセスします。
テスト様のAmazon Linuxのインスタンスがあるので、これを使ってみます。
「開始」をクリックして、インスタンスを起動します。
インスタンスの起動が始まりました。成功ですね。今回適用しているポリシーでは、EC2の全てのインスタンスに対して、起動と停止は許可しています。
次に、インスタンスを終了してみましょう。このアクションは、ポリシーで許可されていないはずです。
終了保護されているので、終了ができないようです。
ならば、終了保護を解除してみましょう。
「アクション」から、「終了保護の変更」をクリックします。
「はい」をクリックして、終了保護を無効化します。
エラーとなり、終了保護の解除ができません。
EC2インスタンスに対して、終了の権限がないためですね。
ここで思いました。
Rootユーザーならば、終了保護を外すことができるので、これを外した後では、どの様になるのだろう?
早速、試してみましょう。Rootユーザーでログインして、先ほどのインスタンスの終了保護を外してみます。
Rootユーザーでログインしています。
「はい」をクリックし、終了保護を無効化します。
インスタンスの終了保護が無効化されましたので、先ほどのUser-01で、再度ログインします。
User-01でログインしました。再度、インスタンスの終了を行ってみます。
終了エラーとなり、終了させられません。
権限がないことが検証できましたね。
IAM グループの作成
次は、IAM グループを作成してみましょう。
前回までの手順では、IAM ユーザーに、IAM ポリシーを直接割り当てる、インラインポリシーで行いましたが、今回は、IAM グループを作成し、IAM ポリシーはグループに割り当て、IAM ユーザーを、そのグループに所属させるという方法を行います。
IAM の管理コンソールの画面左側メニューから、「グループ」をクリックします。
「新しいグループの作成」をクリックします。
グループ名の設定画面が表示されます。
グループ名を入力します。
「次のステップ」をクリックします。
ポリシーのアタッチ画面が表示されます。
「ポリシーフィルタ」から、「カスタマー管理ポリシー」を選択します。
ポシリーのアタッチ画面が表示されます。
ポリシー名のところに、先ほど作成したポリシーが表示されますので、適用したいポリシーを選択します。
確認画面が表示されますので、設定内容を確認します。
画面下部の「グループの作成」をクリックします。
グループが作成されました。
次に、作成したグループに、ユーザーを所属させてみます。
追加したいグループ名を選択し、「グループのアクション」から「グループにユーザーを追加」を選択します。
ユーザー名の一覧が表示されます。
追加したいユーザーを選択します。
画面下部の「ユーザーの追加」をクリックします。
グループ名の隣が、そのグループに所属しているユーザーの数になります。User-01を所属させましたので1になりましたね。
これで、IAM ポリシーをIAM グループに適用し、IAM ユーザーはグループに所属するという形ができました。
この教材を使って勉強してます。
「AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト」
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ] 価格:2,618円 |
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円 (2020/8/30 16:09時点) 感想(0件) |