Edited at

AWSのS3のクロスアカウントでとりあえず転送するときのバケットポリシー


はじめに

ここ最近、クロスアカウントでデータの転送をしたりと、

アカウントまたぎで作業する機会が多くなってるので、ロールとかポリシーとか

を作成したんですが、なんとなく理解はしているけど、よく使う部分かつ、

セキュリティーにも関わる部分なので理解するために記事にしようと思います。


ロールとかポリシーってなんすか?

ロールは日本語でいうと、役割。

ポリシーは方針のことです。

AWSでの設定例でいうと、

たとえば、EC2からS3にあるデータに何かさせたい場合。

EC2から、S3にあるAバケットにアクセスして、そこにあるデータを

上書きする役割を付けたとします。

その役割を果たすためにの方針を作成して、それをロールにくっつけて

あげるんです。

つまり、ロール+ポリシー=【誰がどのリソースに、何ができるのか】

を決めて、それをセットにして、リソースに設定をくっつけてあげることで

AWSのリソースを操作していくってことなんです。


S3の認証

ロール、ポリシーの作成って、やりたいことによって

いろいろ設定する方法があるので、ここでは自分がはまったS3の認証周りを

例にしてみたいと思います。


クロスアカウントでとにかく転送したい場合

Aアカウントの転送元バケットからBアカウントの転送先バケットにとりあえず、

転送したい場合。

これは、単純に、Bアカウント側のバケットポリシーでAアカウントからの

操作するためのアクセスを許可してあげればOKです。

バケットポリシーの例

{

"Version": "2012-10-17",
"Id": "Policyxxxxxxxxxxxx",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxx",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AアカウントID:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::xxxxxx-test-backet",
"arn:aws:s3:::xxxxxx-test-backet/*"
]
}
]
}

Aアカウントから、BアカウントのS3バケットに対して、なんでもできるよ

というバケットポリシーになります。

やりたいことに合わせて、できることを絞っていくと

よりセキュアに使うことができますが、とりあえず転送するために

穴開けたい、あとで閉じるよ〜くらいの使い方をしたいときに

こういう書き方をするとOKです。


さいごに

S3の認証って他にもいろいろあって掘っていくと

もっといろんな使い方できるんすけど、今回はこんな感じで。