AWS IAM
AWS リソースへのアクセスを安全に制御するための認証・認可サービスで、ユーザー、グループ、ロール、ポリシーによるきめ細かなアクセス管理を提供する
概要
AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのサービスです。IAM ユーザー、グループ、ロールを作成し、JSON 形式のポリシーでアクセス権限を定義することで、「誰が」「どのリソースに」「どのような操作を」実行できるかをきめ細かく制御できます。IAM は追加料金なしで利用でき、すべての AWS アカウントに標準で組み込まれています。多要素認証 (MFA) の強制、パスワードポリシーの設定、アクセスキーのローテーションなどのセキュリティ機能を備えています。IAM ロールを使えば、EC2 インスタンスや Lambda 関数に一時的な認証情報を付与でき、長期的なアクセスキーの管理が不要になります。IAM Access Analyzer は外部からアクセス可能なリソースを自動検出し、意図しないアクセス許可を特定します。
ポリシーの評価ロジックと最小権限の実践
IAM のアクセス制御は JSON 形式のポリシードキュメントで定義され、Effect (Allow/Deny)、Action、Resource、Condition の 4 要素で構成されます。複数のポリシーが適用される場合、明示的な Deny が最優先され、次に明示的な Allow が評価され、どちらにも該当しなければ暗黙の Deny となります。この評価ロジックを理解することが、意図しないアクセス許可や拒否を防ぐ鍵です。最小権限の原則を実践するには、AWS 管理ポリシーではなくカスタマー管理ポリシーを作成し、業務に必要な Action と Resource だけを明示的に許可します。Condition 要素を活用すれば、送信元 IP アドレス、MFA 認証の有無、リクエスト時刻などの条件でアクセスをさらに絞り込めます。Azure RBAC はロール定義をスコープ (管理グループ、サブスクリプション、リソースグループ) に割り当てる方式で、上位スコープの権限が下位に継承されますが、IAM にはこのような階層的な継承はなく、各ポリシーで明示的にリソースを指定する設計です。
IAM ロールと一時的な認証情報
IAM ロールは長期的なアクセスキーを使わずに AWS リソースへのアクセスを委任する仕組みで、セキュリティの要です。EC2 インスタンスにインスタンスプロファイル経由でロールをアタッチすれば、アプリケーションは自動的に一時的な認証情報を取得して AWS API を呼び出せます。Lambda 関数の実行ロール、ECS タスクロール、クロスアカウントアクセス用のロールなど、用途に応じたロール設計が求められます。一時的な認証情報は STS (Security Token Service) を通じて発行され、最大 12 時間の有効期限が設定されます。アクセスキーのローテーション管理が不要になるため、キーの漏洩リスクを根本的に排除できます。アクセス制御の専門書籍 (Amazon) では、ロール設計のパターンが体系的に解説されています。
Organizations と IAM Identity Center による大規模管理
組織規模が拡大すると、個々のアカウントで IAM ユーザーを管理する方式は破綻します。IAM Identity Center (旧 AWS SSO) を導入すれば、1 つの ID ソースから複数の AWS アカウントへのアクセスを一元管理でき、ユーザーはシングルサインオンで各アカウントに切り替えられます。Service Control Policy (SCP) を Organizations と組み合わせれば、アカウント単位で許可する操作の上限を設定でき、個々の IAM ポリシーで過剰な権限を付与しても SCP で制限できます。権限の棚卸しには IAM Access Analyzer と CloudTrail のログを組み合わせ、過去 90 日間使用されていない権限を特定して削除するサイクルを四半期ごとに実施するのが推奨されます。IAM Access Analyzer は外部からアクセス可能なリソースも自動検出するため、意図しない公開設定の発見にも役立ちます。ルートユーザーには必ず MFA を設定し、日常業務では使用しないことが大前提です。