見出し画像

AWS_IAMでユーザーにパーミッションを与える #142日目

AWS Cloud Questからの学びをアウトプットしています。
本日はIAM関係のまとめです。

↓AWS Cloud Questの登録方法はこちら


今回のクエストは以下の内容でした。

[課題]
チームの各エンジニアが同じパーミッションを持っている状態にしたい。現在はアクセス制限が一様に書けられておらず、セキュリティ等に不安がある。また、ゆくゆくはパーミッションの調整ができるようにしておきたい。
 
[解決策]
IAMでユーザーグループを作成し、パーミッションを一元管理しましょう


IAM (Identity and Access Management)とは?

ユーザーやユーザーグループを追加/作成したり、それらに付与するポリシーを設定し、AWSリソースへのアクセスにパーミッションを与えたり、アクセスできないようにしたりといったマネージができるサービスです。AWSのサービスとリソースへのアクセスを安全に管理できます。

デフォルトで用意されているポリシー(=パーミッション)にはEC2やRDSの読み取り専用(=read only)アクセス等があります。ポリシーファイルを作れるツールもあるので、自分でパーミッションを作成することも可能です。

ポリシーとはAWSのオブジェクトで、パーミッションを定義しているものです。AWSはIAMプリンシパル(ユーザーやロール)がリクエストを出す度にこのポリシーを審査し、リクエストを通すか拒否するか判断しています。


また、IAMで設定するユーザーやユーザーグループの特徴は以下です。

  • IAMユーザーをIAMグループに追加できるし、IAMユーザーは複数のIAMグループに属することができる。

  • 特定のユーザーに同じパーミッションを与えることができる

  • IAMグループに含められるのは「ユーザーのみ」で、例えばIAMグループの中にIAMグループを含める、などはできない。

  • IAMグループはデフォルトでは存在しないため、利用したい場合は作る必要がある。

  • AWSコンソールやディベロッパーツールにアクセスできるように設定できる

  • administrator permissionsを付与されたIAMユーザーと最上位であるrootユーザーは似ているが別物。

  • 追加のセキュリティ対策として、各ユーザーに多要素認証(MFA=Multi Factor Authentication)を適用することができる。

IAMロールという、有効期限のある一時的な認証情報を作成することもできます。IAM ロールでは認証情報が誤って露出した場合のリスクが軽減されるため、長期的なアクセスキーよりも安全です。


IAMでグループやユーザーを設定するには?

IAMサービスのページに飛び、まずはユーザーグループを作成します。Create Groupというボタンをクリックです。

作成画面ではまずグループ名を付けます。ここは任意ですが、後ほど管理しやすい名前が良いと思います。合わせてこのグループに付与するパーミッションを選択します。今回はデフォルトのパーミッションのうち、「EC2ReadOnlyAccess」を選択してEC2には読み取り専用でアクセスするようにします。

ユーザーグループはたったこれだけで作成できます。

無事に作成されました。

続けてユーザーを登録します。Userタブに行って「Add users」を押下します。

ユーザー設定はやや長いです。まずはユーザー名とパスワードやアクセスキーの設定をします。

次にユーザーグループの設定です。先ほど作成したグループに属するようにします。

タグ付けもできます。大人数を管理するときには便利です。

入力内容を確認してユーザーを追加します。

ユーザーの追加が完了した時、Secret access keyがダウンロード可能になります。これはこのタイミングでしかダウンロードできないため、万が一紛失した場合は再度ユーザーを追加し直さないといけません。

このアクセスキーをクリックすると、AWSのログインページに遷移します。


ちなみにユーザーグループのパーミッションは後から変更することが可能です。そのグループのページで「Add permissions」→「Attach policies」を押下すれば新たなパーミッションを追加できます。


余談ですが、ユーザー自身でパスワード変更ができるように設定する場合、パスワードポリシーを作って脆弱なパスワードを設定しないように制限する必要があります。


今回は比較的シンプルな内容でしたね。

ここまでお読みいただきありがとうございました!!

この記事が気に入ったらサポートをしてみませんか?