この記事の概要
インフラの運用において情報が安全に守られているかを確認するセキュリティを扱います。
IAMとは
AWSを利用するユーザーの権限を管理するサービスです。
⚫︎ポリシー
アクセス許可のことで、どのサービスの、どのリソースに、どんな操作するか
⚫︎ユーザー
個々のアカウントのユーザー
⚫︎グループ
IAMユーザーの集合
⚫︎ロール
一時的にアクセスを許可したアカウントが発行でき、EC2やLambdaなどのAWSリソースに
権限を与えるために使います。
ポリシー グループ ユーザー ロールの関係性を表した資料です。
IAMポリシーを作成
Developerポリシー
とDirectorポリシー
を作成します。
⚫︎Developerポリシー
EC2、RDSの全操作ができます。
⚫︎Directorポリシー
EC2の読み取りに使えます。
IAMを開いてポリシーを開き、ポリシーを作成していきます。
developerポリシーから作っていきます。サービスの選択をクリックします。EC2を入力します。
Directorポリシーから作っていきます。ポリシーの作成をクリックします。
アクションは読み込みだけできるようにします。
IAMとグループとユーザーを作成
上で作ったポリシーをベースにグループを作っていきます。
DevelopersにはLuffyとZoroというユーザーを作ります。DirectorsにはAceというユーザーを作ります。
IAMに移動します。そしてユーザーグループからグループを作成します。
developerポリシーを選択します。そしたらグループの作成をします。
こうしてグループが作成されました。
そしてdirectorsグループも作ります。
directorポリシーを選択します。そしてグループを作成します。
次にユーザーを追加していきます。
まずはdevelopersからです。
アクセス許可の設定ですが、ユーザーグループの追加です。
developersにチェックを入れます。
タグは今回は入力不要です。最後は確認をしてユーザーを作成します。
Eメールで送信しておきましょう。そしてcsvのダウンロードをしておきます。
こうしてユーザー名のLuffy,Zoroが作成されました。グループがdevelopersの方に所属しています。
次にdirectorsユーザーを作成していきます。ユーザー追加します。手順はdevelopersとほぼ同じです。
タグはつけずにユーザーを作成していきます。
こうしてユーザーが作成されました。メールを送信してcsvをダウンロードします。
こうしてAceユーザーが作成されました。directorsになっているのを確認してください。
一回サインアウトして作成したユーザーでログインしてください。
ユーザー名をLuffy、Zoro、Aceにしてみてください。パスワード変更の画面になるはずです。
ユーザー名がLuffyでログインできました。developersユーザー(Luffy)はEC2とRDSの全操作ができます。
EC2で動かしてみます。
インスタンスを作成してください。developersの方はEC2が起動できるはずです。
サインアウトをしてdirectorsユーザー(Ace)からログインしてください。
こちらでもEC2を作成していきます。するとインスタンスの作成ができないことがわかると思います。
これらがIAMで行う権限管理です。それぞれのグループに適切な権限を割り当て適切な管理をします。
最後に自分のユーザーに戻っておいてください。
IAMロールを作成
IAMロールは一時的にアクセスを許可したアカウントが発行でき、EC2やLambdaなどのAWSリソースに
権限を与えるために使います。
ここではWebというロールを作成します。
まずはEC2のインスタンスを開きます。パブリックIPアドレスをコピーします。こちらでSSH接続してください。
Downloads % ssh -i "aws-infra-ssh-key.pem" ec2-user@52.194.227.41
#省略
[ec2-user@ip-10-0-12-220 ~]$
S3のバケットを取得していきます。
[ec2-user@ip-10-0-12-220 ~]$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
上のようにEC2からS3を操作できない状態です。
そこでIAMを開きます。ロールを選び、ロールを作成します。
今回はEC2からS3を操作するのでEC2を選択します。
ポリシーはS3で検索してAmazonS3FullAccessを選択します。
ポリシーがAmazonS3FullAccessになっていることを確認します。そしてロールを作成します。
そのために今作ったaws-infra-webを今作ったロールにアタッチします。
アクションからセキュリティを選び、IAMのロールを変更します。
IAMロールをaws-infra-webにします。そしてIAMロールを更新します。
アタッチができたと確認したらターミナルに戻ります。そしてS3のバケット一覧を取得します。
[ec2-user@ip-10-0-12-220 ~]$ aws s3 ls
2022-08-29 09:57:04 aws-cloudtrail-logs-709517189173-62bafeba
2022-08-29 09:50:56 aws-cloudtrail-logs-709517189173-64fea852
2022-08-29 10:14:45 aws-cloudtrail-logs-709517189173-a4b38cbc
2022-08-29 09:52:56 aws-cloudtrail-logs-709517189173-dfae4e54
2022-09-13 09:24:09 aws-infra-wordpress-nori-backet
2022-09-21 07:00:16 cf-templates-cald7ahrw4fu-ap-northeast-1
2022-09-21 10:08:50 cf-templates-cald7ahrw4fu-us-east-1
こうして ロールをアタッチしたことでEC2からS3の操作ができることがわかりました。
*ロールはEC2やLamdaから別のAWSサービスを操作する時に使えます。
IAMのベストな方法
-
個々にIAMユーザーの作成
をします。 ユーザーをグループに所属させ、グループに権限を割り当てます。
-
権限を最小限
にします。 - EC2インスタンスから実行し、アプリケーションにはロールを使います。
- 定期的に
不要な認証情報を削除
します
資料