カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(16)IAMについて

AWSを学んでみようということで、今回は、IAMについて調べてみました。実際の使って、使い方も確認してみました

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円
(2020/8/30 16:09時点)
感想(0件)

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です