MENU
オンライン講座開催中

AWSのIAMロールを最小権限に絞る方法【S3バケット単位で制限する】

AWSのIAMロールを最小権限に絞る方法【S3バケット単位で制限する】

AWSのEC2インスタンスにはIAMロールをアタッチして、S3などのサービスへのアクセス権限を与えることができます。

ただし最初に設定した AmazonS3FullAccess は「全部のS3バケットに何でもできる」という広すぎる権限。今回はこれを charakatsu-media バケットだけに絞る「最小権限の原則」を実践しました。


目次

最小権限の原則ってなに?小学生でもわかる説明

イメージは給食当番の仕事です。

  • AmazonS3FullAccess(全員の給食を自由にできる):危ない
  • カスタムポリシー(自分のクラスの給食だけ担当):これが正解

必要な範囲だけ権限を与えることで、万が一EC2が乗っ取られても被害を最小限に抑えられます。


今回やったこと

  1. AmazonS3FullAccess を削除
  2. charakatsu-media バケット専用のカスタムポリシーを作成
  3. 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のみ)
AmazonRDSFullAccessAmazonRDSFullAccess(そのまま)
AmazonEC2ReadOnlyAccessAmazonEC2ReadOnlyAccess(そのまま)

ハマったポイント

JSONの入力欄にデフォルトのテキストが入っていて、そこに追記しようとしてしまいました。

既存のテキストは 全選択(Command + A)→ Delete で消してから貼り付けるのが正解です。


まとめ

  • AmazonS3FullAccess を削除して charakatsu-s3-policy に差し替え
  • charakatsu-media バケットだけに権限を絞ることができた
  • 最小権限の原則はAWSセキュリティの基本中の基本

次回はIAMのまとめとして、CLF(AWS認定クラウドプラクティショナー)試験でよく出るIAM問題を解いてみます。

目次