わかりづらい
S3クロスアカウント
アクセス許可に立ち向かおう
2018/3/23
AWS事業部 豊崎隆
1
スライドは後で入手することが出来ますので
発表中の内容をメモする必要はありません。
写真撮影をする場合は
フラッシュ・シャッター音が出ないようにご配慮ください
3自己紹介
豊崎 隆
• クラスメソッド株式会社
• AWS事業部
• アーキテクトグループ所属
• 2017年1月入社
• ソリューションアーキテクト
• CloudFormationとWorkSpacesが
好きです
4Agenda
 本日、目指すところ
 S3の権限で出てくるわかりづらいこと
 段階的に理解するS3のクロスアカウントアクセス
 まとめ
5本日、目指すところ
本日、理解したい内容
6本日、目指すところ
「AWSアカウント:A」が所有するS3バケット内の
「AWSアカウント:B」が置いたオブジェクトに対して
「AWSアカウント:C」のIAMユーザがアクセスする方法
7S3の権限で出てくるわかりづらいこと
S3の権限の話になると
出てくるわかりづらい言葉たち
8S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trust policy
9S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trust policy
10S3の権限で出てくるわかりづらいこと
 バケット所有者
・バケットを所有しているAWSアカウント
11S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trust policy
12S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trusted policy
13S3の権限で出てくるわかりづらいこと
 オブジェクト所有者
・オブジェクトを所有しているAWSアカウント
14S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trust policy
15S3の権限で出てくるわかりづらいこと
複数ある権限制御の方法が
S3の権限をわかりづらくしている
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
16S3の権限で出てくるわかりづらいこと
頑張って理解してみましょう
17S3の権限で出てくるわかりづらいこと
 User policy
IAMに利用するポリシー
- AWSアカウント内のIAMユーザ/ロールに対する
アクセス許可の管理を行えます
18S3の権限で出てくるわかりづらいこと
 User policy
User policyを利用したアクセス許可の管理イメージ
・許可したい権限に応じた
IAMポリシーを割り当てます
読み取りできるバケット
Aさん:xyz
Bさん:abc,xyz
C-Fさん:abc
19S3の権限で出てくるわかりにくいこと
 Bucket policy
S3 Bucketに対するポリシー
以下のケースで利用します
- バケット所有者が
AWSアカウント内のIAMユーザ/ロールに対して
アクセス許可の管理を行う場合
- クロスアカウントのアクセス許可を管理する場合
20S3の権限で出てくるわかりにくいこと
 Bucket ACL
S3 Bucketに対するアクセスコントロールリスト
推奨されるケースは上記一つだけです。
Amazon S3のログ配信グループに書き込みアクセスを許可する場合
※S3のアクセスログを記録するために使用
21S3の権限で出てくるわかりにくいこと
 Object ACL
個々のS3 オブジェクトに対する
アクセスコントロールリスト
バケットの所有者が、オブジェクトの所有者ではない場合、
オブジェクトへのアクセスを管理する、唯一の方法です
バケットの所有者=オブジェクトの所有者 の場合は
Bucket policyやUser policyで代用可能です。
22S3の権限で出てくるわかりづらいこと
そしてもう一つ
わかりづらいこと
23S3の権限で出てくるわかりづらいこと
 バケット所有者
 オブジェクト所有者
 User policy(IAMに利用)
 Bucket policy
 Bucket ACL
 object ACL
 Trust policy
24S3の権限で出てくるわかりにくいこと
 Trust Policy
別のAWSアカウントおよびIAMユーザに対して
権限を委譲する仕組み
詳しくは弊社ブログをご参照ください
参考: https://dev.classmethod.jp/cloud/aws/iam-role-and-assumerole/
25S3の権限で出てくるわかりにくいこと
結局どうすればS3のオブジェクトにアクセスできるの?
26S3の権限で出てくるわかりにくいこと
IAMユーザ/ロールがS3のオブジェクトにアクセスするには
1)自分が所属するAWSアカウントからの許可
2)アクセスしたいリソースを所有するAWSアカウントからの許可
2-1)バケット所有者=オブジェクト所有者の場合
・バケット兼オブジェクト所有者からの許可
2-2)バケット所有者≠オブジェクト所有者の場合
・バケット所有者からの許可
・オブジェクト所有者からの許可
1)+2)が満たされている必要があります。
27段階的に理解する:4つのケース
ここからが本番
28段階的に理解する:4つのケース
1)1つのAWSアカウント内で完結する場合
2)2つのAWSアカウントが登場し、
別のAWSアカウントのS3bucketにオブジェクトを置きたい場合
3)2つのAWSアカウントが登場し、
2)で置かれたオブジェクトに
置かれた側のAWSアカウント内からアクセスしたい場合
4)3つのAWSアカウントが登場し、
2)で置かれたオブジェクトに
3つめのAWSアカウント側からアクセスしたい場合
29段階的に理解する:その1
1)1つのAWSアカウント内で完結する場合
>バケット所有者がIAMユーザーにバケットのアクセス許可を付与
BucketPolicyの代わりに
UserPolicyで許可でもOK
30思い出してほしいこと
 Object ACL
個々のS3 オブジェクトに対する
アクセスコントロールリスト
バケットの所有者が、オブジェクトの所有者ではない場合、
オブジェクトへのアクセスを管理する、唯一の方法です
バケットの所有者=オブジェクトの所有者 の場合は
Bucket policyやUser policyで代用可能です。
31段階的に理解する:その2
2)2つのAWSアカウントが登場し、
別のAWSアカウントのS3にオブジェクトを置きたい場合
>バケット所有者がクロスアカウントアクセス許可を付与
32思い出してほしいこと
 Bucket policy
S3 Bucketに対するポリシー
以下のケースで利用します
- バケット所有者が
AWSアカウント内のIAMユーザ/ロールに対して
アクセス許可の管理を行う場合
- クロスアカウントのアクセス許可を管理する場合
33段階的に理解する:その3
3)2つのAWSアカウントが登場し、2)で置かれたオブジェクトに
置かれた側のAWSアカウント内からアクセスしたい場合
>バケット所有者が自分の所有してないオブジェクトへの
アクセス許可をユーザーに付与
34思い出してほしいこと
 Object ACL
個々のS3 オブジェクトに対する
アクセスコントロールリスト
バケットの所有者が、オブジェクトの所有者ではない場合、
オブジェクトへのアクセスを管理する、唯一の方法です
バケットの所有者=オブジェクトの所有者 の場合は
Bucket policyやUser policyで代用可能です。
35段階的に理解する:その4
4)3つのAWSアカウントが登場し、2)で置かれたオブジェクトに
3つめのAWSアカウント側からアクセスしたい場合
>バケット所有者が自分が所有してないオブジェクトへの
クロスアカウントアクセス許可を付与
36思い出して、ちょっと考える
 Trust Policy
別のAWSアカウントおよびIAMユーザに対して
権限を委譲する仕組み
なぜTrust Policyを使うのか?
>バケット所有者とオブジェクト所有者が異なる場合、
バケット所有者はオブジェクトに対する権限を
他のAWSアカウントに委譲することはできないため
37段階的に理解する:4つのケース
→IAMユーザ視点で考えるとすべてのケースで以下を満たす
・所属するAWSアカウントからのS3アクセス許可
・リソースを所有するAWSアカウントからのアクセス許可
・ バケット
・オブジェクト
38まとめ
S3で権限管理を行うときは
IAM User目線で2点を確認すればOK!
正しい権限で正しいS3ライフを送りましょう
39参考
本日ご紹介した4つのケースがまとまった
AWSのチュートリアルがありますので、ご参考ください。
参考:Amazon S3 リソースへのアクセスの管理
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/example-walkthroughs-managing-
access.html
40謝辞
ご清聴ありがとうございました!
41

わかりづらいS3クロスアカウントアクセス許可に立ち向かおう

Editor's Notes

  • #30  ・User policy ・Bucket policy はAWSアカウント内のIAMユーザ/ロールに対するアクセス許可の管理を行えます。 どちらで許可してもOKです。