Hanatare's PaPa

Make life a little richer.

Virtual Space of Hanatare's PaPa

人生をほんの少しだけ充実させる

【AWS】EC2からS3を利用するためのIAMロールを作成

f:id:nothing-title:20210327000144j:plain

AWSには様々なサービスがあります。そしてそのサービスを使うためにまず設定しないといけないのがIAMです。以下の記事でも少しだけ触れましたが、今回はそのIAMについてもう少し詳細な説明を加えたいと思います。

www.hanatare-papa.jp

IAMとは

IAMというのはAWSのユーザー管理や、アクセス制御に関するサービスのことです。IAMを使い、「認証」「認可」を正しく設定することで、AWSの利用者や、AWSのサービスがアクセスできる範囲を制御することができます。「認証」「認可」は似た言葉ですが少し異なります。

認証 相手が誰(何)なのか確認すること
認可 リソースへのアクセス権限を与えること

IAMの基本的な機能として以下3つがあります。

IAM ユーザー
IAMポリシー
IAM ロール

IAMユーザー

AWSサービスを利用するユーザーです。AWSサービスを利用する際に使うIDを持ちます。 IAMユーザーはIAMグループというグループ単位に分類することが可能です。 IAMグループは会社単位や、部署単位、チーム単位などそれぞれの用途によって分けるのがよいでしょう。

IAMポリシー

「誰が」「どのAWSサービスの」「どのリソースに対して」「どんな操作を」「許可する(許可しない)」を設定したものです。設定したポリシーをユーザー(グループ)やロールに付与してアクセスを制御します。設定自体はJSON形式で記述することも可能です。

IAM ロール

IAMロールはユーザーやグループと異なり、EC2やLambdaなどのAWSサービスや他のアカウントに対してにAWS の操作権限を付与するための仕組みです。今回のハンズオンでEC2がS3に対してアクセスができるようにするためのIAMロール・IAMポリシーの作成をしたいと思います。

【ハンズオン】EC2からS3にアクセスできるようにする

作成イメージは以下のようにEC2からS3にアクセスができるように設定をしたいと思います。

f:id:nothing-title:20210324232448p:plain

前提

このハンズオンの前提は以下2点です。

     
  • EC2インスタンスは作成済
  •  
  • S3バケットは作成済

IAMロールがデフォルトの場合、EC2からS3にアクセスはできません。AWSコマンドを使ってS3にlsをしても以下のようなエラーになるはずです

[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ 

IAMロールの作成

IAMのロールの画面から『ロールの作成』をクリックします。

ロールの作成画面①で『信頼されたエンティティの種類を選択』欄から『AWSサービス』を選択し、『ユースケースの選択』からは、今回S3の操作権限を割り当てるEC2を選択します。最後に『次のステップ:アクセス権限』をクリックします

ロールの作成画面②でポリシーを選択します。今回は『AmazonS3FullAccess』を選択し、『次のステップ:タグ』をクリックします

作成するロールのタグを設定し、『次のステップ:確認』をクリックします

ロール名を入力し、他の内容に齟齬がなければ『ロールの作成』をクリックしてロールを作成します。

IAMロールをEC2に割り当てる

S3フルアクセスのロールを作成したら、EC2にこのロールを割り当てます。

f:id:nothing-title:20210326234005p:plain

EC2の一覧画面からS3へのアクセス可にするEC2を選択し、『アクション』をクリックし、『セキュリティ』>『IAMロールを変更』を選択します。

f:id:nothing-title:20210326234254p:plain

IAMロールの辺国画面で『IAMロール』欄で作成したS3 へのフルアクセス権限を持つロールを選択し、『保存』をクリックします。

以上で、IAMロールの割り当ては完了です。最後に確認をしたいと思います。

結果確認

最後に先程S3アクセスをした際にアクセスできなかったEC2にSSHで接続し、同じコマンドを実行して結果を確認します。

[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ aws s3 ls
2021-03-26 14:14:38 YYYYYYY(バケット名)
[ec2-user@ip-XXX-XXX-XXX-XXX ~]$ 

まとめ

今回はIAMについて整理をしてみました。IAMはAWSを利用していくうえで必ず利用するサービスになります。AWSサービスを使っていると意外にIAMの設定漏れやミスで意図したアクセスができない。もしくはアクセスができすぎてしまうということがあるかと思います。IAMユーザやIAMロールを正しく組み合わせて利用することで、セキュアにAWSを利用することができます。今回の記事がその一助になれば幸いです。以下にAWSが推奨するIAMベストプラクティスのサイトがありますのでリンクを貼っておきます。

docs.aws.amazon.com

最後まで読んでいただきありがとうございました。