はじめに
IAMポリシーはAWSサービスに対しての権限のポリシーのことです。
AWSサービスやIAMユーザーの作成時に必ず必要になるので、理解しておきましょう。
この記事では、実務でも使用するIAMポリシーを自作で作成する設定手順もご紹介します。
IAMポリシーとは
IAMポリシーはLambda関数やEC2インスタンス等のAWSサービスに割り当てるIAMロールに割り当てたり、IAMユーザーやIAMグループ対してアクセス制御を行うポリシーのことです。
このポリシーを正しく設定することでセキュリティを強固にすることができます。
IAMポリシーは自作で作成することができて、細かいカスタマイズを行うことができます。特定のEC2インスタンス・SQS・CloudFront等へのアクセスの制限をできる点ですね。
これにはIPアドレス制限も行うことが可能です。
実務では特定のIPアドレスのみ許可する設定や特定のインスタンスのみ実行できるようにする設定を行う場合が頻繁に出てくるので、特定リソースのみアクセスできるようにする方法は必ず抑えておきましょう。
カスタムIAMポリシー設定手順
IAMポリシーを自作で作成する方法をご紹介します。
今回はIAMユーザーにアタッチしたら「特定のS3バケットの取得と更新を特定のIPアドレスからのアクセス時のみ行うことができるポリシー」を作成していきます。
- ポリシーの作成
- アクセス許可の指定
ポリシーを作成をします。
どのサービスに対しての設定かを選択します。
どの実行アクションを行えるようにするか設定します。S3の取得と更新を行えるようにしたいので「GetObject」と「PutObject」を選択して、Effectは「許可」にしましょう。
Effectを拒否に設定した場合はそのリソースに対してのアクセス権限がなくなります。
許可と拒否を書いてると設定した順番にかかわらず拒否の方が優先されるので、全権限ポリシーを与えて、拒否ポリシーを設定したら拒否ポリシー以外の設定を使用できる設定になります。
この実行アクションの設定を行うリソースを指定します。今回は「s3-kamecloud-test-backet」に設定しています。
次にIPアドレス制限を行います。ここでは外部サーバー(Webサーバー)でIAMユーザーを設定する前提で書いていきます。
固定IPアドレスがある外部サーバーがS3にアクセスする場合にこの設定を使用します。
※AWSのみで完結する場合はIPアドレス制限を行わず、EC2インスタンスにIAMロールを割り当てることが多いですし、推奨されています。
外部サーバーの場合はJSONを直接書き込んで、アクセス権限を管理する必要があります。
JSONが入力する欄があり、今まで設定した内容も反映されていると思うので、対象のIPアドレスに対して制限をかけていきます。
IPアドレスはS3にアップロードする端末・サーバーのパブリックIPアドレスを指定してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::s3-kamecloud-test-backet/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.10"
}
}
}
]
}
気を付けてほしいのがIPからリクエスト済みというところは外部サーバーの設定ではなくEC2インスタンスのIPアドレスを前提としているので、間違えないようにしてください。
後はIAMポリシーの名前を入れて作成すればカスタムIAMポリシーが作成できます。
まとめ
IAMポリシーはIAMユーザーやIAMロールを作成するうえで必ず必要になってくるサービスです。
実務では必ずリソースの制限を行うことになると思うので押さえておきましょう。