1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[AWS IAM] EC2インスタンスからS3にアクセスする

Last updated at Posted at 2022-11-20

前提

  • group has many users
  • user, groupe, role has many identity-based policies
  • role is assumed by user, group, service (e.g. ec2).
  • image.png

policyには2種類ある。

  • identity-based policy
    • VO
  • resource-based policy
    • SVOでOに貼り付けられる。
    • 多分 S=principalに設定できるのはrole, user, group。EC2インスタンスのARNは設定できなさそう?
    • e.g. S3 bucket policy

Roleについて

(1) roleの作成
(2) roleの貼り付け

スクショ: trust relationshop の作成

image.png

なお、EC2に assume roleを許可するtrust relationのことを、IAM instance profile と呼ぶ。

スクショ: roleの貼り付け

image.png

EC2からS3のバケットのリストを取得する

以下の手順で行う。

  1. S3へのreadアクセス権限を持つIAM role 🟢を作成する
  2. そのIAM roleをEC2に貼り付ける
    1. そもそもroleがEC2に貼り付けられていないと、awsコマンドにcredentialが設定されなさそう?
  3. EC2 -> S3へのネットワーク通信を可能にする。いずれか
    1. EC2をpublic subnet内に置く = EC2を含むVPCにInternet Gatewayを作成し、デフォルトルートとして設定する。
    2. EC2からNAT経由で外部インターネットへのアクセスを可能にする。
    3. EC2からS3へのアクセスを Gateway VPC endpoint経由で可能にする。

⚠️ 取得したいのはS3のバケットのリストであるため、バケットポリシーの設定は不要。

image.png

スクショ: S3へのreadアクセス権限を持つIAM role🟢

image.png

image.png

EC2からS3の my_bucket 内のオブジェクトのをリストを取得する

  1. S3へのアクセス権限🟥を持つIAM roleを作成する
  2. そのIAM roleをEC2に貼り付ける
  3. EC2 -> S3へのネットワーク通信を可能にする。いずれか
    • EC2をpublic subnet内に置く = EC2を含むVPCにInternet Gatewayを作成し、デフォルトルートとして設定する。
    • EC2からNAT経由で外部インターネットへのアクセスを可能にする。
    • EC2からS3へのアクセスを Gateway VPC endpoint経由で可能にする。
  4. S3のバケットポリシー🟦を設定し、上記のroleからのアクセスをallowする。
    • S3のバケットポリシーはデフォルトでは全拒否となっている
    • おそらくバケットポリシーのPrincipalとしてroleではなくEC2インスタンスのARNを指定することはできなさそう。

image.png

スクショ: バケット内オブジェクトのリストを許可するバケットポリシー🟦

image.png

なお、🟥 🟦のどちらかがあればバケット内のリスト取得のアクションは可能であることを実験で確かめた。

(roleにs3 read accessが含まれる, bucket policyでroleにS3:ListBucketをallow) =

  • (true, true) -> 取れる
  • (true, false) -> 取れる
  • (false, true) -> 取れる
  • (false, false) -> 取れない

その他

  • 前述のroleを貼り付けられたEC2インスタンスは、STSから6時間ごとにcredentialを取得する。このcredentialはインスタンスのメタデータとして保存される。

Ref.

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?