TOPコラム一覧CfCTを使ってみよう② ~ ルールユースカジノ twitter編 ~

ユースカジノ twitter3;
~ ルールユースカジノ twitter編 ~

はじめに

こんにちは、高橋ユースカジノ twitter。
今回はCustomizations for AWS Control Tower(CfCT)機能の初期ユースカジノ twitter編に続いて、CloudFormation StackSetsとSCPのそれぞれのユースカジノ twitterと実際のユースカジノ twitter時に気づいた点について紹介をします。

1.ユースカジノ twitter

最初にCfCTをCloudFormation StackSetsとSCPをデプロイする手順を紹介します。今回は特定のOU(SandBox)配下のアカウントに対して、CloudFormation StackSetsで管理アカウントからスイッチロール可能なIAMロールを作成し、SCPでそのロール以外がSavings Plansの購入を禁止するルールをユースカジノ twitterしてみたいと思います。

では実際にユースカジノ twitterを行ってみたいと思います。

(1) CodeCommitからリポジトリのコピー

CfCTのテンプレートが正常にデプロイされれば、CodeCommit上にリポジトリが保存されています。実際のユースカジノ twitter時はこれをCloud9やEC2環境等、コードを開発する環境にコピーを行います。

ユースカジノ twitter
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/custom-control-tower-configuration

(2) CloudFormation StackSets/SCP用ファイルのユースカジノ twitter

CloudFormations StackSetsでデプロイするリソースやSCPのユースカジノ twitterファイルを作成します。StackSetsのユースカジノ twitterファイルはyaml形式でデプロイしたい環境を記載します。SCPについてはユースカジノ twitterするポリシードキュメントを記載します。CodeCommitで実際のコードは下記の通りになります。なお、yaml、json形式で記載するので、インテントがずれると環境デプロイに失敗するので、記載には注意して下さい。

CloudFormations StackSets用ユースカジノ twitterファイル(resrict-purchase-sp-role-template)

Resources:
        PurchaseSPRole:
            Type: AWS::IAM::Role
            Properties:
            AssumeRolePolicyDocument:
                Version: '2012-10-17'
                Statement:
                - Effect: Allow
                    Principal:
                    AWS:
                        - "arn:aws:iam::<アカウントID>:root"
                    Action: sts:AssumeRole
            RoleName: purchase-sp-role
            ManagedPolicyArns:
                - "arn:aws:iam::aws:policy/ReadOnlyAccess"
                - "arn:aws:iam::aws:policy/AWSSavingsPlansFullAccess"

SCP用ユースカジノ twitterファイル(purchase-sp-role.json)

{
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "DenySP",
                "Action": "savingsplans:CreateSavingsPlan",
                "Effect": "Deny",
                "Resource": "*",
                "Condition": {
                    "StringNotLike": {
                        "aws:PrincipalARN": [
                            "arn:aws:iam::*:role/purchase-sp-role"
                        ]
                    }
                }
            }
        ]
    }

ユースカジノ twitterたファイルはS3に保存して利用することもできますが、管理の観点からはそれぞれ専用のディレクトリをユースカジノ twitterて、CodeCommitで管理した方がいいと思います。

(3) マニュフェストファイルの編集

コピーしたリポジトリ内に「manifest.yaml」という名前でマニュフェストファイルが保存されているので、これを編集して、先程ユースカジノ twitterたCloudFormation StackSets/SCP用ファイルを用いて環境が作成されるようにします。

---
    #Default region for deploying Custom ユースカジノ twitter: Code Pipeline, Step functions, Lambda, SSM parameters, and StackSets
    region: ap-northeast-1 # ユースカジノ twitter Home Region
    version: 2021-03-15

    resources:
    # ControlTower Custom CFN Resources - Create Additional IAM Role
        - name: create-purchase-sp-role					←①
            resource_file: stacksets/restrict-purchase-sp-role-template	←②
            deploy_method: stack_set					←③
            #Apply to the following OU(s)
            deployment_targets:
            organizational_units:
                - Sandbox						←④
    # ControlTower Custom SCPs - Additional Preventive Guardrails
        - name: deny-purchase-sp
            description: Purchase Savings Plans
            resource_file: scp/deny-purchase-sp.json
            deploy_method: scp
            # Apply to the following OU(s)
            deployment_targets:
            organizational_units:
                - Sandbox # Formerly Custom

主にユースカジノ twitterする箇所は①~④で、以下の様に記載します。

  1. ① CloudFormation StackSetsの場合は、CloudFormationのテンプレート名に含む名前、SCPの場合はSCPのポリシー名にユースカジノ twitterする値を記載
  2. ② (2)で作製したユースカジノ twitterファイルのパスを記載する。S3に保存した場合はURLを記載。
  3. ③ CloudFormation StackSetsのユースカジノ twitterの場合は「stack_set」、SCPの場合は「scp」と記載。
  4. ④ このユースカジノ twitterを適用したいOUの名前を記載。複数のOUに適用する場合は、複数行に分けて記載する。全体に適用する場合は「Root」と指定。

(4) 環境のユースカジノ twitter

ユースカジノ twitterが完了したら、gitコマンドでCodeCommitに更新したリポジトリを保存することで自動的に環境のデプロイが実行されます。

git add -A 
    git commit -m 'コメント'
    git push

ユースカジノ twitterの状況はCodePipelineの「Custom-Control-Tower-CodePipeline」で確認することができます。全てのステップが成功しましたとなっていれば、無事環境がユースカジノ twitterされたことになります。

ユースカジノ twitter

実際にこんな感じでユースカジノ twitterが行われています。

SandBox OUに対するSCPのユースカジノ twitter

ユースカジノ twitter

SandBox OU内のアカウントのロール

2.Tips

次に私が実際に試していた中で気付いた点についてユースカジノ twitterしたと思います。
1つ目は失敗時のトラブルシューティングユースカジノ twitter。
ユースカジノ twitter時の進行はCode Pipelineで確認することができ、失敗時にはログの表示ボタンを押すことでログを表示できますが、下記の通りにこちらからでは全く訳が分かりません。

そこで実際のデプロイのフローを見直してみると、StepFunctionにてユースカジノ twitterはデプロイされます。

なので、ユースカジノ twitterトラブルシューティングはこちらのログを見て行う必要があります。

このケースの場合は、テストのやりすぎでOUにアタッチできるユースカジノ twitter上限(最大5つ)を超えてしまったことが原因であることが分かります。

続いてテンプレートの使いまわしによる影響についてです。今回のユースカジノ twitterで紹介した様に、基本的にこの構成では「manifest.yaml」ファイルを使いまわすことになります。そうすると新しいユースカジノ twitterをデプロイするとその前にデプロイしていたSCPやStackSetsはどうなるのでしょうか?結論を言うと何の影響も受けずにそのまま残り続けます。ただし、name行を同じにした場合は上書きされ、以前のユースカジノ twitterが新しいユースカジノ twitterに変更されてしまうので既存ポリシーを変更したい場合はいいですが、そうでない場合はご注意ください。また、作成したものがそのままということは、CfCTの仕組みからは一度デプロイしたCloud Formation StackSetsやSCPを削除することはできません。ですので、削除する場合はそれぞれのサービスの画面から手動でユースカジノ twitterを削除する必要があります。

3.さいごに

今回は初期ユースカジノ twitter編とルール作成編とCfCTについてご紹介をしました。Control Towerもコントロール機能が拡張されだいぶ使いやすくなりましたが、CfCTはそこに運用や統制のために行いたい初期ユースカジノ twitterの自動化や独自の禁止ルールの導入などを行うことが可能で、マルチアカウント環境をより簡単に管理できるようになることがお分りいただけたのではないでしょうか。現在Control Towerを利用していて、より便利に利用したいと思った方は是非CfCTを試してみてください。

関連ブログ

AWS ユースカジノ twitterとは?-AWS ユースカジノ twitter編第1弾-
CfCTを使ってみよう① ~ 初期ユースカジノ twitter編 ~

カジノゲームは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

お問い合わせ



【著者プロフィール】

高橋 繁義(たかはし しげよし)

伊藤忠テクノソリューションズ株式会社 クラウドアーキテクト

インフラ全般のエンジニアとして20年以上活動し、現在AWS専任の技術担当兼ユースカジノ twitter企画担当として活動中
2022年から3年連続でAPN Ambassadorに選任

高橋 繁義(たかはし しげよし)

TOPコラム一覧CfCTを使ってみよう② ~ ルールユースカジノ twitter編 ~

pagetop