異なるAWSアカウントのS3へアクセスする方法

異なるAWSアカウントのS3へアクセスする方法をご紹介します。様々な方法がありますが、今回はIAMユーザーにログインしてS3にアクセスする方法をご紹介します。アクセス制御はIAMのポリシーを使用します。

IAMユーザーにログインしてS3にアクセスするメリットとしては、IAMにログインするだけでS3にアクセス出来るのでお手軽です。デメリットとしてはIAMにログインする情報を管理する必要があることです。IAMにログインする情報が漏れると、不正アクセスされる可能性が高まります。

アーキテクチャ

まずはアーキテクチャの説明です。AWSアカウントは一つのS3を持っており、S3の中にバケットがあります。そして、バケットの中にオブジェクト(データ)があります。今回はお目当てのバケットにのみアクセスできるようにします。

必要な設定

S3側のAWSアカウントで設定が必要なものは次のとおりです。

  • バケット
  • IAMポリシー
  • IAMグループ
  • IAMユーザー

IAMにログインする側のAWSアカウントで設定が必要なものは次のとおりです。

  • AWS CLI

手順

異なるAWSアカウントのS3へアクセスする手順を記載していきます。

IAMポリシーの作成

AWSのコンソールでIAMポリシーを作成します。

次の順にクリックしてIAM画面に遷移します。

すべてのサービス > セキュリティ、ID、およびコンプライアンス > IAM

次の順にクリックし、ポリシー作成画面に遷移します。

ポリシー > ポリシーの作成 ボタン

ポリシー作成画面でJSONタブを選択しポリシーを次のように記載します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "バケットのARNを記載",
        "バケットのARNを記載/*"
      ]
    }
  ]
}

オブジェクト、ユーザー、バケットごとにポリシーを設定することが出来ます。ポリシー設定内容はPUT許可/拒否、DELETE許可/拒否の設定ができます。

設定で要注意なのが Resource の設定です。私は最初、次のようにバケットのARNのみを Resource に記載しました。すると一覧の表示は出来るのですが「バケットにデータをアップロードすることが出来ない」という現象になりました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "バケットのARNを記載"
        }
    ]
}

IAMグループの作成

IAMグループを作成します。先ほど作成したポリシーを、IAMグループ作成時にアタッチします。

ポリシーと同様IAM画面から次の順にクリックし、グループ作成画面に遷移します。

グループ > 新しいグループの作成 ボタン

画面遷移に従って設定が促されるので、入力していきます。

IAMユーザーの作成

IAMユーザーを作成します。IAMユーザー作成時に、先ほど作成したグループに所属させます。

ポリシーと同様IAM画面から次の順にクリックし、ユーザー作成画面に遷移します。

ユーザー > ユーザーを追加

画面遷移に従って設定が促されるので、入力していきます。

IAMユーザー作成時にシークレットキー、アクセスキーが生成されます。そのシークレットキー、アクセスキーは、AWS CLIにログインする際に必要になります。

CLI で IAMユーザー にログイン

CLI で 先ほど作成した IAMユーザー にログインします。AWS CLI を使用するにはインスタンスがAmazon Linuxであるか、インストールが必要になります。

ログインに必要な情報をS3側から受領しておきます。ログイン方法の詳細は次の記事に記載しています。

AWS CLI で IAMユーザーへログインする方法
AWS CLI で IAMユーザーへログインする方法をご紹介します。 事前準備 AWS CLI で IAMユーザーへログインする...

S3へアクセス

IAMユーザーにログイン出来たらS3にアクセスします。アクセス方法の詳細は次の記事に記載しています。

AWS CLIを使用してS3に格納したデータを取得する
AWS CLIを使用してS3に格納したデータを取得する方法をご紹介します。 S3に格納したデータはコンソールからはまとめてダウ...

資料

異なるAWSアカウントのS3へアクセスする(PowerPoint)