カテゴリー
AWS Organizations

AWS Organizationsのサービスコントロールポリシー(SCP)で組織内(OU)のアカウントの権限を制限する

サービスコントロールポリシー(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リソース状態が取得されていることが確認できました。