この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
IAMアカウントはIPアクセス制限ができます
IAMアカウントは、AWSアカウントの子アカウントとして複数作成することができます。また、セキュリティ設定が多くあります。ここで、ポリシーの指定でIPアクセス制限を付けることができます。しかし、設定を間違えると全く意味をなさなくなってしまいますので、この設定方法について注意点を紹介しようと思います。
- アクセスキーとシークレットキー
- セキュリティ証明書
- パスワード
- 二要素認証でバイス
- パーミッション:ユーザポリシー
- パーミッション:グルップポリシー
IAMポリシーの設定
IAMポリシーでは、詳細なアクセス制限を付けることができます。たとえば、グループポリシーとして全てのサービスに対する読み込み権限を付与して、ユーザポリシーとしてEC2操作権限を付ける等です。
設定の特徴としては、「許可の足し算」をしていくという考え方が分かりやすいかもしれません。
許可リスト形式のIPアクセス制限
特定のIPアドレスからのアクセスのみ許可したい場合、おそらく以下のように設定すると思います。
{
"Statement": [
{
"Sid": "AllowRestriction",
"Action": [
"ec2:*"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": "1.1.1.1/32"
}
}
}
]
}
これで、EC2に対するアクセスは、IP1.1.1.1からのみに制限されます。しかし、ここでセキュリティ上のリスクが発生します。IAMポリシーの特徴は「許可の足し算」をしていくようだとお伝えしました。ということは、もしこのIAMアカウントに他のポリシーを付与したときに足し算によって制限されたIPが無意味になってしまうかもしれません。
以下は、同じユーザに追加したポリシーです。EC2への読み込みを許可しました。
{
"Statement": [
{
"Action": "ec2:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
それでは、AWS管理コンソールからインスタンス一覧を確認してみましょう。なんと、IPアクセス制限が効いていませんでした。これは困りましたね。
例外リスト形式のIPアクセス制限
許可リストのポリシーを複数用いてしまうと、片方に設定した制限を無効にしてしまうことが分かりました。そこで、ここでは例外リスト形式でIPアクセス制限を掛けたいと思います。以下をご覧ください。まずEC2の全てのリソースに対するリクエストを拒否し、例外として特定のIPアドレスを記述しています。
{
"Statement": [
{
"Sid": "AllowRestriction",
"Action": [
"ec2:*"
],
"Effect": "Deny",
"Resource": [
"*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "1.1.1.1/32"
}
}
}
]
}
上記のポリシーに以下のポリシーを追加します。
{
"Statement": [
{
"Action": "ec2:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
AWS管理コンソールからEC2を閲覧できるか確認してみましょう。
閲覧できませんでしたね!!なお、この例外リスト型のIPアクセス制限は、複数の例外リストによる足し算はできません。全くアクセスできなくなるかもしれませんので気をつけて下さい。
まとめ
許可リスト型のアクセス制限と例外リスト型のアクセス制限の違いは伝わりましたでしょうか。機能や設定の挙動を正しく理解してAWSを乗りこなしましょう〜。