EC2インスタンスにIAMロールをアタッチしてアクセス制御してみた

記事タイトルとURLをコピーする

新年あけましておめでとうございます。CI部5課の山﨑です。研修を終えて無事に大阪に帰還してホッとしている最近です。 今回はIAMロールについて理解が浅かったので、基本的な操作にはなりますが手を動かして実際の動きを見てみました。

そもそもIAMとは

IAMは AWS Identity and Access Managementの略で、AWSリソースへのアクセスを安全に管理するためのWebサービスで、AWS Well-Architected Frameworkの「セキュリティ」における5つのベストプラクティスのうちの「アイデンティティ管理とアクセス管理」を可能にするサービスです。余談ですが Identityとはどういう意味なんだろう、と疑問に思ってAWSドキュメントを読んでいるとAWSではAWSアカウント上のルートユーザーやIAMユーザーを Identity という呼び方をしていることが分かりました。

参照ドキュメント: AWS Well-Architected Framework IAMとは

IAMロールについて

IAMにおけるアクセス管理の中でもIAMロールは、IAMユーザーに対するアクセス制御ではなく、AWSリソースに対するアクセス制御を行います。よって、IAMロールはユーザーにアタッチするのではなく、AWSリソースにアタッチします。今回はEC2インスタンスにS3へのReadアクセスのみを許可したIAMロールをアタッチしてみました。

いざ、ハンズオンへ

まずはマネジメントコンソールからIAMのページへ遷移して、ロールの作成をクリック

EC2インスタンスにアタッチするためのロールを作成するので、EC2サービスを選択

AmazonS3ReadOnlyAccessを選択。次の画面で任意のロール名を付与してください。

ロールの作成が完了したらEC2インスタンスを作成します。「インスタンスの詳細の設定」のIAMロールのプルダウンから先程作成したロール名を選択

これでIAMロールをアタッチしたEC2インスタンスを作成することができました。

それでは読み取み権限以外のアクセスが制限されているかCLIを使って確認してみます。

読み取り(ls)は実行され、削除(rm)とバケット作成(mb)はAccess Deniedでアクセス拒否されていることが確認できました。

IAMのサービスはかなり奥が深そうなので、少しずつ自分のものにしていきます!