AWSのEC2インスタンスにはIAMロールをアタッチして、S3などのサービスへのアクセス権限を与えることができます。
ただし最初に設定した AmazonS3FullAccess は「全部のS3バケットに何でもできる」という広すぎる権限。今回はこれを charakatsu-media バケットだけに絞る「最小権限の原則」を実践しました。
目次
最小権限の原則ってなに?小学生でもわかる説明
イメージは給食当番の仕事です。
AmazonS3FullAccess(全員の給食を自由にできる):危ない- カスタムポリシー(自分のクラスの給食だけ担当):これが正解
必要な範囲だけ権限を与えることで、万が一EC2が乗っ取られても被害を最小限に抑えられます。
今回やったこと
AmazonS3FullAccessを削除charakatsu-mediaバケット専用のカスタムポリシーを作成- EC2ロールにアタッチ
手順① AmazonS3FullAccessを削除する
IAMコンソール →「ロール」→ EC2-S3-Backup-Role をクリック。
「許可」タブに表示されている AmazonS3FullAccess の右側の「削除」をクリック→「デタッチ」で確定。
手順② カスタムポリシーを作る
「許可を追加」→「インラインポリシーを作成」をクリック。
「JSON」タブを選んで、既存のテキストを全部消してから以下を貼り付けます。
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::charakatsu-media",
"arn:aws:s3:::charakatsu-media/*"
]
}
]
}
「次へ」を押してポリシー名を入力します。
charakatsu-s3-policy
「ポリシーの作成」で完了!
変更前・変更後の比較
| 変更前 | 変更後 |
|---|---|
| AmazonS3FullAccess(全バケット) | charakatsu-s3-policy(charakatsu-mediaのみ) |
| AmazonRDSFullAccess | AmazonRDSFullAccess(そのまま) |
| AmazonEC2ReadOnlyAccess | AmazonEC2ReadOnlyAccess(そのまま) |
ハマったポイント
JSONの入力欄にデフォルトのテキストが入っていて、そこに追記しようとしてしまいました。
既存のテキストは 全選択(Command + A)→ Delete で消してから貼り付けるのが正解です。
まとめ
AmazonS3FullAccessを削除してcharakatsu-s3-policyに差し替えcharakatsu-mediaバケットだけに権限を絞ることができた- 最小権限の原則はAWSセキュリティの基本中の基本
次回はIAMのまとめとして、CLF(AWS認定クラウドプラクティショナー)試験でよく出るIAM問題を解いてみます。

