こんにちは!エンタープライズクラウド部技術2課の日高です。
特定リージョン以外の操作をSCPで制限した場合、グローバルサービス(検証ではS3を利用しました)のマネジメントコンソールでの表示はどうなるのか気になったので調べてみました。
気になったこと
特定リージョン以外の操作をSCPで制限した場合、グローバルサービス(禁止されているリージョンのS3バケットなど)の表示はどのように表示されるのか)が気になりました。
S3を例にすると「操作はもちろんできないだろうが、そもそもすべてのリージョンのバケットが表示されないのか?それとも禁止しているリージョンのバケットのみ表示されないのか?」などと考えていました。
結論
特定リージョン以外の操作を、「*」で拒否するSCPを作成すると、グローバルサービスは表示できませんでした。
しかし、「NotAction」を使用することで特定リージョン以外での操作を制限しつつグローバルサービスを表示することができました。
方法は公式ドキュメントに記載していました.....
以下の公式ドキュメントをご覧ください。
検証内容
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について学ぶことができてよかったです。
本記事が誰かの助けになれば幸いです。
日高 僚太(執筆記事の一覧)
2024 Japan AWS Jr. Champions / 2024 Japan AWS All Certifications Engineers
EC部クラウドコンサルティング課所属。2022年IT未経験でSWXへ新卒入社。
記事に関するお問い合わせや修正依頼⇒ hidaka@serverworks.co.jp