今回はIAM設計の基本的な考え方を解説します。AWS環境の構築において、IAM設計は必須です。IAM権限はカスタマイズが自由である半面、設計が難しくなるためバランスが必要となります。AWS初心者の方は、AWSで用意された権限を設定し、基本的な考え方が理解できてからカスタマイズをするようなやり方が良いのではないかと考えます。
私は現役のAWSエンジニアで、5年以上AWS環境の設計や構築業務を日々行っています。また、AWS認定ソリューションアーキテクトアソシエイトの資格保持者です。
IAM設計の基本を解説
この記事では、主にIAMユーザーにおける権限の設計について説明します。
IAM権限の考え方
IAM設計は「ユーザーに対して必要最小限の権限しか与えない」という考え方が基本となります。想定するユーザーが操作するAWSのサービス個別に対する権限を付与していくイメージです。そのためには、インラインポリシーでカスタマイズする必要があります。
AWS初心者のIAM設計
設計者のAWS経験が浅く、IAMポリシーのカスタマイズが難しい場合は、AWSが用意したポリシーを使いましょう。用途によって、下記の2種類のポリシーを使い分けましょう。AdministratorAccessは、ほとんどのAWSサービスの新規作成、設定変更、参照が可能となります。ReadOnlyAccessは、参照のみの権限となります。
・開発者、管理者:AdministratorAccess
・参照者 :ReadOnlyAccess
ユーザーへの権限付与方法
IAM Userに対しては、IAMポリシーで権限を付与しますが、直接ポリシーをアタッチするのではなく、IAMグループで権限を制御する方法が一般的です。IAMグループにポリシーをアタッチし、適切なグループにIAMユーザーを割り当てます。
IAM Roleの用途
IAM Roleについては、ユーザーではなくEC2やAWSのサービスに対して権限を与える時に使用するケースが多いです。例えば、特定のEC2からシステムログを保存するために、S3へのアップロード権限を持たせるような場合に使用します。
IAMの詳細設計書の書き方
IAM(Identity and Access Management)の詳細設計書を作成する際は、以下のような情報を含めることが一般的です。
概要
IAMの役割と目的を簡潔に説明する
IAMポリシーの役割について説明する
IAMユーザー
IAMユーザーの設定値とIAMグループへの割り当て方法を説明する
IAMユーザーのロールについて説明する
IAMユーザーのアクセスキーとシークレットキーの管理方法について説明する
IAMグループ
IAMグループの設定値とIAMユーザーの割り当て方法を説明する
IAMグループのポリシーについて説明する
IAMロール
IAMロールの設定値とポリシーの割り当て方法を説明する
IAMロールの前提条件と制限事項について説明する
IAMポリシー
IAMポリシーの設定値と適用方法を説明する
ポリシーのエディットと削除について説明する
まとめ
IAMは最初の設計がブレてしまうと後々の運用が難しくなります。将来的にIAMユーザーの増加や権限のカスタマイズが見込まれるのであれば、汎用的な設計を心がけると良いと思います。
・IAMユーザーの権限は、IAMグループで制御。
・IAMグループに各種IAMポリシーをアタッチする
・IAM Roleはシステムにアタッチする
・慣れないうちは、AdministratorAccessとReadOnlyAccessを使い分ける