かべぎわブログ

技術的なことについてかけたらいいな…

S3を社内のファイルサーバとして利用する

概要

S3を複数のユーザで利用するファイルサーバ(ファイルストレージ)として利用する方法をご紹介します。
S3を作成して共有するだけでファイルのやりとりは可能ですが、すべてのユーザがrootユーザとしてアクセスすることになるのでセキュリティ上よろしくありません。IAMユーザとIAMグループを作成し、適切に権限を付与させていきます。

手順

S3バケットの作成

マネジメントコンソールの「S3」から、「バケットを作成する」を選択します。
f:id:kabegiwakun:20171030213145p:plain

バケット名とリージョンを入力し、ウインドウ左下の「作成」を選択します。
f:id:kabegiwakun:20171030213343p:plain

バケットができました。
f:id:kabegiwakun:20171030213443p:plain

IAMユーザの作成

マネジメントコンソールの「IAM」を開き、サイドメニューから「ユーザー」を選択します。
f:id:kabegiwakun:20171030213954p:plain

「ユーザを追加」を選択します。
f:id:kabegiwakun:20171030214811p:plain

「ユーザ名」を入力して、「プログラムによるアクセス」にチェックをいれて「次のステップ:アクセス権限」へすすみます。
f:id:kabegiwakun:20171030215353p:plain

一旦アクセス権限は飛ばします。
そのまま「次のステップ:確認」へすすみます。
f:id:kabegiwakun:20171030220158p:plain

「ユーザの作成」を選択します。
f:id:kabegiwakun:20171030220256p:plain

するとユーザが作成され、アクセスキーとシークレットアクセスキーが表示されます。
この情報はS3とのファイルのやり取りに必要になりますので「表示」を押してメモをとっておくか、「.csvのダウンロード」で情報をダウンロードしておきます。

確認したら「閉じる」を選択します。
f:id:kabegiwakun:20171030220611p:plain

IAMグループの作成

サイドメニューから「グループ」にすすみ、「新しいグループの作成」を選択します。
f:id:kabegiwakun:20171030221310p:plain

「グループ名」を入力し、「次のステップ」を選択します。
f:id:kabegiwakun:20171030221814p:plain

「グループの作成」を選択します。
f:id:kabegiwakun:20171031203543p:plain

続いて作成したグループにユーザを追加します。
グループを選択して、「グループのアクション」から「グループにユーザーを追加」を選択します。
f:id:kabegiwakun:20171031204030p:plain

IAMユーザの作成で作成したユーザを選択して「ユーザの追加」でユーザーをグループに追加します。
f:id:kabegiwakun:20171031204256p:plain

IAMポリシーの作成

サイドメニューから「ポリシー」にすすみ、「ポリシーの作成」を選択します。
f:id:kabegiwakun:20171031204510p:plain

「独自のポリシー」を選択します。
f:id:kabegiwakun:20171031204906p:plain

ポリシー名に任意の名前をつけ、「ポリシードキュメント」の欄に以下のJSONをコピーします。
kabegiwa-bucketの部分はバケット名ですのでアクセス許可を与えたいS3の名前に変更してください。 それぞれ入力したら「ポリシーの作成」を選択します。
f:id:kabegiwakun:20171031210156p:plain

ポリシードキュメント例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::kabegiwa-bucket",
                "arn:aws:s3:::kabegiwa-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::kabegiwa-bucket/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBucket",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

このポリシーは以下の3つのことを許可するポリシーです。

  1. kabegiwa-bucketのすべて(/*)に対してすべての許可であるs3:*を許可
  2. kabegiwa-bucketに対してs3:ListBucket,s3:GetBucketLocationでバケット一覧の取得とバケットの場所の取得を許可
  3. S3全体にs3:ListAllMyBucketsで存在するバケットの一覧取得を許可

IAMグループにポリシーをアタッチする

作成したポリシーから「アタッチされたエンティティ」タブを選択し、「アタッチ」をクリックします。
f:id:kabegiwakun:20171031212704p:plain

IAMグループの作成で作成したグループを選択し、「ポリシーのアタッチ」を選択します。
f:id:kabegiwakun:20171031212917p:plain

以上でAWS側の設定は完了です!

AWSCLIで実際にファイルのやり取りを行う

コンソールやコマンドプロンプトを開き以下のコマンドを実行し、ユーザ作成時に控えておいたアクセスキーとシークレットアクセスキーを入力します。
リージョンは東京リージョンの場合はap-northeast-1と入力します。
最後のoutput formatは空白のままそのままEnterでかまいません。

kabegiwa: ~$ aws configure
AWS Access Key ID [None]: アクセスキー
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: そのままEnter

そしてs3コマンドを使ってS3を操作します。

コピーする場合

kabegiwa: ~$ aws s3 cp wawawa.txt s3://kabegiwa-bucket/

移動する場合

kabegiwa: ~$ aws s3 mv wawawa.txt s3://kabegiwa-bucket/

バケットにファイルを置くことができました!

kabegiwa: ~$ aws s3 ls s3://kabegiwa-bucket
2017-10-31 21:31:14          0 wawawa.txt

まとめ

S3を利用してセキュリティを確保したファイルサーバを作成することができました。
CLIの利用が面倒な場合はCyberduckなどのGUIツールを利用するのがよいかもしれません。

Cyberduckを利用する方法はこちらから

www.kabegiwablog.com

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく