サービスコントロールポリシー(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", "eu-west-1" ] }, "ArnNotLike": { "aws:PrincipalARN": [ "arn:aws:iam::*:role/OrganizationAccountAccessRole", "arn:aws:iam::*:role/Role1AllowedToBypassThisSCP" ] } } } ] }
Organizationsサービスの[ポリシー]-[サービスコントロールポリシー]より「ポリシーの作成」をクリックします。

SCPの割り当て
作成したSCPをOUに割り当てます。
[アカウントの整理]よりOUを選択して先ほど作成したポリシーをアタッチします。

確認
管理者ロール以外のユーザー
通常ユーザーでコンソールにログインしてオレゴンリージョンのEC2サービスのメニューを開きます
EC2リソースの状態の取得に失敗していることが確認できます。

リージョンを東京に変更します。
するとリソースの状態が取得されていることが確認できました。

管理者ロールのユーザー
別のアカウントから管理者ロールでスイッチロールします。
オレゴンリージョンのEC2サービスをみると、EC2リソース状態が取得されていることが確認できました。
