soranoriの畑

ゆるく

AWS S3にゆるく入門 ~クロスアカウントアクセス~

クロスアカウントアクセス

別のAWSアカウントのIAMユーザーやロールからのアクセスを下記3つの方式を使って許可できる。

方式 詳細
バケットポリシーとIAMポリシーによる許可 ・S3バケットへのアクセスを許可するIAMポリシーを設定
・IAMユーザーとロールにIAMポリシーを設定
・S3バケットへのクロスアカウントアクセスを許可する場合、バケットポリシーでアカウントを指定して許可を行う
ACLとIAMポリシーによる許可 ・S3バケットへのアクセスを許可するIAMポリシーを設定
・IAMユーザーとロールにIAMポリシーを設定
・S3バケットの特定のオブジェクトへのクロスアカウントアクセスを許可したい場合はACLでアカウントを指定
IAMロールによる許可 ・IAMロールの権限委譲を利用して、S3バケット/オブジェクトへのプログラムによるアクセスまたはコンソールアクセス用のクロスアカウントのIAMロールを設定
・AssumeRoleの実行を許可したロールにより別アカウントユーザーに権限を委譲する

オブジェクトの所有者

S3ではデフォルトでオブジェクトアップロードしたユーザーがオブジェクトの所有者となる。
そのため、クロスアカウントでアップロードした場合、バケットはアカウントBのものだが、オブジェクトはアカウントAが所有している状態が出来上がる。
デフォルトではオブジェクトにはオブジェクト所有者のみがアクセス可能なので、アカウントBのバケットにも関わらず、アカウントAがアップしたオブジェクトにアクセスする権限がないことになる。
そのほか、オブジェクトの所有者ができることは次の通り。

  • 他のユーザーにオブジェクトへのアクセスを許可するように変更できる
  • 署名付きURLを作成し、一時的な認証情報を付加することでユーザーに期限付きのエンドポイントを発行できる

なので、必要であれば下記の通りバケットの所有者の設定を オブジェクトライター から 希望するバケット所有者 に変更しておく。

バケットの所有者の設定変更

バケットの所有者の設定変更