特定のS3のフォルダにのみアクセス権のあるIAMユーザーを使ってCyberduckから参照する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

特定のS3のフォルダにしかアクセス権を与えたくない場合、 ポリシーを作成してIAMユーザーに付与し、そのユーザーからフォルダを参照しますが、 マネジメントコンソールから入るとトップページを表示する権限がないので以下のメッセージが表示され目的のフォルダにアクセスできません。

S3コンソール

そのため今回は、S3のフォルダおよびそこにしかアクセス出来ないポリシーを作成し、そのポリシーを付与したIAMユーザーのクレンデンシャル情報を使ってCyberduckからアクセスする方法を紹介します。

手順

手順は以下になります。

  1. フォルダの作成
  2. ポリシーの作成
  3. IAMユーザの作成
  4. Cyberduckの設定

1.フォルダの作成

S3のコンソールから「バケットを作成」ボタンをクリックし、バケット名とリージョンを選択してバケットを作成します。

バケットの作成

この時にバケット名の命名ルールに準じていないとバケットが作成出来ないので注意しましょう。
弊社ブログ
バケットの制約と制限

作成したバケットに入って「フォルダの作成」ボタンをクリックしてフォルダを作成します。

フォルダの作成

2.ポリシーの作成

IAMのポリシーから「ポリシーの作成」ボタンをクリックしてポリシーを作成します。 今回は1で作成した特定のフォルダにのみアクセスを許可したいので、 "Resource"でバケットを指定して"Condition"と"StringLike"でフォルダを指定しています。

また、アップロード、ダウンロード、削除も行いたいので "s3:GetObject"アクション、"s3:PutObject"アクション、"s3:DeleteObject"アクションを追加しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::test-bucket-201512",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "01/*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::test-bucket-201512/01/*"
        }
    ]
}

ポリシーを作成する前に「ポリシーの検証」ボタンをクリックすることでポリシーの有効性が確認できます。

ポリシーの検証

3.IAMユーザーの作成

IAMのユーザーから「新規ユーザーの作成」ボタンをクリックしてIAMユーザーを作成します。

IAMユーザーの作成

作成したユーザーのアクセス許可で「ポリシーのアタッチ」ボタンをクリックして2で作成したポリシーをアタッチします。

ポリシーのアタッチ

ここまででフォルダの作成とポリシーとIAMユーザーのアタッチが完了したので、 一旦ログアウトして作成したIAMユーザーでログインしてS3のコンソールを開いてみます。

S3コンソールエラー

コンソールからでは作成したフォルダにアクセス出来ないことが確認できました。

4.Cyberduckの設定

Cyberduckは以下から入手できます。
Cyberduck

ここでは既にインストール済と仮定して設定を行います。

Cyberduckを起動して「新規接続」をクリックします。

Cyberduck

新規接続ダイアログの一番上のドロップダウンリストから「S3(Amazonシンプルストレージサービス)」を選択、 3で作成したIAMユーザーのアクセスキーIDとシークレットアクセスキーを入力、 1で作成したバケット名とフォルダ名をパスに入力します。

Cyberduckダイアログ

「接続」ボタンをクリックしてアクセスが可能であることと、 1で作成したフォルダのみ閲覧・アップロード・ダウンロード・削除が可能なことが確認できます。

Cyberduck閲覧

Cyberduckアップロード

まとめ

S3の特定のフォルダにのみアクセス権のあるIAMユーザーのクレデンシャルを使って、そのフォルダのコンテンツを操作することができました。
今回はCyberduckを使いましたが他のツールやCLIなどからも同じ方法で操作が可能なので、この記事が少しでも参考になれば幸いです。