あけましておめでとうございます。
年末からAWSの勉強をしていますが、今年も引き続き、AWSの基本を学んでいきます。
ということで、新年一発目は、AWS IAMの概要をサラッと…。
もくじ
3.IAMロール
5.まとめ
1.AWS IAMとは
AWS Identity and Access Management(AWS IAM)とは、AWSにおける、サービスやリソースへの認証・認可を管理するサービスである。
AWSのリソース操作は、ルートユーザまたはAWS IAMを用いて行われる。
このうち、ルートユーザはAWSの契約・料金等を管理する、強い権限を持ったユーザである。
アカウントの解約も含めて、AWS契約の根幹操作まで出来る。
誤操作や乗っ取り防止のため、AWSのリソース操作に、ルートユーザは原則として使用せず、AWS IAMを使用することが強く推奨されている。
AWS IAMは、ほぼすべてのAWSサービスのアクセス制御を網羅しており、
それぞれでアクセス権限を細かく設定できるようになっている。
なお、利用は無料である。
IAMでのリソースアクセス制御方法は、以下の2種類ある。
制御方法 | 設定対象 |
---|---|
IAMユーザ | AWSサービスの利用者(ヒト) |
IAMロール | AWSリソース(モノ) |
次に、それぞれの制御方法の詳細を説明する。
2.IAMユーザとIAMグループ
◎IAMユーザ
IAMユーザは、AWSアカウント内で作成できるユーザである。
IAMユーザでログインして、AWSのマネジメントコンソールからリソースをGUI操作(グラフィカル操作)したり、
SDKやコマンドラインツールから、CUI操作(文字ベースでの操作)したりすることができる。
各ユーザが操作できる内容は、IAMポリシー(後述)で制御される。
ユーザAは書き込みと読取り可、ユーザBは読取りのみ等、ユーザ個別にアクセスを制御したい時に有用である。
◎IAMグループ
ユーザ数が増えると、ユーザの管理が煩雑になりがちとなる。
そこでIAMには、グループという機能も存在する。
IAMのユーザとグループの関係は、LinuxのOSユーザ、グループと同じと考えて差し支えない。
(Linuxのユーザとグループについては過去に記事を書いたので、「?」な方は見てください)
複数のユーザを1つのグループにまとめれば、グループ毎に一括してアクセス制御を設定できるので、
ユーザ個別にいちいち設定する手間が省ける。
また、1ユーザは複数のグループに所属できる。
従って、例えば「リソースAにアクセス可とするグループ」、「リソースBにアクセス可とするグループ」があるとき、
リソースAとBの両方にアクセスを許可したいユーザZは、両方のグループに所属させれば良いことになる。
各グループが操作できる内容も、IAMポリシー(後述)で制御される。
3.IAMロール
IAMロールは、AWSリソースを対象とするアクセス制御方法である。
ストレージAは更新不可(読取りのみ)としたい、IAMユーザのアクセス制御設定の例外を設けたい等、
AWSリソースそのものへのアクセスを制御したい時に活用するとよい。
また、AWSにデプロイしたアプリケーションが、AWSリソースを操作する時にも、
ロールを用いてアクセス制御する手法がよく用いられる。
IAMユーザの場合は、一般的なパスワードやアクセスキー、SSHキー等を利用して認証されるが、
IAMロールは、ロールセッション用の、一時的なセキュリティ認証情報によって認証される。
各ロールが操作できる内容は、ユーザやグループの制御方式同様、IAMポリシー(後述)で制御される。
4.IAMポリシーとは
IAMポリシーは、IAMユーザやグループ、ロールが、何をできるかを設定するための機能である。
IAMユーザやグループ、ロール毎に、個別の設定ファイルを作るとすると、
「どのグループからも更新は不可にしたいけど、全グループに同じ設定を記述していくのは大変。しかも今後、方針を変更して更新も可となれば、全部を書き換えないといけない…」
といった煩雑さがある。
そこでIAMでは、「IAMポリシー」に制御設定を記述し、必要なIAMユーザやグループ、ロールに紐づけることで、
アクセス制御を実現する仕組みとなっている。
IAMポリシーの設定ファイルには、
「どのサービスに対して」「どんなアクション(書き込みや読取り等)を」「許可/拒否する」
といった制御内容を、JSON形式で記述する。
IAMポリシーは複数種類作成でき、各IAMユーザ、グループ、ロールには複数のIAMポリシーを紐づけることができる。
なお、紐づけ操作は「アタッチ」と呼ばれる。
↓IAMポリシーのJSON構文例(公式ドキュメントよりそのまま引用)
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example_bucket"
}
}
5.まとめ
IAMについて、簡単にまとめておく。
- IAMは、AWSの認証・認可サービスである。
- AWSのリソース操作には、原則としてIAMを利用し、ルートユーザは使わない。
- IAMには、AWSサービスの利用者(ヒト)単位のユーザと、AWSサービス自体(モノ)単位のロールの、2つの制御対象がある。
- ユーザは、グループでまとめることができる。1ユーザが複数のグループに所属してもよい。
- IAMのアクセス制御設定内容は、IAMポリシーに記述した後、必要なユーザ、グループ、ロールに紐づける。
ちなみに、ユーザ、グループ、ロール作成やポリシー作成と紐づけ(アタッチ)は、
AWSのマネジメントコンソールで画面操作する方法と、
コマンドラインで記述する方法がある。
今回の記事はIAMの概要理解を目的としているので、実際の作成まではしていないが、
時間を見つけて実際の作成の記事もupする…予定(たぶん)。
参考文献
本記事は、これまでの記事に引き続き、以下の2冊と、AWS公式ドキュメントを参考にしています。
どちらも基本を学ぶ上でお勧めなので、これからAWSを学ぼうという方はぜひ!(*^^*)
①図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書
(小笠原種高著/技術評論社出版/2019年)
②AWSの基本・仕組み・重要用語が全部わかる教科書 (見るだけ図解)
(川畑光平、菊地貴彰、真中俊輝著/SB Creative出版/2022年)
今回は以上!