特定リージョン以外の操作をSCPで制限した場合、マネジメントコンソール上のグローバルサービスの表示がどうなるのか調べてみた

記事タイトルとURLをコピーする

こんにちは!エンタープライズクラウド部技術2課の日高です。
特定リージョン以外の操作をSCPで制限した場合、グローバルサービス(検証ではS3を利用しました)のマネジメントコンソールでの表示はどうなるのか気になったので調べてみました。

気になったこと

特定リージョン以外の操作をSCPで制限した場合、グローバルサービス(禁止されているリージョンのS3バケットなど)の表示はどのように表示されるのか)が気になりました。

S3を例にすると「操作はもちろんできないだろうが、そもそもすべてのリージョンのバケットが表示されないのか?それとも禁止しているリージョンのバケットのみ表示されないのか?」などと考えていました。

結論

特定リージョン以外の操作を、「*」で拒否するSCPを作成すると、グローバルサービスは表示できませんでした。
しかし、「NotAction」を使用することで特定リージョン以外での操作を制限しつつグローバルサービスを表示することができました。

方法は公式ドキュメントに記載していました.....
以下の公式ドキュメントをご覧ください。

docs.aws.amazon.com

検証内容

1.特定リージョン以外の操作を「*」で拒否するSCPの作成

以下のように、eu-central-1、eu-west-1以外での操作を拒否するSCPを作成しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllOutsideEU",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": [
            "eu-central-1",
            "eu-west-1"
          ]
        }
      }
    }
  ]
}

2. 特定リージョン以外の操作を「*」で拒否するSCPの適用結果

1で作成したSCPとすべてのアクションを許可したSCP(FullAccess)を適用した際のグローバルサービス(今回はRoute53とS3を例にしています)の表示結果です。

※FullAccess

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}
  • Route53

  • S3

上記のように、グローバルサービスのリソースは表示されませんでした。

当たり前ではありますが、上記のように「eu-west-1(制限していないリージョン)」でのEC2の表示はできました。

3. 特定リージョン以外での操作を制限しつつグローバルサービスを表示するSCPの作成

こちらのドキュメントを参考にして作成したSCPがこちらになります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllOutsideEU",
      "Effect": "Deny",
      "NotAction": [
        "a4b:*",
        "acm:*",
        "aws-marketplace-management:*",
        "aws-marketplace:*",
        "aws-portal:*",
        "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:*",
        "route53-recovery-cluster:*",
        "route53-recovery-control-config:*",
        "route53-recovery-readiness:*",
        "s3:GetAccountPublic*",
        "s3:ListAllMyBuckets",
        "s3:ListMultiRegionAccessPoints",
        "s3:PutAccountPublic*",
        "shield:*",
        "sts:*",
        "support:*",
        "trustedadvisor:*",
        "waf-regional:*",
        "waf:*",
        "wafv2:*",
        "wellarchitected:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": [
            "eu-central-1",
            "eu-west-1"
          ]
        }
      }
    }
  ]
}

4. 特定リージョン以外での操作を制限しつつグローバルサービスを表示するSCPの適用結果

3で作成したSCPを適用した際のグローバルサービス(今回はRoute53とS3を例にしています)の表示結果です。

  • Route53

  • S3

上記のように、グローバルサービスのリソースを表示することができました。
ただ、S3では制限しているリージョンの情報はバケットの概要(AWSリージョン、ARN、作成日)以外はエラー表示になっていました。

まとめ

今回は簡単な検証でしたが、特定リージョン以外の操作を制限した状態で、マネジメントコンソールにグローバルサービスの表示ができるようなSCPについて学ぶことができてよかったです。

本記事が誰かの助けになれば幸いです。

日高 僚太(執筆記事の一覧)

EC部ソリューションアーキテクト2課 / AWS認定資格 12冠

2022年IT未経験で新卒入社しました。
最近はダーツとサウナが気になっています!
記事に関するお問い合わせや修正依頼⇒ hidaka@serverworks.co.jp