こんにちは!らるちゃんです。
今回は、理解が曖昧だったIAM(Identity and Access Management)について、勉強し直したので、備忘も兼ねて記事にしてみました。
1. IAMとは?
IAM(Identity and Access Management)は、AWSリソースへのアクセスを管理するためのサービスです。まずは大まかに以下の3点を制御するものだととらえてOKです。
- 誰が(ユーザーが、アプリケーションが etc..)
- どのリソースに(EC2に、S3に、RDSに etc..)
- どの操作が許可されているか(読み取り可能、書き込み可能、削除可能 etc..)
2. IAMの基本構成要素
続いて、IAMを構成する主要な4要素について確認しておきましょう。
① IAMユーザー ② IAMグループ ③ IAMロール ④ IAMポリシー
① IAMユーザー
AWSアカウント内の個別のユーザー。コンソールログイン用のパスワードや、プログラムによるアクセス用のアクセスキーを持ちます。
ちなみに、AWS アカウントを初めて作成するときは、アカウントのすべての AWS リソースに完全にアクセスできるデフォルトの認証情報である、ルートユーザーが作成されます。
基本的には、このユーザは使用せず、日常的なタスク用の管理者ユーザー(IAMユーザー)を作成することがAWSのベストプラクティスとされています。
② IAMグループ
複数のユーザーをグループ化し、一括で権限を適用できる仕組みです。
グループの目的は、権限の管理を簡単にかつ正確に行うことです。ユーザーに対する権限の付与漏れや過剰付与などのミスを防ぎやすくなります。
③ IAMロール
AWSリソースや外部サービスが、一時的に特定の権限を取得するための仕組みです。
少しイメージしづらいかもしれませんが、例えばEC2上のアプリケーションからS3のバケットにアクセスする場合を考えてみて下さい。
本来であれば、設定ファイルにS3にアクセスするための認証情報を持たせるところですが、アクセスを一時的に許可するIAMロールを付与することで、認証情報を記述する必要がなくなり、セキュリティの向上に寄与します。
④ IAMポリシー
IAMポリシーは、どのAWSサービス(Action)の、どのリソース(Resource)に対して、許可/拒否(Effect)するかを定義し、権限の制御を行います。
ポリシーには、インラインポリシーと管理(マネージド)ポリシーがあります。
インラインポリシーは特定のユーザーやグループ、ロールに直接埋め込むポリシーです。一方、管理ポリシーは再利用可能な独立したポリシーで、複数の対象に一括適用できます。
3. IAMの権限付与の流れ
IAMの構成要素について理解したところで今度は、IAMを利用して権限を付与する流れを具体的に見てみましょう。以下の3ステップとなります。
- IAMポリシーの作成(定義)
- IAMポリシーをユーザー、グループ、ロールに適用
- リソースにアクセス
ステップ1: ポリシーを作成
アクセス権限を定義するポリシーを作成します。以下は、特定のS3バケットに対する「読み取り専用」権限を設定するポリシーの例です:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}
ステップ2: ユーザーまたはロールにポリシーを適用
作成したポリシーを、IAMユーザー、 IAMグループ、またはIAMロールに割り当てます。
ステップ3: リソースにアクセス
ポリシーで許可されたユーザーやリソースは、AWSサービスにアクセス可能になります。
4. IAMを使うメリット
① セキュリティの向上
IAMを利用すると、アクセス権限を細かく設定できるため、リソースの不正使用や誤操作を防ぐことができます。
② 管理の効率化
IAMグループやロールを活用すれば、複数ユーザーへの一括設定や動的な権限付与が可能になります。
③ 詳細なトラッキング
IAMはAWS CloudTrailと連携し、誰がどのリソースにアクセスしたかを追跡できます。
5. ベストプラクティス
1. ルートユーザーの利用を最小限に
AWSアカウント作成時のルートユーザーは、高い権限を持つため、普段はIAMユーザーを利用しましょう。
2. 最小権限の原則を徹底
必要最小限のアクセス権のみを付与し、不必要な権限は避けます。
3. MFA(多要素認証)の有効化
特に重要なIAMユーザーにはMFAを設定し、セキュリティを強化します。
4. ロールの活用
アプリケーションやAWSリソースには、IAMユーザーではなくロールを使用することで、アクセスキー管理の手間を省けます。
5. 定期的なポリシーのレビュー
定期的にポリシーを確認し、不要な権限を削除します。
6. まとめ
いかがだったでしょうか。
IAMは、AWSリソースのセキュリティを確保し、アクセスを効率的に管理するための基盤となるサービスであることが分かったと思います。本記事で紹介した基本概念や設定方法を実践しながら、IAMの理解を深めてみてください!
コメント