#IAMとは
IAMとはAWSの権限管理のサービスのことです。
セキュリティーにも関連しているため、AWSを触る上でとても大切なサービスです。
簡単に言うとユーザーアカウントを複数作ったり、作成したアカウントにAWSの内容を編集するための権限を付与するものです。
AWS自体が実務ではルートユーザー(フル権限のアカウント)を使うことを推奨しておらず、IAMでアカウント作成して実務で編集をすることを推奨しています。
##ユーザーについて
AWSを触る際に、管理画面にアクセスしたり、プログラム側からアクセスするときに必ずIDやパスワードなどのユーザー情報が必要になります。
その際にユーザーにはそれぞれ「ルートユーザー」と「IAMユーザー」の2種類が存在します。
上記にも記載しましたが、ルートユーザーを使うことは基本的に推奨していません。
なぜならルートユーザーはAWSを編集する上で、全ての権限を持っているからです。
つまり、設定の変更、各ユーザーの権限の変更、料金の閲覧、パスワードの変更など、ルートユーザーでログインすると何でもできてしまいます。
特に企業などで複数人で作業を行うときは、それぞれIAMユーザーで個別にアカウントを付与して、そのアカウントで作業を行うことがセキュリティー的にも望ましいとされます。
また、ルートユーザー自体は権限の調整ができません。
###ルートユーザーとIAMユーザーについて
IAMユーザーはルートユーザーの下に、それぞれ個別に複数作成することができます。
そして、個々にAWSで何ができるかなどの権限を付与できます。
業務での開発や運用はIAMユーザーで行うのが基本です。
##アクセスキー(認証情報)について
アカウントを作成するときにアクセスの種類を選択することができます。
AWSの管理画面へのパスワードでのアクセスと、プログラムからアクセスキーを使ったアクセスです。
プログラムによるアクセスを可能にすると、アクセスキーIDとシークレットアクセスキーが発行されます。
このアクセスキーIDとシークレットアクセスキーがあれば、AWSにどこからでもアクセスできるようになります。
上記の図の説明ですが、
ルートユーザーから「Test」というアカウントでIAMユーザーを作成してもらいます。
「Test」にはEC2を作成できる権限を付与してます。
そして、「Test」に管理画面にログインするためのパスワードと、プログラムからアクセスするためのアクセスキーを発行します。
##IAMグループ
IAMグループとは、IAM ユーザーの集合です。
IAMグループを使用すると、複数のユーザーに対してアクセス許可を指定でき、それらのユーザーのアクセス許可を容易に管理することができます。
##IAMポリシー
JSON形式で記述された設定ファイルのことで、AWSで操作できる権限を設定しています。
「誰が」「どのAWSサービスの」「どのリソースに対して」「どんな操作を」「許可する(許可しない)」などを設定しています。
IAMアイデンティティ (ユーザー、ユーザーのグループ、ロール)またはAWSリソースにアタッチして使用します。
IAMアイデンティティとAWSリソースについては後ほど記載します。
IAMポリシーの例)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
]
}
上記の例のIAMポリシーで説明します。
まず「Version」は使うポリシーのバージョンを記載します。
そして、重要なのは「Statement」の中身です。ここに権限の内容を記載します。
Effect
「Effect」には許可するか、許可しないかを記載します。
Allowは許可する。Denyは許可しない。
Action
「Action」には操作の内容を記載します。
「s3:Get」はS3から何かを取得するということです。後ろにある「*」は全てという意味なので、下記ではS3から全てのものを取得することができるということです。
「s3:List」はS3から何かを参照するということです。ここではS3の全てを参照することができるということです。
Resource
「Resource」にはIAM「Action」が影響するリソースの範囲を指定することができます。「*」を入れると、全てのリソースが影響範囲に含まれます。
こういったポリシーを自分で書くこともできますが、よく使いそうなポリシーに関してはAWSがもともと用意してくれているので、それを認証の対象にアタッチするだけで簡単に使えます。
IAMポリシーに関してはもっと奥が深いため、全てを説明すると長くなるため、別の記事で改めてまとめようと思います。
一旦はざっくりと、権限についてJSON形式で書かれた設定ファイルとだけ覚えておけば大丈夫です。
ちなみに自分が勉強するときに見たサイトはこちらです。かなりわかりやすかったのでこちらを見ていただいてもいいかと思います。
https://dev.classmethod.jp/articles/aws-iam-policy/
##IAMロール
IAMロールとは、AWSのリソース(EC2など)に付与するものであり、複数のIAMポリシーをグルーピングして一つにまとめたものです。
IAMポリシーはユーザーにアタッチするものですが、IAMロールはユーザーではなくリソースにアタッチします。