【AWS】IAMを勉強しました【完全に理解してない】
ごあいさつ
閲覧ありがとうございます!ピカピカのエンジニア一年生の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点の使い方があります。
- AWSリソースが、別のリソースに権限を付与するとき
- 別の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