本記事ではAWS Control Towerのリージョン拒否設定について解説します。
AWS Control Towerの概要
AWS Control Towerは、AWSにおけるマルチアカウント環境を簡単にセットアップし、管理するためのサービスです。このサービスは、AWSのベストプラクティスに基づいてアカウントを自動的にセットアップし、セキュリティとコンプライアンスを強化するためのガードレールを提供します。AWS Control Towerを利用することで、組織全体で一貫した管理体制を構築することができ、運用の効率化やリスクの軽減に寄与します。
リージョン拒否設定の必要性
AWS Control Towerを使用したリージョン拒否設定は、企業がクラウドを利用するにあたり、セキュリティを強化するための設定の1つとなります。クラウド環境では、データが様々な地理的リージョンに配置されることが可能です。これはサービスの冗長性やアクセスの速度向上には寄与しますが、同時にデータのセキュリティに対する考慮すべき要素も増えるかと思います。
特定の地域では法令や規制が異なり、それに伴うリスクが変わるため、企業はどのリージョンでサービスを使用するかを慎重に選択しなければならなくなる場面もあるかと思います。
リージョン拒否設定のメリット
-
データ主権の遵守: 特定のリージョンでのデータ配置を制限することで、重要なデータが不意に不適切な法的管轄に置かれることを防ぎます。これは特に、GDPRやその他の地域特有のデータ保護法に準拠したい企業にとって重要な事項となります。
-
セキュリティリスクの軽減: 全ての地域が同じセキュリティ基準を保証するわけではありません。リージョン拒否設定を活用して、リスクが高いと判断されるリージョンでのサービス利用を防ぐことで、企業全体のセキュリティを強化できます。
-
コンプライアンスの維持: 企業のガバナンスやコンプライアンスの基準を自動的に適用することで、指導的なポリシーを遵守しやすくなります。これにより、監査の際に発見される問題を未然に防ぎ、管理コストを削減できます。
-
無駄なコストの削減: 不要なリージョンでのサービス展開を防ぎ、予算の浪費を防ぎます。これは、特に多くのサービスがリージョン単位で価格が異なる場合に影響が大きくなります。
リージョン拒否の種類
まず、リージョン拒否の方法として2つの方法がAWS Control Towerでは用意されています。
1つ目は、[AWS-GR_REGION_DENY]です。
「ランディングゾーンの設定」から設定できる設定となっており、Contorol Towerの管理しているアカウント全体に一括設定ができます。
2つ目は[CT.MULTISERVICE.PV.1]です。
こちら[すべてのコントロール]から設定できる設定となっており、OU単位でリージョン拒否設定ができます。
適用したい範囲でそれぞれ使い分けが出来そうです。
リージョン拒否時に禁止されるアクション
リージョン拒否設定をしたときに、グローバルサービスは使えなくなったりしないのか?と疑問に持たれる方もいるかと思いますので、実際にリージョン拒否設定を導入した際に設定されるSCPの設定を見てみましょう。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CTMULTISERVICEPV1", "Effect": "Deny", "NotAction": [ {{ExemptedActions}} "a4b:*", "access-analyzer:*", "account:*", "acm:*", "activate:*", "artifact:*", "aws-marketplace-management:*", "aws-marketplace:*", "aws-portal:*", "billing:*", "billingconductor:*", "budgets:*", "ce:*", "chatbot:*", "chime:*", "cloudfront:*", "cloudtrail:LookupEvents", "compute-optimizer:*", "config:*", "consoleapp:*", "consolidatedbilling:*", "cur:*", "datapipeline:GetAccountLimits", "devicefarm:*", "directconnect:*", "ec2:DescribeRegions", "ec2:DescribeTransitGateways", "ec2:DescribeVpnGateways", "ecr-public:*", "fms:*", "freetier:*", "globalaccelerator:*", "health:*", "iam:*", "importexport:*", "invoicing:*", "iq:*", "kms:*", "license-manager:ListReceivedLicenses", "lightsail:Get*", "mobileanalytics:*", "networkmanager:*", "notifications-contacts:*", "notifications:*", "organizations:*", "payments:*", "pricing:*", "quicksight:DescribeAccountSubscription", "resource-explorer-2:*", "route53-recovery-cluster:*", "route53-recovery-control-config:*", "route53-recovery-readiness:*", "route53:*", "route53domains:*", "s3:CreateMultiRegionAccessPoint", "s3:DeleteMultiRegionAccessPoint", "s3:DescribeMultiRegionAccessPointOperation", "s3:GetAccountPublicAccessBlock", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetMultiRegionAccessPoint", "s3:GetMultiRegionAccessPointPolicy", "s3:GetMultiRegionAccessPointPolicyStatus", "s3:GetStorageLensConfiguration", "s3:GetStorageLensDashboard", "s3:ListAllMyBuckets", "s3:ListMultiRegionAccessPoints", "s3:ListStorageLensConfigurations", "s3:PutAccountPublicAccessBlock", "s3:PutMultiRegionAccessPointPolicy", "savingsplans:*", "shield:*", "sso:*", "sts:*", "support:*", "supportapp:*", "supportplans:*", "sustainability:*", "tag:GetResources", "tax:*", "trustedadvisor:*", "vendor-insights:ListEntitledSecurityProfiles", "waf-regional:*", "waf:*", "wafv2:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": {{AllowedRegions}} }, "ArnNotLike": { "aws:PrincipalARN": [ {{ExemptedPrincipalArns}} "arn:*:iam::*:role/AWSControlTowerExecution", "arn:*:iam::*:role/aws-controltower-ConfigRecorderRole", "arn:*:iam::*:role/aws-controltower-ForwardSnsNotificationRole", "arn:*:iam::*:role/AWSControlTower_VPCFlowLogsRole" ] } } } ] }
SCPの記述の通りですが、リージョン拒否設定をしてもNotActionsに設定したアクションはリージョン拒否設定の対象外となるようにSCPが組まれています。
しかし、サービスの制約でリージョン拒否しているリージョンを使用しなくてはならない場合もあるかと思います。
その場合には、[CT.MULTISERVICE.PV.1]での設定のみとなりますが、追加でNotActionsにアクションを追加できる設定があります。
さらに、[CT.MULTISERVICE.PV.1]の設定ではリージョン拒否設定の除外とするIAMプリンシパルも除外として設定できます。
特定のIAMロールは制御の対象外などの設定ができるようになっています。
まとめ
多くの企業様では個別で制御が必要な場面があるかと思いますので、[CT.MULTISERVICE.PV.1]でリージョン拒否設定を行う方が柔軟性がた高そうと感じました。
簡単にですが、Control Towerのリージョン拒否についての紹介でした。