【AWS】サンドボックス AWS アカウント構築! Innovation Sandbox on AWS ソリューション
はじめに
ある程度の規模の組織になり、AWS のマルチアカウント運用を行っていると開発者用のサンドボックス環境(使い捨て環境)が欲しくなってきます。そのような場合に利用できるソリューションとして Innovation Sandbox on AWS(ISB)というものが公開されていましたので共有します。
Deploy
デプロイの手順は以下にあります。記事として記載するには本質的な内容ではないため割愛します。
Organizations の管理アカウントでの作業も必要となるためご注意ください。
(デプロイ先の AWS アカウントを間違えないように注意しましょう)
公式ドキュメント
ワークショップ
ワークショップの方には記載されていないように見えるのですが、承認依頼等のメールを送信するために 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.
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
はこちらの記事を参考にさせていただきました。
Administrator の操作
Sandbox アカウントを追加します。
InnovationSandboxAccountPool
OU 配下にある Entry
OU に配置したアカウントが表示されます。
Warning にも記載がありますが、アカウント内にあるリソースは削除されるようなので新規に払い出したアカウントを使いましょう。
Clean Up プロセスが実行されているようです。
Settings を見ると予算やアカウントのリース期間を設定できそうです。変更は AppConfig 経由で実施するようです。
設定項目の意味については以下に記載がありました。
SCP の適用(オプション)
以下に手順がありますが、特定の EC2 Instance Type の利用を制限したい場合は SCP を使って InnovationSandboxAccountPool
OU に適用しましょう。
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 Budget
に 25
、Budget 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
- IAM Identity Center は必須?
- Yes.
- 利用申請に応じた AWS アカウントと Permission Set の紐付けが必要であるため IAM Identity Center は必須だと思います。SCIM で Identity Center と Entra ID 等を連携するのは大丈夫だと思います。
- 既存の Organizations + Control Tower 環境でも利用可能?
- Yes.
- 今回も既存の Organizations + Control Tower 環境で試しています。ただし ISB 用の OU は Control Tower に登録していません。
- 匿名で取得されるデータはある?
- Yes.
- opt-out するには Cloudformation のデプロイ時にパラメータの指定が必要です
Discussion