記事のターゲット
- AWS初学者から中級者
- 業務でAWSを扱う方
IAMとは
IAM(Identity and Access Management)は、AWS(Amazon Web Services)のセキュリティおよびアクセス管理サービスです。
以下のような特徴があります。
- アイデンティティ(ID)の管理:
- IAMは、AWSアカウント内のユーザーやグループ、ロールなどのアイデンティティ(ID)を作成、管理、制御します。
- アクセス管理:
- IAMは、ユーザーやアプリケーションがAWSのリソースにアクセスするための権限を制御します。これにより、誰がどのようなアクションを実行できるかを管理できます。
- セキュリティ向上:
- IAMはセキュリティを強化し、AWSリソースへのアクセスを適切に管理することができます。アクセス制御や認証の仕組みを提供し、セキュリティベストプラクティス(AWSが推奨するセキュリティ要綱)を実装します。
- ポリシーの管理:
- IAMポリシーは、アクセス許可を定義するためのJSONデータです。これにより、ユーザー、グループ、ロールなどのアイデンティティに付与される権限が制御されます。
- クロスアカウントアクセス:
- IAMは異なるAWSアカウント間でのアクセスを容易にし、クロスアカウントのアクセスを管理できます。
- 一時的な認証情報の提供:
- ロールを使用することで、一時的なアクセス許可を付与し、安全かつ一時的な認証情報を提供します。
IAMユーザーとは
IAMユーザーはAWSアカウント内に複数作成できるユーザーのことです。
ここでいうAWSアカウントというのはクレジットカードを使用して一番最初に作成される全権限を持ったユーザーのことです。このアカウントを使用して普段の業務を行うことはセキュリティ的にかなり危険であり推奨されません。そのためIAMユーザーという子アカウントのようなものを作成して運用していく必要があります。
IAMユーザーには以下の2つの認証方法を設定できます。
1.マネジメントコンソールにログインするためのパスワード
2.AWS CLIなどのプログラムがAWSリソースへアクセスするためのアクセスキーとシークレットアクセスキー
IAMユーザーの作成時には1のパスワード認証のみを設定してアクセスキーとシークレットアクセスキーは必要に応じて発行するという運用が一般的です。
IAMユーザーを発行した後は基本的にそのユーザーを使用してAWSを操作していきます。
ただし、このIAMユーザーは発行した時点では何の権限も持っていないため後から権限を追加していく必要があります。その際に使用するのがIAMポリシーやロールです。これらについてはこの後説明していきます。
IAMグループとは
ポリシーやロールを説明する前に比較的イメージしやすいグループからまとめます。
IAMユーザーが例えば1000個作成されていたとして、その一つ一つにポリシーをアタッチ(権限を与えること)するのは現実的ではありません。
その際に使用されるのがIAMグループです。IAMグループには複数のIAMユーザーを登録することができ、各ユーザーに与えたい権限をそのグループに1度アタッチするだけでグループ内のユーザー全てに権限が反映されるようになります。これにより、1000回必要だったアタッチ操作を1度に行うことができます。
IAMポリシーとは
IAMポリシーとは許可/拒否された権限がJSON形式で書かれた文書のことです。
各IAMユーザーやグループ、ロールに対してポリシーをアタッチすることで初めて、権限を与えられ、AWSのサービスをりようすることができます。
もともとIAMユーザーは作成時点では何の権限もなく、アクセスすらできません。なので作成時点でポリシーをアタッチすることが基本です。※AWSのベストプラクティスでは作成時点で適切なIAMグループに所属させることが推奨されています。
個人的にはゲームで拾える新たにスキルが使用できるようになるアイテムをイメージしています。デフォルトでは回転切りができない状態だったが、制限が解除されて回転切りが使用できるようになるイメージです。
IAMロールとは
IAMロールとはその名の通り役割です。複数のIAMポリシーを組み合わせた役割を作成しておいて、必要な時にだけそれを使用するイメージです。
例として、学校の日直で考えていきます。
日直という役割は、学級日誌を書けることと朝会等の司会ができるという権限を与えられています。これは日直ではない生徒は許可されていません。
日直が決まっていなければ全ての生徒が司会をできてしまうのでカオスになります。そこで役割を決めて日ごとに順番を回して秩序を保っています。
これをIAMユーザーで考えてみると、ユーザーには普段ほとんどの権限を与えない状態にしておき、必要な時にのみ役割を与え(スイッチロールと呼ぶ)各サービスを使用させるようにします。
これによりセキュリティの基本である最小権限の法則を守ることができます。
また、IAMロールはLambda等のAWSサービスに権限を与えるためにも使用します。AWSのサービス同士を連携させる場合にもそれぞれの使用権限が必要なのでその際に力を発揮します。