AWSのIAMとは
AWSのIAMとは、AWSのサービスやリソースへのアクセスを管理するためのツールです。これを使うと、AWSアカウントで誰が何を行うことができるのかを設定できます。これは「認証」と「認可」の二つのプロセスで行われます。
認証
認証は、「サービスの利用者が本人であること」を確認するためのステップです。例えば、ユーザー名とパスワードを入力してログインすることは認証の一部です。
認可
認可は、「サービスの利用者が特定の操作を行う権限を持っているかどうか」を確認するためのステップです。例えば、あなたがAWSアカウントにログインする権限を持っていても、Amazon S3へのアクセス権限がなければ、S3バケットの作成や削除などの操作はできません。
IAMでは、ユーザー、グループ、ロール、ポリシーという4つの要素を作成して管理します。これらの要素を組み合わせて、誰が何を行うことができるのかを詳細に設定することができます。これから、これらの要素とそれぞれの役割について詳しく説明していきます。これらの概念を理解することで、AWSのIAMを効果的に利用することができます。
ルートユーザとは
AWSには、「ルートユーザ」と「IAMユーザ」の2種類のユーザが存在します。
ルートユーザ
ルートユーザは、AWSアカウントを作成した際に自動的に生成される最初のアイデンティティです。アカウント作成時に指定したメールアドレスとパスワードを使用して、AWS管理コンソールにサインインすることができます。ルートユーザはアカウントの所有者であり、アカウントに対するすべての操作権限を持っています。
IAMユーザ
通常、アカウント作成後、まずルートユーザを使用して管理者権限(AdministratorAccessポリシー)を持つIAMユーザを作成します。その後は、このIAMユーザを使用して日常の作業を行います。
管理者権限を持つIAMユーザは、ルートユーザが限定されているいくつかの操作を除き、ルートユーザが実行できるほぼすべての操作を実行できます。
セキュリティのベストプラクティス
セキュリティの観点から、以下の3つの対策が推奨されています。
- ルートユーザの使用を最小限に抑える
- ルートユーザの多要素認証を有効にする
- ルートユーザのアクセスキーを削除する
IAMユーザ
IAMユーザは、AWSリソースにアクセスするためのアカウントです。これには、人だけでなくアプリケーションも含まれます。
- 人の場合:会社のITチームのメンバーがAWSコンソールやCLIから、AWSリソースにアクセスするためにIAMユーザが作成されます。例えば、EC2インスタンスの起動や停止ができる権限を持つユーザです。
- アプリケーションの場合:会社のWebアプリケーションがS3バケットにファイルをアップロードするために、専用のIAMユーザが作成されます。アプリケーションはこのユーザの認証情報を使ってAWSにアクセスします。
IAMグループ
グループは、複数のIAMユーザをまとめて管理するためのものです。グループに対してポリシーを適用することで、グループ内の全ユーザに同じ権限を付与できます。
例えば、「開発者グループ」を作成し、グループに対して特定のリソースへのアクセス権限を設定します。
- グループには他のグループやロールを所属させることはできません。
- 同一ユーザは最大10個のグループに所属できます。
IAMポリシー
ポリシーは、JSON形式のドキュメントで、どのユーザやグループがどのリソースにどのようにアクセスできるかを定義します。
IAMポリシーの主要要素
- Version:ポリシーのバージョンを指定します。最新バージョンである2012-10-17の使用が推奨されています。
- Statement:ポリシーの中核部分であり、以下の要素を含みます。
- Sid:ステートメントを識別するためのオプションのIDです。
- Effect:Allow(許可)またはDeny(拒否)を指定します。
- Action:許可または拒否する具体的なアクションを指定します。
- Principal:アクションをリクエストする主体(ユーザ、ロール、アプリケーション)を指定します。
- Resource:アクションが適用されるリソースを指定します。
- Condition:アクセスを許可または拒否する条件を指定します。
IAMポリシーの種類
AWSのIAMには、6種類のポリシーがありますが、ここでは最も頻繁に使用される「アイデンティティベースのポリシー」と「リソースベースのポリシー」について説明します。
アイデンティティベースのポリシー
アイデンティティベースのポリシーは、IAMユーザ、グループ、またはロールにアタッチされ、そのアイデンティティがどのリソースに対してどの操作を実行できるかを定義します。アイデンティティベースのポリシーには、以下の3つの種類があります。
AWS管理ポリシー
これは、AWSが作成および管理するポリシーです。各AWSサービスに対してフルアクセス権限や読み取り権限などのポリシーがあらかじめ用意されています。
例:AmazonS3ReadOnlyAccessポリシーでは、アカウント内の全てのS3バケットに対して、Get/Listの操作が許可されています。
カスタマー管理ポリシー
これは、利用者が作成および管理するポリシーです。AWS管理ポリシーに比べて、より細かくアクセス権限を設定できます。
例:特定のS3バケットに対して特定の操作権限を付与するポリシーを作成することができます。
インラインポリシー
これは、特定のIAMユーザ、グループ、またはロールに専用に作成され、そのアイデンティティに直接埋め込まれるポリシーです。インラインポリシーはアイデンティティの一部と考えられ、アイデンティティを削除するとインラインポリシーも削除されます。
リソースベースのポリシー
リソースベースのポリシーは、特定のAWSリソースにアタッチされ、そのリソースに対して誰がどの操作を実行できるかを定義します。このポリシーは、プリンシパル(リクエストを行う主体)を指定することで、「誰が」そのリソースにアクセスできるかを決定します。