ハウテレビジョンブログ

『外資就活ドットコム』『Liiga』『Mond』を開発している株式会社ハウテレビジョンのブログです。

AWS 実習のためのサンドボックス環境

この記事はHowtelevision Advent Calendar 2023 24日目の記事です。 昨日は永井 (id:chima91)さんの「ISUCON13 臥薪嘗胆 〜新卒社員2名とインターン生1名での初挑戦〜」でした。

qiita.com

入社して 3 ヶ月になりました広瀬 (id:yhrs1224) です。外資就活ドットコムの開発エンジニアとして負債解消やインフラの整備などに取りかかっています。本日は聖なる私の誕生日です。ありがとうございます。

経緯

外資就活ドットコムを始め弊社のサービスでは、クラウドインフラとして主に AWS を使用しています。これまでインフラの構築、運用は独立したインフラチームが担っていたのですが、開発エンジニアにとって不透明かつ属人化されすぎているという課題がありました。今後よりクラウドサービスを活用し、持続可能な体制にするためにも、垣根を取り外して開発エンジニアが直接インフラにも関わる体制へと見直しました。

もちろん関わる範囲は人それぞれですが、インフラに関する経験や知識には大きな差があります。AWS であればいくらでも書籍や公式のガイド、動画といった多数のラーニングパスは存在しますが、最も欠かせないのはやはり「実践」、曖昧な点や疑問を「試してみる」ことです。しかし直接業務用の共有環境でいきなり試すのは危険が伴うため、エンジニア一人一人が自由に使える AWS 環境を用意することにしました。業務上の調査やテストだけでなく、AWS のスキル向上のため自由に使うことができるものとしました。

しかしこの環境を運用するには、コスト、セキュリティなどのリスクが伴います。対策としてはごく典型的なものとは思いますが、具体的な設定手順なども別途まとめましたので紹介したいと思います。

サンドボックスアカウントの作成

エンジニアごとに「AWS アカウント」を作成して与えます。この AWS アカウントは完全にエンジニア個人用であり、他のエンジニアとも競合せず、遠慮なく、自由に使えるものになります。

  • AWS アカウントのルートユーザーは会社として管理するため、メールアドレスは個人ではなく管理者のメーリングリストとする。
  • AWS Organizations 配下の連結アカウントとして作成し、支払いを集約する。
  • AWS Organizations にサンドボックス用の Organization unit を作り、作成した AWS アカウントをまとめる。
  • AWS Identity Center でユーザーにサンドボックスアカウントに対する管理者権限を付与する。

コスト対策

自由に使えるといっても予算はあります。クラウドサービスは完全従量制が利点でもあり予測が難しい点でもあります。弊社ではエンジニアごとに一定の利用枠を設け、特段の理由なしにこの上限までは自由に使用できるルールとしました。もちろん業務で必要な場合はこの限りではありません。

上限を設定してそれ以上は使えなくなってくれれば一番良いのですが残念ながらできないようなので、AWS Budgets を利用し、予算の監視および通知をするようにしました。管理アカウントで全ての合計を監視しつつ、各サンドボックスアカウント単位での監視も設定します。

[https://zenn.dev/yh1224/articles/d9a605bebfbd8gc74:embed:cite)

通知があるとはいえ、誤って大幅に超えることのないようコストは常に意識して使ってもらう必要はあります。コスト意識も身につけるべき大事なスキルです。

コスト把握やリソースの停止忘れ対策として、以下のようなツールを活用するのも良いと思います。

セキュリティ対策

インフラ経験の浅いエンジニアもいる中で、自由を持たせつつセキュリティをどう担保するかは悩みどころです。サンドボックスに業務データを置かないとしても、認証情報の漏洩により不正アクセスされて高額な請求をされてしまう例もあります。

Trusted Advisor を設定する

Trusted Advisor はコスト、セキュリティ等に関する基本的なチェックを定期的におこないメールで通知してくれるサービスです。有償のサポートプラン契約がないと本当に最小限の項目のみですが、設定しておくに越したことはありません。

Service Control Policy で使用できるものを制限する

AWS Organizations でサンドボックスの Organization unit に Service Control Policy を設定することで、使用できるリージョンやサービスを制限することができます。極力制限しない方針ではありますが、明らかに不要なサービスは制限しておきました。

zenn.dev

AWS Config でガードレールを設定する

AWS Config を設定し、セキュリティリスクとなる設定を検出、通知します。AWS CloudFormation の StackSet を使用することですべてのサンドボックスアカウント配下に自動展開することができます。

zenn.dev

zenn.dev

誤操作対策

サンドボックス環境が自分だけのものなので壊れても業務には影響なし!はいえ、怖いのが「アカウントの取り違え」です。本番アカウントの権限も持つエンジニアがサンドボックスのつもりで本番を操作してしまったら…と考えるとぞっとします。

管理コンソールについては以下のような Chrome 拡張機能で色分けするのが単純ながら意外と効果的と感じました。

chromewebstore.google.com

さいごに

これらの対策は最低限であり、決して万全ということはありません。引き続きできる対策は検討していきたいと思いますが、自由を得るには常に各エンジニアのスキル向上と意識付けが最も大切になります。これからも継続的に学びの場や機会を増やせればと考えています!

エンジニアの飽くなき好奇心を育てるハウテレビジョンでは、組織拡大のためにソフトウェアエンジニアを募集しています。