AWS向け Secure Stack Template (AWS-SST) は、AWSでのシステム開発をよりセキュアかつ迅速に行うために役に立つことを目指したCloudForamtionテンプレートです。
このテンプレートを利用して環境を構築することによって、開発段階のAWS環境をよりセキュアな環境として維持することができようになります。
AWS-SSTは開発環境において利用することを第一の目的としています。
開発中のAWS環境をセキュアに保ち、偶発的な侵害から環境を保護します。基本的なリソースをテンプレートを使って作成することによって、リソースへのアクセス範囲を制御された範囲内に限定するよう自動的に構成します。テンプレートは作成したリソースに対する不特定多数からのアクセスを拒否するポリシーを展開します。リソースへのアクセスは、リソースを作成したAWSアカウント内に閉じるポリシーがデフォルト設定されます。
ドリフトチェックによって作成したリソースがテンプレートで構成するデフォルト設定が維持されているかを確認し、セキュアな環境が維持できているかを確認できるように配慮されています。
AWS-SSTのテンプレートは、Secure by Defaultを基本的コンセプトに据えて作成しています。
- リソースポリシーは他AWSアカウント内からアクセスを許さない
- エンドポイントポリシーは他AWSアカウントへの書き込みを許さない
- リソースへのアクセス制御とデータアクセスの権限は分離する
AWS-SSTのテンプレートを実行するために必要な権限は、可能な限り最小限のIAM権限で実行可能です。
- テンプレートが作成するリソース以外のIAM権限を要求しない
- リソース作成権限に加えてIAM権限を同時に要求しない
- テンプレートの実行にデータアクセス権限を要求しない
ドリフトチェックに対応するリソースにおいて、テンプレートが作成したポリシーが変更されていないかをドリフトチェックを用いて確認できる。
- リソースポリシーの変更をドリフトチェックにより確認できる
- カスタマイズしたリソースポリシーの利用を可能にするため、テンプレートによるリソースポリシーの定義をスキップできる
当テンプレートをService Catalogで利用する際に、利用環境に合わせたデフォルト値やメタデータを利用するためのツールを提供しています。
詳細はこちらをご覧ください。
テンプレート作成時の技術ルールとして、下記を心がけています。
リソースの名前には可能な限り Environment 属性を追加する。
[prod].[resource-name]
出力パラメータはコロンでセクションを区切る。
[prod]:[resource-name]:arn
IAMロールを作成した場合は、原則としてロールのOutputは3点をExportする
種別 | Key | Value |
---|---|---|
ロール名 | "[Role]RoleName" |
!Ref [Role] |
ロールARN | "[Role]RoleArn" |
!GetAtt [Role].Arn |
ロールID | "[Role]RoleId" |
!GetAtt [Role].RoleId |
テンプレートの実行に必要な環境は以下を想定しています。
- AWS Organizations が有効になっている
このプロジェクトのテンプレートは MIT License でライセンスされます。詳しくは LICENSE を参照してください。