はじめに
こんにちは。Tsukasaです!
皆さんIAMについてしっかり理解はされていますでしょうか?
IAMには主にIAMユーザー、IAMグループ、IAMポリシー、IAMロールがあります。
ユーザーとグループはわかるにしても特に初心者の方はポリシーとロールの違いがよくわかっていないと思います。
というわけで今回はIAMの各役割について整理していこうと思います!
IAMとは
そもそもIAMとは何でしょうか?
IAM(Identity and Access Management)とは、AWSリソースへのアクセスを安全に管理するためのサービスです。誰が(認証)、どのリソースに対して、どのような操作ができるか(認可)を一元的に制御します。
AWSを安全に使うために必要なセキュリティと考えて良いと思います。
IAMユーザーとは
IAMユーザーとは、AWSリソースにアクセスする「人(メンバー)」や「システム(プログラム)」を識別するためのアカウントです。ユーザーごとに固有のID・パスワードやアクセスキーを持ち、それぞれに必要な操作権限を個別に設定できます。
AWSにログインする際にルートユーザーとIAMユーザーがありますが、この際に用いるのがIAMユーザーです。ルートユーザーとの違いは、ルートユーザーは全ての権限を持ち危険なため、通常は日々の作業用に権限を絞った「IAMユーザー」を作成して運用します。
IAMユーザーを作成することで、できることとできないことの権限を設定することができるので安全にAWSを使うことができます。
IAMグループとは
IAMグループ(IAMユーザーグループ)とは、複数のIAMユーザーをまとめて管理するための「フォルダ(コンテナ)」のような仕組みです。
IAMグループを使うメリットとしては個別のユーザーに直接権限を割り当てると、人数が増えた際に管理が破綻するため、グループを使うことで以下のメリットが得られます。
・権限管理の効率化ユーザーを追加・削除するだけで、その人の権限を簡単に変更できます。
・設定ミスの防止「このグループに入っていれば一安心」という基準ができるため、不要な権限を渡しすぎるリスクが減ります。
実際の現場となりますと、1人で作業することよりもプロジェクトチームで動くことが多いと思うので、IAMグループでユーザーを一元管理できると管理もしやすくて良いですね。
IAMポリシーとは
今回のメインテーマになります。
まずはIAMポリシーから見ていきたいと思います。
IAMポリシーとは一言で言うとルール(何ができるか?)です。
・実際のAWSシステムでの具体例
あなたが、「ユーザーがアップロードした画像をS3(ストレージ)に保存し、CloudFront(配信ネットワーク)を使ってWebサイトに高速配信するシステム」を作っているとします。
このとき、EC2(仮想サーバー)というプログラムが動くコンピューターが、S3(画像の保管庫)にアクセスして画像を読み書きする必要があります。
ここでポリシーがどう使われるかを見てみましょう。
「ポリシー(JSON)」を作る
「S3の特定のフォルダから、画像を読み込んでもいいし、新しい画像を書き込んでもいいよ」というルールをJSONという形式のテキストで書きます。これがポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-image-bucket/*"
}
]
}
このように「何ができて、何ができないのか?」というルールを定義したものがIAMポリシーになります。
IAMロールとは
続いてIAMロールについて見ていきたいと思います。
IAMロール(IAM Role)とは、「特定の役割(権限セット)が書かれた、時間限定で借りられる仮面(帽子)」のような仕組みです。
この説明だけで理解できる方は恐らくこの記事を読まなくても最初からIAMロールが何なのかをわかっている方だと思います。
IAMロールはIAMポリシーが入った財布のようなものです。
皆さんも運転免許証だったり色々な資格を持っていらっしゃるかと思います。
その資格証(特に運転免許証)を財布に入れていらっしゃいますよね?
その資格証(IAMポリシー)が入っている財布のような入れ物がIAMロールになります。
そしてそのIAMロールを特定のAWSサービスに紐付けて使えるようにするのがIAMロールの役割になります。
この内容をまとめたものを生成AIを用いて画像として作成してみました!
まとめ
IAMポリシー : 何ができて何ができないのか?を定義した資格証なようなもの
IAMロール : 資格証(IAMポリシー)を入れる財布のような入れ物。それを特定のAWSサービスに紐付けて、ポリシーで定義したことをできるようにさせる
終わりに
いかがでしたでしょうか?
初心者にとってIAMポリシーとIAMロールの違いはわかりにくいと思います。
ハンズオンでもIAMロールを作成しても、その時はハンズオンをするだけで精一杯で何のためにやっているのか?がわからないなんてこともあるのではないでしょうか。
今回このように整理してみたので、初心者の方(自分も初心者ですが)に少しでも役立てればと思います!
