こんにちは
間が空いてしまいましたが、AWS Organizations の SCP を使って制限をかけようシリーズの第3弾です。
第1弾:https://qiita.com/hirosys-biz/items/ecc34f8574094dc6be15
第2弾:https://qiita.com/hirosys-biz/items/48d1db5fcce3bf6547ce
今回はタイトルにあるように特定のIPアドレスからのアクセスに限って、AWS の利用ができるようにするものです。
業界や企業のポリシーで、AWS の操作を特定の IP アドレス(IP アドレス範囲)に限っていることがよくあります。例えば、運用保守チームが利用している IP アドレス範囲のみ操作を認めるといった感じですね。
当社で AWS Organizations を使ってハンズオン、サンドボックス環境を作っていた際に出てきた要件で対応した内容です。
## 制限をかけてみよう
これまでの記事と同様の流れでポリシーを作成し、organizational units (OUs)やアカウントにアタッチします。
ポリシーは以下の通りです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": "*",
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"aws:username": [
"*"
]
},
"NotIpAddress": {
"aws:SourceIp": [
"特定のIPアドレス範囲(例:172.31.1.0/24)"
]
},
"Bool": {
"aws:ViaAWSService": "false"
}
}
}
]
}
簡単な説明
Effect: Deny としているので、以下の条件を満たす場合に操作を拒否する設定です。
- aws:username: "*" としているので、任意のIAM User による操作が対象です。
- NotIpAddressとしているので、aws:SourceIP に指定した特定のIPアドレス範囲以外からのアクセスが対象です。
- aws:ViaAWSService: false としているので、 AWS サービスを経由したものではない(例:AWS CloudFormation による操作ではない)場合が対象です。
動作確認
- まずは、特定のIPアドレスを使用して、SCP を割り当てた AWS アカウントへログインします。
- Amazon EC2 のコンソールを表示します。
- 特定のIPアドレス以外から、SCP を割り当てた AWS アカウントへログインします。
- 2と同様に、Amazon EC2 コンソールを表示します。
特定のIPアドレスからのアクセス
以下の様に EC2 インスタンスの台数などの情報が確認できます。
特定のIPアドレス以外からのアクセス
以下の様に、各種操作が拒否されていることにより、EC2 インスタンスの台数などの情報が API エラーで確認できません。
注意点
特定の IP アドレスを指定しているので、アクセス元の IP アドレスが変わったりすると、本来は正規のアクセスであっても拒否されてしまいますのでご注意ください。
まとめ
久しぶりに SCP まわりのお話でした。今回と以前までにお伝えした内容は、SCP でできることのほんの一部であり、本当に奥が深い機能であります。
各環境の要件に応じたポリシーを作って、アカウントを適切に運用していきましょう!
記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。