特定のS3のフォルダにのみアクセス権のあるIAMユーザーを使ってCyberduckから参照する
特定のS3のフォルダにしかアクセス権を与えたくない場合、 ポリシーを作成してIAMユーザーに付与し、そのユーザーからフォルダを参照しますが、 マネジメントコンソールから入るとトップページを表示する権限がないので以下のメッセージが表示され目的のフォルダにアクセスできません。
そのため今回は、S3のフォルダおよびそこにしかアクセス出来ないポリシーを作成し、そのポリシーを付与したIAMユーザーのクレンデンシャル情報を使ってCyberduckからアクセスする方法を紹介します。
手順
手順は以下になります。- フォルダの作成
- ポリシーの作成
- IAMユーザの作成
- 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ユーザーを作成します。作成したユーザーのアクセス許可で「ポリシーのアタッチ」ボタンをクリックして2で作成したポリシーをアタッチします。
ここまででフォルダの作成とポリシーとIAMユーザーのアタッチが完了したので、 一旦ログアウトして作成したIAMユーザーでログインしてS3のコンソールを開いてみます。
コンソールからでは作成したフォルダにアクセス出来ないことが確認できました。
4.Cyberduckの設定
Cyberduckは以下から入手できます。 Cyberduck
ここでは既にインストール済と仮定して設定を行います。
Cyberduckを起動して「新規接続」をクリックします。
新規接続ダイアログの一番上のドロップダウンリストから「S3(Amazonシンプルストレージサービス)」を選択、 3で作成したIAMユーザーのアクセスキーIDとシークレットアクセスキーを入力、 1で作成したバケット名とフォルダ名をパスに入力します。
「接続」ボタンをクリックしてアクセスが可能であることと、 1で作成したフォルダのみ閲覧・アップロード・ダウンロード・削除が可能なことが確認できます。