JDDが作成したAWS CloudFormation標準テンプレートの紹介
こんにちは。Japan Digital Designのインフラチームでエンジニアをやっている高橋です。
今回は、先日のエントリにもちらっと記載をした、AWS CloudFormation標準テンプレートの取り組みについてご紹介しようと思います。
というわけで、JDD Advent Calendar 25日目です。
(図らずもトリを務めさせていただくことになりました…!)
AWSにおいてシステム開発をする事になった際、まずはAWS上における環境構築が必要になります。
但し、その開発環境構築において思いの外時間を要してしまったり、開発環境ということであまりにもセキュリティ度外視の環境を構築してしまったり…などが考えられると思います。
そのようなシーンを想定して、Japan Digital Designでは、[Secure Stack Template for AWS](AWS-SST)という、CloudFormationの標準テンプレート集を作成し、MIT Licenceにて公開しております。
このテンプレートを利用して環境を構築することで、開発フェーズにおけるAWS環境を迅速に、かつセキュアに維持することができます。
Secure Stack Template for AWS 概要
想定している対象は、AWS Organizationsが有効になっている開発環境アカウントです。
以下のコンセプトを基に作成されています。(以下、GitHubのREADMEより抜粋)
Secure by Default
AWS-SSTのテンプレートは、Secure by Defaultを基本的コンセプトに据えて作成しています。
- リソースポリシーは他AWSアカウント内からアクセスを許さない
- エンドポイントポリシーは他AWSアカウントへの書き込みを許さない
- リソースへのアクセス制御とデータアクセスの権限は分離する
Minimum Execution Permission
AWS-SSTのテンプレートを実行するために必要な権限は、可能な限り最小限のIAM権限で実行可能です。
- テンプレートが作成するリソース以外のIAM権限を要求しない
- リソース作成権限に加えてIAM権限を同時に要求しない
- テンプレートの実行にデータアクセス権限を要求しない
Compliance as a Code Ready
ドリフトチェックに対応するリソースにおいて、テンプレートが作成したポリシーが変更されていないかをドリフトチェックを用いて確認できる。
- リソースポリシーの変更をドリフトチェックにより確認できる
- カスタマイズしたリソースポリシーの利用を可能にするため、テンプレートによるリソースポリシーの定義をスキップできる
Secure Stack Template for AWS テンプレート一覧
現状(2020/12/25)では、以下のテンプレートが存在しています。
EC2
- 標準EC2インスタンス
- 標準的なEC2インスタンス作成 - 標準AWSバックアップポリシー
- AWS Backupを用いた、標準的なEBSバックアップ作成
Container
- 標準ECRリポジトリ
- 標準的なECRリポジトリ作成 - 標準ECSサービス
- 標準的なECSクラスタ、ECSサービス、ECSタスクの作成の作成 - 標準Fargateサービス
- Codepipeline、CodeCommit、CodeBuildを用いた、標準的なFargateのビルドパイプライン、デプロイパイプラインの作成
Network
- 標準VPC
- 標準的なVPCやエンドポイント、セキュリティグループの作成 - 標準ELB
- 標準的なELBの作成 - 標準Route53リゾルバー インバウンドエンドポイント
- 標準的なRoute53リゾルバーの作成
S3
- 標準S3バケットテンプレート
- 標準的なS3バケットとポリシーの作成
Secure Stack Template for AWS の今後について
現状、JDD内部では作成が完了しているものの、まだSecure Stack Templateとして公開に至っていないテンプレートが多々あります。
この辺りを徐々にテンプレート化していけたらと考えています。
また、テンプレートの充実を図ると共に、ドキュメントの整備も並行して進めていきたい所存です。
(個人的には、テンプレートにおける構成図管理などもうまくやれたらうれしいな…とおもっています)
もちろんGitHubに公開しているものなので、ぜひ皆様のコントリビュートもお待ちしております。
たくさんの方々と一緒により良いものを作っていき、AWSを利用している全ユーザに活用してもらえたら!と願うばかりです。