| URL |
aws |
|---|---|
| タイプ | アイデンティティ管理・アクセス制御 |
| 運営者 | Amazon.com |
| 営利性 | 営利 |
| 登録 | 必要 |
| 開始 | 2011年5月3日 |
AWS Identity and Access Management(エーダブリューエス アイデンティティ アンド アクセス マネジメント、略称: IAM、アイアム)は、Amazon.comがAmazon Web Services(AWS)の一部として提供する、AWSのサービスとリソースへのアクセスを管理するためのWebサービスである。AWSアカウントの中で「誰がサインインできるか」(認証)と「誰が何をしてよいか」(認可)を制御する仕組みで、ユーザー、グループ、ロールといったアイデンティティに対して、JSON形式のポリシー文書で権限を定義する。
2010年9月にプレビュー版として公開され、2011年5月3日に一般提供が始まった。IAM自体の利用に追加料金はかからない。AWSは2021年の時点で、AWSのAPIへの呼び出しはすべてIAMによる権限の確認を経ると説明しており、同年には世界全体で毎秒4億件を超える権限確認を処理していた。
AWSアカウントを作成すると、そのアカウントのすべてのサービスとリソースに対する完全な権限を持つ「ルートユーザー」と呼ばれる1つのサインインIDができる。AWSは、ルートユーザーを日常的な作業に使わず、IAMで管理者や開発者などの別のアイデンティティを作成して、それぞれの作業に必要な範囲のアクセス権を与えることを推奨している。
IAMで設定されたアイデンティティは、パスワードやアクセスキーといった認証情報を使ってAWSにサインインする(認証)。その後、リソースへのアクセスが要求されると、AWSはそのアイデンティティに適用されているポリシーを調べ、許可されている場合にだけ操作を認める(認可)。認可されたアイデンティティは、たとえばAmazon Elastic Compute Cloudのインスタンスを起動したり、Amazon Simple Storage Serviceのバケットを削除したりといった操作を実行できる。
IAMは、1つのAWSアカウントの中に複数のユーザーを作成し、それぞれに固有の認証情報と権限を与えることで、パスワードやアクセスキーを共有する必要をなくし、ユーザーごとのアクセスの有効化や無効化を容易にすることを目的として導入された。
IAMユーザーは、AWSアカウント内に作成されるアイデンティティで、人だけでなくアプリケーションを表すこともある。新しく作成されたユーザーは何の権限も持たず、ポリシーによって権限を与えられる。IAMグループはユーザーの集まりで、部門や職務などのまとまりに対してポリシーを一括して適用するために使う。ユーザーは複数のグループに所属でき、ユーザー個別にポリシーを付けるよりもグループ単位で権限を管理することが推奨されている。
IAMロールは、ユーザーと同じくポリシーで権限を指定するアイデンティティだが、ユーザーとは異なりそれ自体で直接AWSのAPIを呼び出すことはできず、EC2インスタンスなどの実体が引き受けて使う。ロールを引き受けた実体には、有効期限付きの一時的な認証情報が発行される。たとえば、EC2インスタンス上で動くアプリケーションからS3のバケットへアクセスさせたい場合、S3への権限を持つロールを作成してインスタンスに割り当てる。2012年6月に導入されたEC2インスタンス向けのロールにより、それまで必要だった、インスタンスへのアクセスキーの配布と定期的な更新が不要になった。
IAMは、AWS外部のアイデンティティにアクセスを許す仕組みも備える。ロールの導入より前の2011年8月に追加されたIDフェデレーションでは、企業内で既に管理されているユーザーに対して、IAMユーザーを個別に作成することなく、AWS Security Token Service(STS)が発行する有効期限付きの一時的なセキュリティ認証情報を通じてAWSのリソースへのアクセスを許可できる。2022年7月に追加されたIAM Roles Anywhereは、X.509証明書を一時的な認証情報と交換する仕組みによって、オンプレミスのサーバーやコンテナなどAWS外部で動くワークロードにもロールを使えるようにしたものである。Publickeyは、それまで一般的だったアクセスキーをオンプレミス側のソフトウェアに持たせる方式には漏洩時のリスクがあり、必要なときだけ一時的に使えるアクセス権を渡すことでリスクを下げる仕組みだと解説している。
IAMポリシーは、権限を定義するJSON形式の文書である。ポリシーはバージョンと1つ以上のステートメントからなり、各ステートメントでは、許可か拒否かを表すEffect、対象となる操作を列挙するAction、対象となるリソースを示すResource、条件を指定するConditionなどの要素を記述する。ポリシーはユーザー、グループ、ロールといったアイデンティティに付けるほか、S3のバケットなどのリソース側に付けることもできる。2011年の一般提供時からポリシー文書による権限制御が採用されており、操作とリソースの単位で細かく権限を指定し、条件によって適用場面を制御するというこの方式について、AWSは2021年の時点でもIAMの中核をなすと述べている。
ユーザーに必要な最小限の権限だけを与える最小権限の原則はアクセス管理全般の基本的な考え方であり、AWSもIAMの利用において最小特権への移行を掲げている。これを支援する機能として、2019年12月に追加されたIAM Access Analyzerは、ポリシーを分析して外部からアクセスできるリソースを特定し、2021年にはポリシーの検証や、実際のアクセス履歴に基づく最小権限ポリシーの生成に対応した。2023年12月には、一定期間使われていないロール、アクセスキー、パスワード、権限を検出する機能が加わった。
IAMは一般提供時から、ユーザーのアクセスキーやパスワードとあわせて多要素認証(MFA)デバイスを集中管理する機能を備えていた。MFAの要素としては、2022年6月にWebAuthn、2024年6月にパスキーが使えるようになった。Publickeyは、IAMがAWSへのログインと権限を管理するサービスであるため、ここで不正アクセスが起きれば甚大な影響をもたらし得ると指摘している。AWSは2023年10月、2024年半ばからAWS Organizationsの管理アカウントのルートユーザーでマネジメントコンソールにサインインする際にMFAの有効化を必須とし、その後対象を拡大していく方針を発表した。