サービスコントロールポリシー(SCP)とは
OrganizationsのOU内のアカウントに対して権限を制限できる機能です。
サービスコントロールポリシーとIAMポリシーの両方で許可されたポリシーのみ実行することができます。
今回は下記リンク中の
「例: リクエストされたAWSリージョンに基づいて へのアクセスを拒否するAWS」
を設定していきます。
サービスコントロールポリシーの例
https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps_examples.html#example-scp-deny-region
サービスコントロールポリシー(SCP)有効化
Organizationサービスの[アカウント管理]-[サービスコントロールポリシー]の「有効化」ボタンをクリックします。
この状態では”FullAWSAccess”というポリシーが割り当てられますので全て許可されている状態となります。
SCPの作成
今回はブラックリスト方式でポリシーを追加していきます。
現在のポリシー(FullAWSAccess)に加えて動作を制限するポリシーを追加したいと思います。
具体的には、東京リージョン(ap-northeast-1)とバージニア北部リージョン(us-east-1)以外のリージョンへの要求を拒否します。
ただし、特定のグローバルサービスの通信を除きます。
また、2つの管理者ロールによるリクエストを除外します。
具体的には下記のポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOutsideTokyoGlobal",
"Effect": "Deny",
"NotAction": [
"a4b:*",
"acm:*",
"aws-marketplace-management:*",
"aws-marketplace:*",
"aws-portal:*",
"awsbillingconsole:*",
"budgets:*",
"ce:*",
"chime:*",
"cloudfront:*",
"config:*",
"cur:*",
"directconnect:*",
"ec2:DescribeRegions",
"ec2:DescribeTransitGateways",
"ec2:DescribeVpnGateways",
"fms:*",
"globalaccelerator:*",
"health:*",
"iam:*",
"importexport:*",
"kms:*",
"mobileanalytics:*",
"networkmanager:*",
"organizations:*",
"pricing:*",
"route53:*",
"route53domains:*",
"s3:GetAccountPublic*",
"s3:ListAllMyBuckets",
"s3:PutAccountPublic*",
"shield:*",
"sts:*",
"support:*",
"trustedadvisor:*",
"waf-regional:*",
"waf:*",
"wafv2:*",
"wellarchitected:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"ap-northeast-1",
"us-east-1"
]
},
"ArnNotLike": {
"aws:PrincipalARN": [
"arn:aws:iam::*:role/OrganizationAccountAccessRole",
"arn:aws:iam::*:role/Role1AllowedToBypassThisSCP"
]
}
}
}
]
}
Organizationsサービスの[ポリシー]-[サービスコントロールポリシー]より「ポリシーの作成」をクリックします。
SCPの割り当て
作成したSCPをOUに割り当てます。
[アカウントの整理]よりOUを選択して先ほど作成したポリシーをアタッチします。
確認
管理者ロール以外のユーザー
通常ユーザーでコンソールにログインしてオレゴンリージョンのEC2サービスのメニューを開きます
EC2リソースの状態の取得に失敗していることが確認できます。
リージョンを東京に変更します。
するとリソースの状態が取得されていることが確認できました。
管理者ロールのユーザー
別のアカウントから管理者ロールでスイッチロールします。
オレゴンリージョンのEC2サービスをみると、EC2リソース状態が取得されていることが確認できました。