Amazon Web Services ブログ
AWS Control Tower で AWS リソースのセルフサービスプロビジョニングを有効にする
- 開発者またはクラウドエンジニアが、golden AMI から Amazon EC2 インスタンスを起動したいと考えています。
- データサイエンティストは、承認済みの AMI とインスタンスタイプで Amazon EMR クラスターを起動したいと考えています。
- データベース管理者は、新しくプロビジョニングされた AWS アカウントで承認済みの Amazon RDS データベースを起動する必要があります。
この記事では、AWS Control Tower の Account Factory を使用して新しい AWS アカウントをプロビジョニングする方法を示します。また、AWS Service Catalog を使用して、RDS データベースのポートフォリオなどのカスタム製品を新しいアカウントと共有する方法も示します。さらに、AWS Control Tower のガードレールを使用して新しいアカウントでガバナンスを実施する方法についても説明します。
このソリューションで使われる AWS のサービスは、以下のとおりです。
- AWS Control Tower
- AWS Service Catalog
- AWS CloudFormation
- Amazon CloudWatch
- Amazon RDS
- AWS Organizations
背景
この記事では、次の概念を参照しています。
- AWS Control Tower は、AWS のベストプラクティスに従って構築された、安全で準拠した環境で新しいアカウントを簡単にプロビジョニングするメカニズムをお客様に提供します。
- お客様は、AWS Service Catalog を使用して、UI インターフェイスまたは CLI から新しいアカウントを作成できます。
- AWS Control Tower ガードレールは、AWS 環境に継続的なガバナンスを提供する高レベルのルールです。
- AWS Service Catalog 製品は、デプロイに使用したい IT サービスです。AWS CloudFormation テンプレートをインポートして製品を作成できます。 ポートフォリオは、設定情報とともに製品をまとめたコレクションです。
- Amazon RDS は、クラウド内のリレーショナルデータベースをセットアップ、運用、スケーリングします。
- AWS Organizations では、AWS のサービス、リソース、リージョンへのアクセスを管理できます。
開始する前に、新しいアカウントが必要な理由を理解しておくと役立ちます。以下のように、考慮すべき質問がいくつかあります。
- 新しいアカウントは、大規模なアプリケーションのアカウント制限の管理に役立つか?
- 請求は引き続きアカウントごとに行おうとしているか?
- これはテストアカウントか、開発アカウントか、または本番アカウントか?
- 開発者向けのサンドボックス環境を構築しているか?
- アカウントはどの AWS Organizations ビジネスユニットに該当するか?
ソリューションの概要
次の図は、ソリューションのアーキテクチャを示しています。
ここでは、AWS Organizations ユニットの設定と AWS Control Tower ガードレールの適用から、ポートフォリオの開発と新しくプロビジョニングされたアカウントへの共有までの基本的な手順を説明します。
チュートリアル
ポリシーが設定された AWS Control Tower で新しいアカウントを作成します。
ステップ 1: 新しい組織単位を追加します。
ステップ 2: AWS Control Tower ガードレールを適用します。
ステップ 3: 新しいアカウントを作成します。
AWS Service Catalog ポートフォリオを作成して新しいアカウントに共有します:
ステップ 1: ポートフォリオを作成してマスターアカウントで共有します。
ステップ 2: スポークアカウントでローカルポートフォリオを生成します。
ステップ 3: スポークアカウントから製品を起動します。
ステップ 4: ガードレール検出を検証します。
前提条件
この記事は、AWS Control Tower 環境が既に設定されていることを前提としています。
AWS Control Tower で新しいアカウントを作成する
この記事では、Data Analytics 組織単位の下に新しいアカウントを作成します。
ステップ 1: 新しい組織単位を追加する
AWS Control Tower コンソールで、[組織単位]、[組織単位の追加] の順に選択します。
組織単位 (OU) が作成されたら、OU を選択し、組織単位 ID を書き留めます。これは、「AWS Service Catalog ポートフォリオを作成して新しいアカウントに共有する」セクションで使用される CloudFormation スクリプトに必要です。
ステップ 2: AWS Control Tower ガードレールを適用する
AWS Control Tower のデータセキュリティガードレールは、この OU の下のすべてのアカウントに継続的な検出ガバナンスを提供します。AWS では、これらすべてのガードレールをすべてのアカウントに適用することを強くお勧めします。
データセキュリティガードレールは次のことを行います。
- RDS データベースインスタンスへのパブリックアクセスを禁止します。
- RDS データベーススナップショットへのパブリックアクセスを禁止します。
- ストレージ暗号化されていない RDS データベースインスタンスを禁止します。
左側のナビゲーションペインで、[ガードレール] を選択します。[暗号化されたストレージではない RDS データベースインスタンスを許可しない] を選択します。[OU でガードレールを有効にする] ページで、データ分析 OU 用のガードレールを有効にします。
ステップ 3: 新しいアカウントを作成する
次のステップは、Account Factory を使用して新しいアカウントをプロビジョニングすることです。Account Factory は、AWS Control Tower のセットアップ中に作成される AWS Service Catalog 製品です。詳細については、「AWS Service Catalog によるアカウントの設定とプロビジョニング」を参照してください。
新しいアカウントの作成プロセスは通常、完了するまでに 30〜60 分かかります。
アカウントの作成が完了したら、アカウントが Data Analytics ユニットの下にあることを確認します。
AWS Service Catalog ポートフォリオを作成して新しいアカウントに共有する
ここでは、マスターアカウントでセルフサービス製品のポートフォリオを作成し、それを新しく作成したアカウントと共有します。独自の AWS Service Catalog 製品に自由に置き換えてください。
ステップ 1: ポートフォリオを作成してマスターアカウントで共有する
この記事で使用されている製品のテンプレートは、configure_ct_portfolio.yaml です。
この CloudFormation テンプレートは、AWS Service Catalog ポートフォリオを先に作成した Data Analytics OU と共有します。次の手順を実行します:
- 次のボタンを使用して、AWS CloudFormation スタックを起動します。
- [次へ] を選択します。
- [共有する組織単位] には、前に書き留めた組織単位 ID を入力します。
- [次へ] をクリックしてから、また [次へ] をクリックします。
- [AWS CloudFormation によって IAM リソースが作成される場合があることを承認します] を選択します。
- [作成] をクリックします。
スタックの出力値を書き留めます。これらは、次のステップで入力パラメータとして入力します。
これにより、AWS Control Tower マスターアカウントに Service Catalog ポートフォリオが作成されます。これには、先にリストした製品が含まれます。また、指定した OU 内のすべての AWS アカウントとポートフォリオを共有します。
ステップ 2: スポークアカウントでローカルポートフォリオを生成する
2 番目のステップは、マスターアカウントから AWS CloudFormation スタックセットを実行し、マスターアカウントから共有したポートフォリオ組織単位にデプロイすることです。前の手順でメモした出力値を、この AWS CloudFormation スタックセットのパラメータフィールドとして入力します。
このスタックは、ローカルポートフォリオを生成し、組織からセルフサービス製品を追加し、適切な起動制約とタグを追加します。
テンプレート制約を追加して、起動を特定のインスタンスタイプまたはデータベースバージョンのみに制限するなど、追加の予防策を講じることもできます。
- 次のボタンを使用して、AWS CloudFormation スタックセットを起動します。
- [テンプレートの指定] で「https://marketplace-sa-resources.s3.amazonaws.com/ct_spoke_setup_sc.yaml」と入力し、[次へ] をクリックします。
- 前のスタックの出力の MasterPortfolioId 値に StackSet name および MasterPortfolio タイプを入力します。
- [StackSet オプションの設定] ページの [アクセス許可] で、次の値を入力します。
– IAM 管理ロール ARN – オプションでは、ドロップダウンから [AWSControlTowerStackSetRole] を選択します
– IAM 実行ロール名 には、「AWSControlTowerExecution」と入力し、[次へ] をクリックします。 - [スタックを組織単位にデプロイ] を選択し、 (ステップ 1 で) マスターポートフォリオを共有した組織単位 ID を入力します。
- [リージョンの指定] では、マスターポートフォリオをデプロイしたリージョンを選択し、[次へ] をクリックします。
- [確認ページ] を下にスクロールして、[AWS CloudFormation によって IAM リソースが作成される場合があることを承認します] を選択し、[送信] をクリックします。
ステップ 3: スポークアカウントから製品を起動する
AWS Single Sign-On (AWS SSO) を設定して、エンドユーザーが必要なアクセス許可でスポークアカウントにアクセスできるようにします。AWS SSO ユーザーには、最低限の AWS Service Catalog エンドユーザーアクセス許可が必要です。スポークアカウントのローカルポートフォリオでユーザーにアクセスを付与します。新しいアカウントで CloudFormation のデプロイを完了すると、エンドユーザーは RDS 製品を起動できるようになります。
ステップ 4: ガードレール検出を検証する
検出 RDS ガードレールは、新しい AWS アカウントのデータベースリソースを管理するようになりました。ユーザーが暗号化なしで RDS インスタンスを起動すると、AWS Control Tower ガードレールが非準拠リソースを検出します。AWS Control Tower のダッシュボードは、マルチアカウント環境全体を可視化し、非準拠ステータスのアカウントを強調表示します。
まとめ
この記事では、AWS Control Tower で新しいアカウントを作成し、それにガードレールを適用する方法について説明しました。また、AWS Service Catalog 製品の標準化されたポートフォリオを新しいアカウントと共有する方法も示しました。最後に、AWS Control Tower ガードレールが非準拠リソースを素早く検出する方法を紹介しました。
ご意見をお待ちしております。本件についてコメントやご質問がある場合は是非お寄せください。
参考文献
著者について
Nivas Durairaj は、AWS Service Catalog と AWS Control Tower のシニアビジネス開発マネージャーです。彼はお客様のクラウドジャーニーの案内とサポートを楽しんでいます。仕事以外では、テニス、ハイキング、ヨガ、世界中を旅するのが好きです。
Kishore Vinjam は、AWS Service Catalog、AWS Control Tower、および AWS Marketplace に焦点を当てたパートナーソリューションアーキテクトです。彼は、クラウドテクノロジーへの取り組み、お客様との連携、ソリューションの構築に情熱を傾けています。余暇には家族と過ごしたり、ハイキングをしたり、バレーボールや卓球をしたりするのが好きです。