24時間365日フルマネージドホスティングサービスのデイーネット

IAMロールでEC2からS3をアクセス制御

みなさんこんにちは 花粉が飛び交う季節になり花粉症の方はスギよなくなれ!と思っているでしょう。 花粉症ではないのでいつ花粉症になるのかガクブルな、ディーネット谷口です

さて今回は、AWSのEC2からS3へのアクセスをIAMロールでアクセス制御を行いたいと思います。
まずはデフォルト状態で、EC2からS3にアクセスしようとした場合、以下のようなエラーが発生します

$ aws s3 ls bucket-policy-denet
Unable to locate credentials. You can configure credentials by running "aws configure".



デフォルトでは、認証なしでアクセスが出来ませんので、"credentials" を設定する必要があります 次のコマンドを使用することで自動で認証情報と設定ファイルが作成されます

$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]: 

credentials作成のデメリット

・認証情報(credentials)と設定ファイル(config)がサーバ上に存在する
・EC2毎に"aws configure"実行する必要がある

どちらかというと、認証情報がサーバ上にある事が一番の問題です
この問題を解決するのに、"IAM Roles for EC2"を利用しましょう

IAM Roleを作成

SnapCrab_NoName_2018-3-14_16-15-44_No-00.png
IAM Management ConsoleのRolesで「ロールの作成」を押下する


SnapCrab_NoName_2018-3-14_16-31-7_No-00.png このロールを使用するサービスからEC2を選択して次へ


SnapCrab_NoName_2018-3-14_16-31-31_No-00.png アクセス権限ポリシーから"AmazonS3FullAccess"を選択して次へ


SnapCrab_NoName_2018-3-14_16-32-18_No-00.png ロール名を入力し、次へ


SnapCrab_NoName_2018-3-14_16-33-0_No-00.png ロールが作成されているかを確認
無事作成されたら、EC2に作成ロールを割り当てする

EC2にロールの割り当て

SnapCrab_NoName_2018-3-14_16-34-25_No-00.png IAMロールの割当/置換を選択


SnapCrab_NoName_2018-3-14_16-35-5_No-00.png IAMロールの割当/置換がべ無事完了したことを確認


Role設定後の動作確認

EC2から認証情報(credentials)がない状態でアクセスが行えるか確認

Roleを指定していないと以下のような結果でしたが

$ aws s3 ls bucket-policy-denet
Unable to locate credentials. You can configure credentials by running "aws configure".

Roleの指定がされているので、S3へのアクセスが行えるようになりました

$ aws s3 ls bucket-policy-denet
2018-03-14 03:13:37         16 index.html

特に認証情報がなくても問題なくアクセスが出来るようになりました。 IAMロールを利用することでサーバ上に認証情報を置く必要がなくなりますので、 セキュリティ対策として、ロールで管理をする方式を取っていただければと思います。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar