【AWS】IAMを勉強しました【完全に理解してない】

2023/03/04に公開

ごあいさつ

閲覧ありがとうございます!ピカピカのエンジニア一年生のyouです✨
最近は案件がリリース直前なので、ゴタゴタしております!(楽しい!)

今回はAWSのIAMについて勉強したので、ざっくり纏めてみます!

AWS Identity and Access Management(IAM)とは?


IAMとはAWSが提供しているサービスの一つで、AWSを利用するユーザー毎に権限を制御することで、AWSを安全に操作することを可能にする認証・認可の仕組みのことです。
何故このような仕組みが必要なのかと言うと、AWSを複数人で使用するときに全員が全ての権限を持っていると非常にリスクが大きいからです。
全員がAWSを削除する権限を持っていたり、AWSサービスを立ち上げる権限を持っていたら怖くないですか?
という訳から、このIAMを利用することで、AWSを安全に利用することが出来るようになるのです。

IAMポリシー

IAMポリシーとは、ユーザーに対してどのような権限に設定するかを決めるものです。
JSON形式で記述することができ、AWSが予め用意してくれているらしい。
例えば、以下のJSONはAWS側で用意しているAmazonS3ReadOnlyAccessというやつらしい。
名前の通り、S3を参照することを許可するIAMポリシーみたいですね。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
]
}

IAMユーザー

AWSを操作するユーザーのことです。
このIAMユーザーに対してIAMポリシーを適用して、権限を付与していきます。
しかし、これだとユーザーが沢山いる場合に一々付与していくのは非常に面倒です。
そこで良く使われるのが、IAMユーザーグループです。

IAMユーザーグループ

IAMユーザーグループとは、IAMユーザーをグループ化するものです。
グループ化することで、以下の図のように開発する人達にはこの権限、テストする人達にはこの権限みたいに一括で付与することが出来るようになります。
実際の現場ではこういう使い方をすることが多いのではないでしょうか。知らんけど。
(最近案件でAWSの権限貰ったので、確認してみようと思います。)

IAMロール

最後にIAMロールです。
IAMロールは以下2点の使い方があります。

  1. AWSリソースが、別のリソースに権限を付与するとき
  2. 別のAWSアカウントに権限を委譲するとき
    いまいちどういうタイミングで役に立つのか現状あまり想像出来ませんが、例を見ながら理解を試みたいと思います。

AWSリソースが、別のリソースに権限を付与するとき

AWSリソースが、別のリソースに権限を付与するときにIAMロールを作成するようです。
例えば、AWS Lambdaを使って、とあるタイミングでEC2インスタンスを立ち上げたいとする。
しかし、AWS LambdaにはEC2インスタンスにアクセスする権限がない。
そこで、IAMロールで権限を付与してあげることで、AWS Lambdaで設定したタイミングでEC2インスタンスを立ち上げることが出来るようになる。

別のアカウントに権限を委譲するとき

IAMロールを利用すると、とあるAWSアカウントから別のAWSアカウントのリソースを操作するといった権限の委譲をすることが出来るようです。
例えばAWSアカウントAで、AWSアカウントBのEC2インスタンスを立ち上げたいとする。
その場合、AWSアカウントBでEC2インスタンスに対する権限のIAMロールを作成する。
その後、AWSアカウントAのIAMユーザーに、AWSアカウントBのIAMロールを付与することを許可するIAMポリシーを付与した上で、IAMロールを付与する。
そうすることで、AWSアカウントAのIAMユーザーから、AWSアカウントBのEC2インスタンスを立ち上げることが出来るようになる。

おわりに

以上、IAMざっくり解説でした!
早く実際に触れるように、日々精進します!

良いエンジニアライフを。

Discussion