🚀

【AWS】サンドボックス AWS アカウント構築! Innovation Sandbox on AWS ソリューション

に公開

はじめに

ある程度の規模の組織になり、AWS のマルチアカウント運用を行っていると開発者用のサンドボックス環境(使い捨て環境)が欲しくなってきます。そのような場合に利用できるソリューションとして Innovation Sandbox on AWS(ISB)というものが公開されていましたので共有します。

https://aws.amazon.com/jp/solutions/implementations/innovation-sandbox-on-aws/

Deploy

デプロイの手順は以下にあります。記事として記載するには本質的な内容ではないため割愛します。
Organizations の管理アカウントでの作業も必要となるためご注意ください。
(デプロイ先の AWS アカウントを間違えないように注意しましょう)

公式ドキュメント
https://docs.aws.amazon.com/solutions/latest/innovation-sandbox-on-aws/deploy-the-solution.html

ワークショップ
https://catalog.us-east-1.prod.workshops.aws/workshops/23f635fc-dc98-4f75-8b91-6f334d0e22c3/en-US

ワークショップの方には記載されていないように見えるのですが、承認依頼等のメールを送信するために SES の本番設定が必要となります。
今回はメールアドレスの検証だけ行いました。

Configure Amazon SES for the application to send email notifications: Set up SES for the solution, and request production access using the Hub account. For more information, refer to Setting up Amazon SES, and Requesting production access pages.

https://docs.aws.amazon.com/solutions/latest/innovation-sandbox-on-aws/prerequisites.html

App Config の設定変更(オプション)

上記手順には含まれていませんが、以下のようなケースでは aws-nuke を利用したアカウントのクリーンアッププロセスが失敗するため除外リソースを追加しておきましょう。

  • GuardDuty が Organizations レベルで有効化されている
  • Inspector が Organizations レベルで有効化されている

Hub アカウントの App Config にある InnovationSandboxData-Config-NukeConfigHostedConfiguration-XXXXXXXX という名前の設定プロファイルから Create Verion を選択して修正し、デプロイを開始 で最新バージョンをデプロイしておきます。

---snip---
resource-types:
  excludes:
    - S3Object # Let the S3Bucket delete all Objects instead of individual objects (optimization)
    - ConfigServiceConfigurationRecorder
    - ConfigServiceDeliveryChannel
+    - Inspector2
+    - GuardDutyDetector
---snip---

resource-types はこちらの記事を参考にさせていただきました。

https://qiita.com/yuki_ink/items/22f5df71d6d903934b1a#resource-types-に記述するリソース識別子

Administrator の操作

Sandbox アカウントを追加します。
InnovationSandboxAccountPool OU 配下にある Entry OU に配置したアカウントが表示されます。

Warning にも記載がありますが、アカウント内にあるリソースは削除されるようなので新規に払い出したアカウントを使いましょう。

Clean Up プロセスが実行されているようです。

Settings を見ると予算やアカウントのリース期間を設定できそうです。変更は AppConfig 経由で実施するようです。

設定項目の意味については以下に記載がありました。

https://docs.aws.amazon.com/solutions/latest/innovation-sandbox-on-aws/administrator-guide.html

SCP の適用(オプション)

以下に手順がありますが、特定の EC2 Instance Type の利用を制限したい場合は SCP を使って InnovationSandboxAccountPool OU に適用しましょう。

https://catalog.us-east-1.prod.workshops.aws/workshops/23f635fc-dc98-4f75-8b91-6f334d0e22c3/en-US/4-tutorial/0-admin-tutorial#create-a-service-control-policy

Manager の操作

設定変更

(Manager 権限と関係ないですが)App Config 側の変更で AWS アカウントの予算上限を変更できるようです。

InnovationSandboxData-Config-GlobalConfigHostedConfiguration-XXXXXXX を変更してデプロイしましょう。

leases:
  requireMaxBudget: true
+  maxBudget: 100 # in dollars

しばらくすると UI 側も変更されました。

リーステンプレートの作成

以下のような Basic と Advanced のテンプレートを作成します。

  • Basic
    • $25 までしか利用できない
    • 承認不要で利用可能
    • 小規模プロジェクト向け
  • Advanced
    • $50 まで利用できる
    • 承認を必要とする
    • 大きめのプロジェクト向け

まずは Basic のテンプレートを作成します。

Lease Templates を選択します。

Add new lease template を選択します。

Approval required を外します。

Maximum Budget25Budget Thresholds を以下のように設定します。

Maximum Lease Duration (in hours)168(7 days)、Duration Thresholds を以下のように設定し Submit を選択します。

同様に Advanced のテンプレートを作成します。

End-User の操作

Basic アカウントのリクエスト

リーステンプレートから利用する AWS アカウントの特性を選択します。今回は Basic です。

Terms of Service に同意します。
(この文言も AppConfig の GlobalConfigHostedConfiguration で設定されているので編集可能です)

コメント記載して Submit を選択します。

Login to account を選択します。

ロール(上記キャプチャでは myisb_IsbUsersPS)を選択します。

当該アカウントにログインできました。(コンソールは東京リージョンですが、us-east-1, us-west-2 に限定した設定をしているため権限エラーが出ています)

メールも届いていました。

myisb_IsbUsersPS の権限は Administrator になっていました。

IAM Identity Center 上では当該アカウントのユーザとグループに申請したユーザが追加されていました。

承認の挙動とか試したいので余裕があれば追記します。

FAQ

Discussion