LoginSignup
0
0

More than 3 years have passed since last update.

【入門】IAMを利用したAWSリソースにアクセスする仕組み

Posted at

はじめに

AWSを利用してシステム開発をする際やAWSアソシエイト試験の勉強をしている際に、「AWSのリソースにアクセスするためにはIAMの制御が必要とあるけど、IAMは実際にどう利用されているんだ?」と気になったので調べてみました。AWS初心者なので、間違ってましたらご指摘頂けると助かります。

IAMを利用したAWSリソースにアクセスする流れ

AWSリソースにアクセスする仕組み

AWSのBlackBeltのIAMドキュメントによるとAWSリソースにアクセスするための仕組みは以下のようです。
image.png
1. プリンシパル
2. 認証
3. リクエスト
4. 認可
5. アクション/オペレーション
6. AWSリソース

例を用いてこの順番に沿って記載していこうと思います。

ケース1:EC2インスタンスからS3のデータを更新する仕組み

  1. EC2がS3にアクセスしようとする。
  2. EC2に付与されているIAMロールに基づいてAWS STSが働き、STSが一時的に利用可能な認証情報であるCredentials(アクセスキー、シークレットアクセスキー、トークン)を払いだす。
  3. 取得したCredentialsを元にS3にアクセスする。
  4. S3はロールにアタッチされているポリシー(アイデンティティベースのポリシー)やリソースにアタッチされているポリシー(リソースベースのポリシー)やACLなどのその他のポリシーを元に認可を実施する。
  5. EC2にてS3のデータを更新するオペレーションを実施する。
  6. S3のデータが更新される。
    image.png

ケース2:開発者アカウントを利用して本番環境のS3データを更新する仕組み

  1. 前提として、開発者アカウントには本番アカウントのs3-roleの引き受けを許可するポリシーが設定されており、本番アカウントにはs3-roleを誰が引き受けられるか定義した信頼ポリシーがs3-roleに設定されている。
  2. 開発者が本番環境のS3データを更新しようとする。
  3. 開発者アカウントのアクセスキーによる認証が実行され、s3-roleを引き受け、一時的な認証情報であるCredentials(アクセスキー、シークレットアクセスキー、トークン)をを開発者アカウントが取得できる。
  4. 取得したCredentialsを元にS3 APIの呼び出しを行う。
  5. S3はロールにアタッチされているポリシー(アイデンティティベースのポリシー)やリソースにアタッチされているポリシー(リソースベースのポリシー)やACLなどのその他のポリシーを元に認可を実施する。
  6. S3 APIにてデータを更新するオペレーションが実施される。
  7. S3のデータが更新される。
    image.png
    image.png

最後に

IAMを利用したAWSリソースにアクセスする仕組みをまとめてみました。業務でもAWSを利用しているのですが、AWS STSが重要な役割を果たしているとは露知らず、新たな発見でした。

参考元

・BlackBeltのIAMドキュメント:
https://d1.awsstatic.com/webinars/jp/pdf/services/20190129_AWS-BlackBelt_IAM_Part1.pdf
・アイデンティティベースのポリシーとリソースベースのポリシーについて:
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_identity-vs-resource.html
・IAM Roleを理解する
http://blog.serverworks.co.jp/tech/2018/02/16/understarnd_iam_role/

記事内に誤りがあればご指摘いただけると嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0