Log目次

【AWS】IAMについて

作成日 2019-08-24更新日 2019-08-24

はじめに

AWSのIAMについてまとめてみたいと思います。

ここで触れるのは、IAMユーザー、IAMグループ、IAMロール、IAMポリシーに関してです。

IAMユーザーとは?

AWSとやりとりをするためにユーザーまたはアプリケーションごとに発行されるものです。

AWSアカウントを発行した際に作成されるアカウントは、ルートアカウントと呼ばれるもので、全てのサービスにアクセスすることができる権限を持ったアカウントです。

そのため、日常的に使用することは推奨されておらず、代わりに権限を絞ったIAMユーザーを作成し、そちら使用することが推奨されています。

IAMグループとは?

IAMユーザーをまとめたものです。 例えば、


IAMロールとは?

IAMロールはエンティティにアクセス権限を付与するものです。

ここでのエンティティとは、各種AWSサービスや別のAWSアカウントなどです。

以下は、ロール作成時のエンティティ作成画面です。

例えば、S3に関する操作権限を持ったIAMロールを作成し、EC2インスタンスに付与することでEC2上のアプリケーションからS3の操作ができるようになります。

IAMポリシーとは?

IAMユーザーやグループ、ロールに対して各サービスへのアクセス許可や制限を設定するためのものです。

IAMポリシーを適用することで上記のように運営者グループに属するユーザーはEC2とS3にアクセスでき、開発者グループに属するユーザーはS3にのみアクセス可能といった制限を行うことができます。

下記はIAMユーザーにポリシーを設定する際の画面ですが、IAMユーザーの場合は、直接ポリシーを設定するよりも、グループを使ってアクセス管理する方が推奨されてるみたいです。

アプリケーションからの利用はIAMユーザー?IAMロール?

アプリケーションから各種AWSのサービスを利用する際はIAMユーザー、IAMロールどちらを使用するのが良いでしょう?

結論から言うと、IAMロールを使用するのが良いと思います。

理由は、認証情報をアプリケーション側にハードコーディングする必要がないので漏洩の心配がないからです。

EC2インスタンスにS3に画像をアップロードするアプリケーションデプロイする場合を考えてみます。 IAMユーザーの場合は、作成するとアクセスキー、シークレットアクセスキーが発行されるので、この2つの認証情報をアプリケーションの設定ファイルに記載して、EC2インスタンスにアプリケーションをデプロイする必要があります。

次にIAMロールの場合ですが、IAMロールはEC2のインスタンスにS3へのアクセス権限を付与するためアプリケーションのコードに認証情報を持つ必要がありません。

そのため、認証情報をAWS側で管理してくれるIAMロールの方がアプリケーションからAWSの各種サービスを利用する際には適していると考えます。

IAMロールの作成

実際にIAMロールを使用してみます。ここでは、EC2インスタンスにS3へのアクセス権限を付与します。

まずは、IAMロールの作成です。

AWSマネジメントコンソールから遷移します。

遷移したら、左のメニューからロールを選択します。

選択すると下記の画面になるので、ロールの作成を押下します。

次にどのエンティティに対してのロールを作成するか選択します。

ここでは、EC2インスタンス設定するので、AWSサービスを選択し、画面下のリンク一覧からEC2を選択し、次に進みます。

次に適用するポリシーを選択します。

AmazonS3FullAccessを選択し、次へ進みます。

必要に応じてタグをつけます。

最後にロール名を入力します。

以上でIAMロールの作成は終了です。

IAMロールのEC2インスタンスへの適用

作成した、IAMロールをEC2インスタンスに設定します。

対象のインスタンスを選択し、アクション>インスタンスの設定>IAMロールの割り当て/置換を選択します。

この画面で、先ほど作成したIAMロールを選択して終わりです。

まとめ

AWSのアクセス管理の仕組みであるIAMに関してまとめつつ、IAMロールの作成と適用に関してまとめてみました。

実際に使用する場合は、


上記なような感じが良いのかと思います。

参考

(公式)ID (ユーザー、グループ、ロール)