[アップデート]AWS Control Towerで管理外リージョンを強制的に利用できなくするガードレールが追加されました #reinvent

AWS Control Towerでリージョン制限がガードレールとして適用できるようになりました。マネージドでやってくれるのは嬉しいですが細かい制御ができないのでご利用は計画的に。
2021.12.01

こんにちは、臼田です。

みなさん、re:Inventエキサイトしてますか!?(挨拶

re:Invent 2021で発表されたAWS Control Towerの管理外リージョン利用禁止ガードレールを検証していきます。

Deny services and operations for AWS Regions of your choice with AWS Control Tower

概要

AWS Control TowerはAWS Organizationsと連携してマルチアカウントを管理しガバナンスを効かせるサービスです。様々なポリシーをガードレールとして適用することができます。

今回は通常利用しないリージョンは使わせないようにする、というガードレールが適用できるようになりました。

この考え方自体は昔からあり、SCPを利用することで実現できていました。

AWSからもSCPのサンプルが公開されていて、Control Tower利用時はこれを個別に設定することが多かったので、今回のアップデートでControl Towerに寄せることが出来るようになりました。実際のポリシーはユーザーガイドにも書かれていますがだいたい同じです。

ただし、以下のような適用となっているため細かい融通は利きません。自身の要件に合うか確認しましょう。

AWS Control Tower のステータスが [管理対象外] と表示されている AWS リージョン、および AWS Control Tower が利用できないリージョンで、AWS のサービスおよびオペレーションへのアクセスを拒否できます。

ちなみにだいたい同じと書きましたが、以下の違いがありました。

% diff deny-region-scp.json deny-region-control-tower.json
28c28
< "s3:GetAccountPublic*", --- >         "s3:GetBucketPublicAccessBlock",
30c30
< "s3:PutAccountPublic*", --- >         "s3:GetBucketLocation",
38c38
< "wellarchitected:*" --- >         "access-analyzer:*"

s3:GetAccountPublic*は現状s3:GetBucketPublicAccessBlockしか無いので同義ですね。

s3:GetBucketLocationを許可するのは何も問題ないですがs3:PutAccountPublic*は適切なリージョンで操作すればここに並んでいなくてもいい、ということなのかなーと思います。

wellarchitectedaccess-analyzerはどう考えたらいいか私も判断がつかないですね。

やってみた

Control Towerにアクセスして該当のガードレールを確認してみます。

通常のガードレールには無いランディングゾーンの設定を行う必要があると書かれています。リージョン制限はかなり厳し目の制約であるため当然といえば当然ですね。

ちなみにControl Towerのガードレールはだいたい実装されてすぐに日本語になっているので嬉しいですね。

ランディングゾーンの設定画面に移動したら「設定を変更する」で変更します。

設定画面では警告が書かれています。以下をよく意識する必要があります。

Enabled を選択すると、AWS Control Tower はすべての登録済みの OU に リージョン拒否予防ガードレール  を適用します。

どうやらガードレールをOU単位で設定できるわけではなく、リージョン制限を有効にすると全体に適用されるようです。よく注意しましょう。

設定を反映させるときにももう一度ポップアップが出てきます。本当に問題ない場合にだけ更新しましょう。

いつもどおり60分待ちが出てきます。しばらく待ちます。

私の環境では30分程度で完了しました。適用状況を確認してみます。Security OUでもすでに適用されています。通常の選択的ガードレールではガードレール画面でOU単位の有効無効が選択できますが、このガードレールはそれができません。

実際にアクセスして確認してみます。東京以外でアクセスしたらエラーが出ました。

動作が確認できたので設定を外すところも試します。ランディングゾーンの設定から変更していきます。リージョン制限が有効になっていることはここのステータスでも確認できますね。

「有効にしない」を選択して更新しようとしたらこちらも警告が出ました。管理外リージョンにリソースがデプロイ出来るようになるけどほんとにいいの?って出ます。

また60分待機画面が出て更新されて元通りになりました。

まとめ

AWS Control Towerでリージョン制限をマネージドのガードレールで実現することが出来るようになりました。

マネージドのメリットがある反面細かく管理できないので要件をよく考えて利用しましょう。