AWS Service Catalog で実現する IT ガバナンス - 承認済み製品の標準化とセルフサービス
IT 部門が承認した CloudFormation テンプレートをカタログ化し、起動制約とテンプレート制約でエンドユーザーのセルフサービスを安全に提供する手法を紹介します。
Service Catalog の役割
Service Catalog は IT 部門が承認した AWS リソースの構成を最大 5,000 製品のカタログとして管理し、エンドユーザーにセルフサービスでプロビジョニングさせるサービスです。エンドユーザーが自由に AWS リソースを作成すると、セキュリティ設定の不備、コスト管理の困難、アーキテクチャの不統一が発生します。Service Catalog では、IT 部門が CloudFormation テンプレートを製品として登録し、承認済みの構成のみをエンドユーザーに提供します。エンドユーザーはカタログから製品を選択してパラメータを入力するだけで、標準化されたリソースがプロビジョニングされます。
ポートフォリオと制約の設計
ポートフォリオは製品のコレクションで、IAM プリンシパル (ユーザー、グループ、ロール) にアクセス権を付与します。開発チーム用ポートフォリオには開発環境の EC2 と RDS を、データチーム用ポートフォリオには Redshift と Glue を含めるといった設計が可能です。起動制約は製品のプロビジョニング時に使用する IAM ロールを指定し、エンドユーザー自身の IAM 権限ではなく、制約で指定されたロールの権限でリソースが作成されます。これにより、エンドユーザーに CloudFormation の直接実行権限を与えずに、カタログ経由でのみリソース作成を許可できます。テンプレート制約で CloudFormation パラメータの許容値を制限し、インスタンスタイプを t3.micro と t3.small のみに制限するといった制御も可能です。
マルチアカウント環境での活用
Organizations との統合で、管理アカウントで作成したポートフォリオを組織内の全アカウントまたは特定の OU に共有できます。共有されたポートフォリオの製品は各アカウントのエンドユーザーが利用でき、組織全体で統一されたアーキテクチャパターンを適用できます。製品のバージョン管理により、テンプレートの更新を段階的にロールアウトできます。新バージョンを公開しても、既存のプロビジョニング済み製品は自動更新されず、エンドユーザーが明示的にバージョンアップを実行します。これにより、更新による予期しない影響を防止できます。 Service Catalog の運用設計を検討するうえで関連書籍 (Amazon)が参考になります。
Service Catalog の料金
Service Catalog 自体に追加料金は発生しません。コストはプロビジョニングされた AWS リソース (EC2、RDS 等) の利用料金のみです。ただし、AWS CloudFormation のサードパーティリソースタイプを使用する場合は、ハンドラー操作ごとに課金されます。Organizations でポートフォリオを共有する場合も追加料金はなく、組織全体のガバナンス基盤として導入コストが低い点が魅力です。テンプレート制約でインスタンスタイプを制限することで、エンドユーザーが高額なリソースを誤って作成するリスクも抑えられます。
まとめ
Service Catalog は IT ガバナンスとエンドユーザーのセルフサービスを両立するサービスです。承認済みのアーキテクチャパターンをカタログ化し、起動制約とテンプレート制約で安全なプロビジョニングを強制します。Organizations との統合でマルチアカウント環境の標準化を実現できます。