🐥
AWS Organizations で SCP を設定して利用を制限する
AWS Organizations 配下の AWS アカウントまたは Organization unit に対して、SCP (Service Control Policy) を設定して利用できるサービス等を制限することができます。
設定方法
Organization の管理アカウントで、以下の手順で SCP を設定します。
- 管理コンソール > AWS Organizations
- 制限をおこなう AWS アカウントまたは Organization unit をクリック
- 「Policies」タブ
- 「アタッチ」
- 「ポリシーを作成」
- 以下を入力して「ポリシーを作成」
- ポリシー名: (任意)
- ポリシーを入力 (後述)
- 作成したポリシーをチェックして「ポリシーのアタッチ」
サービスを制限する
AWS アカウントまたは Organization unit に対して、利用できるサービス (API) を制限します。
以下のように利用できないようにする API を指定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"snowball:*"
],
"Resource": "*"
}
]
}
リージョンを制限する
AWS アカウントまたは Organization unit に対して、利用できるリージョンを制限します。IAM や Amazon CloudFront などのグローバルサービスを使用するには、us-east-1 リージョンは必須となります。
例: us-east-1 リージョンのみ利用可能とする
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"us-east-1"
]
}
}
}
]
}
例: us-east-1, ap-northeast-1 リージョンと AWS Chatbot を利用可能とする
AWS Chatbot を使用するには us-east-2 リージョンが必要なようです。us-east-1, ap-northeast-1 での全サービスと、us-east-2 の AWS Chatbot だけ利用できるようにしたいとします。
ポリシーの記述には優先順を指定することができず Deny
が最優先となる(Allow
で一部を除外することはできない)ため、Deny ルールを組み合わせて指定する必要があります。例えば以下のようにします。
- ap-northeast-1, us-east-1 以外のリージョンかつ AWS Chatbot 以外のサービスを拒否
- ap-northeast-1, us-east-1, us-east-2 以外のリージョンにおける全サービスを拒否
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotAction": "chatbot:*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"us-east-1",
"ap-northeast-1"
]
}
}
},
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"us-east-1",
"us-east-2",
"ap-northeast-1"
]
}
}
}
]
}
Discussion