こんにちはこんにちは! エンジニア川端です。
今年の正月はあまり餅を食べませんでした。
そのせいか、休み明けの正月ボケ症状が軽いです。来年はたくさん食べて、検証してみたいと思っています。
ともあれ、本年もよろしくお願いいたします。
さて、本日は「Amazon S3」についてお話します。
「Amazon IAM (Identity and Access Management)」というサービスを利用して、Amazon S3 専用のアカウントを作成し、Amazon Web Services の管理者アカウントを使わなくてもファイルの更新ができるようにしてみましょう。
※画像をたくさん貼付けているので、表示に時間がかかるかもしれません。ご了承ください。
amazon.com が提供しているオンラインストレージサービス「Amazon S3」、昨年末にはルートドメインでのホスティングも可能になり、今後、S3 を使ってサイト運用するケースも増えるのではないかと思います。
その際気になるのは、サイト更新用のアカウント。企業サイトの場合、サイトを更新する人は複数名ということも多いと思いますが、Amazon Web Services のアカウントはあらゆる事ができてしまうので、サイト更新のために他の人に渡してしまうのは、ちょっと悩みますよね。渡される方も、必要ない権限までついてくるのは困るのではないかと思います。
そういう時に利用できるのが「Amazon IAM (Identity and Access Management)」というサービス。このサービスを使って、
- 複数アカウントを用意する
- アカウント毎に権限を変更する
- WEB UI を利用して、WEB ブラウザからファイル更新する
ということを実現してみましょう。
この「Amazon IAM」の設定、意外とわかりづらく、初めて触った時はちょっととまどうのではないかと思います。今回は、詳細は端折りながら、大体の流れを。
大まかな流れ
- AWS にログインする
- グループとユーザを作成し、権限を設定する
- WEB UI を利用できるようにする
1. AWS にログインし、AWS Management Console にアクセスする
- Amazon Web Service の管理画面にログイン
- IAM の設定画面に移動
2. グループとユーザを作成し、権限を設定する
IAM の設定画面から、Amazon S3 の特定バケットを更新可能な権限をもつグループを作成し、そのグループに所属するユーザアカウントを作成します。
ウィザードが用意されているので、それを利用しましょう。
- 画面上方中央にあるボタン「Create a New Group of Users」をクリック
- グループ名を決める
- 権限を設定する
最初「Select Policy Template」が選択されていますので、「Policy Generator」を選択してください
「Select」をクリックすると、権限を設定する画面に遷移します
まずは、バケットに対する権限の設定です。特定のバケットに対してあらゆる操作が可能となる設定を行います。
まず、下記の通り設定して「Add Statement」をクリックします。
( 画像の test の部分を実際のバケット名と差し替えてくださいね )- Effect …… Allow を選択
- AWS Service …… Amazon S3 を選択
- Actions …… All Actions (*) にチェック (全て選択されます)
- ARN …… arn:aws:s3:::<bucket name> と入力
画面の下の方に、1 行追加されました。
次はそのバケットの中のファイルに対する権限の設定です。先ほどと違うのはARN のところだけです- Effect …… Allow を選択
- AWS Service …… Amazon S3 を選択
- Actions …… All Actions (*) にチェック (全て選択されます)
- ARN …… arn:aws:s3:::<bucket name>/* と入力
「Add Statement」をクリックすると、画面の下の方に、もう 1 行追加されます。
最後に、バケット一覧の取得を許可する設定を行います。API のみを利用するならこの設定は不要ですが、WEB UI を使うために必要な設定です。- Effect …… Allow を選択
- AWS Service …… Amazon S3 を選択
- Actions …… ListAllMyBuckets のみにチェック
- ARN …… arn:aws:s3:::*
- ユーザアカウントを作成する
引き続き、現在作成した権限を与えるユーザアカウントを作成します。
同時に複数アカウントを作成可能です。「Generate an access key for each User」にチェックをいれておきましょう。
確認画面で「Finish」をクリックすると、アカウント作成完了ですユーザアカウント作成完了時に表示されている Access Key Id や Secret Access Key は、API を利用する際に必要になります。メモしておきましょう。左下の「Download Credentials」をクリックすると、CSV 形式でダウンロードできます。
3 つ設定ができたら、「Continue」をクリックしましょう。今行った設定が確認できます。
設定は JSON フォーマットになっていて、理解していれば、JSON ファイルでの設定も可能です。
3. WEB UI を利用できるようにする
ここまでの作業で、API を利用してプログラムから Amazon S3 を利用できるようになりました。が、今日の目的は WEB UI を使ったファイル更新なので、まだまだ作業は続きます。
- ユーザが自分でパスワードを変更できるようにする
「IAM」ダッシュボードの「Password Policy」を有効にします。
最初から「Allow users to change their own password」にチェックがついていますが、Apply をクリックするまでは有効にならないので、クリックして有効にしましょう。
成功すると、画面下部に緑色で「Successfully updated password policy.」とメッセージが表示されます。 - ユーザの初期パスワードを決定して、WEB UI からログインできるようにする
「IAM」ダッシュボードの「IAM Resources」から、ユーザ毎の設定ができます。
ユーザを選択し、「Security Credentials」タブを選択すると、現在の状態が表示されます。「Sign-In Credentials」で「Password: No」となっているので、パスワードを利用したログインができない状態です。有効にして、初期パスワードを決めましょう。
次の画面で「Assign an auto-generated password」を選択すると、初期パスワードは自動生成されます。最後は、グループを作成した時と同じような画面が表示されました。パスワードをメモするか、CSV をダウンロードしてください。
ダウンロードした CSV ファイルには、ログイン用 URL も記載されています。この URL は「IAM」のダッシュボードでも確認可能です。
4. 作成したアカウントでログインしてみる
やっと設定完了!
では、実際にログインしてみましょう。
ログインできたら「S3」にアクセスし、ファイル操作が可能か確認してみてください。
権限設定していないバケットは、リストには表示されますが、操作はできません。
試しに「IAM」にアクセスしてみます。グループの権限設定で S3 に関する権限設定のみを行ったので、こちらも操作できません。
文章にすると長い道のりですね。実際の作業はそんなに時間はかかりません。WEB UI ならファイル更新のハードルも随分下がると思いますので、興味がある方は一度お試しください。
せっかく書いたので、フェンリルでも実際の業務で利用できるか検討してみようと思います。
※ IAM で作成したユーザでログインした後、AWS の管理者アカウントでログインしようとすると失敗する時があります。その際には、IAM のユーザからログアウトし、aws 関連のクッキーを削除すればログインできるようになると思います。