2023/11/15に公開
2023/12/16
本記事ではAWSを扱う上で欠かせない「IAM」について、以下の点で説明していきます。
IAMには上記のように様々な種類があり、最初はややこしく感じますが、本記事を読み終わった頃には理解できているはずです。個人的にはIAMを理解できること≒IAMポリシーの使われ方が理解できることであると思っています。IAMポリシーを制して、IAMを制しましょう。
AWSで扱っているサービスの「認証」と「認可」を設定するサービスになります。認証とは、ユーザやデバイスなど「誰であるかを特定する」ことです。認可とは、「何ができるか」といったように、ある権限を持っているかを確認することです。この認証と認可を設定するサービスをまとめてIAMと言います。図にすると以下のようになっており、IAMという枠組みの中にIAMポリシー、IAMユーザー・・などがあるわけです。
IAMがAWSサービスの認証・認可を提供するサービスである、という前提を踏まえると、IAMポリシーとは「AWSサービスの認証・認可を定めるルール」であると言えます。そしてこのIAMポリシーこそが非常に重要な概念です。以下の図を見てみましょう。
図では、2つのポリシーを示しています。1つ目の「AmazonS3ReadOnlyAccess」は「S3に対して読み取り権限を持つルール」と考えてください。2つ目の「AmazonEC2FullAccess」は「EC2に対してフルアクセス権限を持つルール」と考えてください。このように「〇〇というAWSサービスに対して△△という権限を与えるルール」を定めるのが、IAMポリシーです。AWS側で事前に定義されているルールもありますし(マネージドポリシー)、自分自身で作成できるルール(カスタムポリシー)もあります。
IAMがAWSサービスの認証・認可を提供するサービスである、という前提を踏まえると、IAMユーザーとは「AWSサービスの認証・認可を受けるユーザ」であると言えます。AWS内のアカウントのようなものです。基本的にはこのIAMユーザーを個人毎に発行して、利用していきます。ここで各IAMユーザーがどういった認証・認可を受けるかを定める必要があります。その際にIAMポリシーを関連付けます。以下の図を見てみましょう。
例えばSukeというIAMユーザーを作成します。ここにどういった認証・認可をSukeが受けるかを決めます。この時にIAMポリシーを関連付けます。今回は「AmazonEC2FullAccess」を関連付けることにします。同じ要領でAtsuというIAMユーザーに「AmazonS3ReadOnlyAccess」を関連付けます。
上記のように設定すると、SukeはEC2を操作でき、AtsuはEC2を操作できません。このようにユーザー毎に必要な権限(ポリシー)を関連付けて利用していきます。この関連付けによって、誰が何をできるかを決定するのです。
IAMがAWSサービスの認証・認可を提供するサービスである、という前提を踏まえると、IAMユーザーとは「AWSサービスの認証・認可を受けるグループ」であると言えます。これは同じ権限を持たせたいユーザーがいる場合には、IAMグループを作成し、そこにユーザーを所属させます。そしてIAMグループにポリシーを関連付けることで、そのグループの中にいるIAMユーザーにポリシーの権限を与えることができます。これによって一括で権限を管理できます。管理者、開発者・・などと言ったように実際の役割に応じて、IAMグループ毎に分けて利用します。
画像のように設定すると、IAMユーザーであるSukeとAtsuは「AmazonEC2FullAccess」の権限を持つことになります。
IAMがAWSサービスの認証・認可を提供するサービスである、という前提を踏まえると、IAMロールとは「AWSサービスの認証・認可を受ける役割」であると言えます。ここで言う役割≒AWSサービスであると考えてください。先ほどのユーザーはイメージが付きやすいと思いますが、これがEC2などのAWSサービスになります。例えばEC2のロールに「AmazonS3ReadOnlyAccess」を関連付けます。そうすると、EC2はS3の読み取りが可能になります。
EC2はS3の読み取りが可能になる、とはどういうことかを説明します。特に何も設定しないと、デフォルトではEC2などの各AWSサービスは他のAWSサービスに対して何かすることができません。例えばS3の情報を参照したい場合や、RDSに書き込みを行いたい場合があっても、それらの操作はできないようになっています。そこで、ロールの登場です。あるポリシーを関連付けたロールをAWSサービスに関連付けることで、ポリシーで定義してある操作が可能になります。
いかがだったでしょうか。複雑そうに見えるIAMですが、以下のようにまとめることができます。
権限を持つ側として3種類出てきましたが、大きく分けると「AWSサービスを操作するユーザーの権限」か「AWSサービスを操作するAWSサービスの権限」か、です。
このようにIAMを使いこなして、セキュアなインフラ環境を構築していきましょう。
目次