[小ネタ]EC2のキーペアを手動・IaCどちらで作成すべきか検討してみた
こんにちは!クラウド事業本部のおつまみです。
みなさん、EC2インスタンスを作成したことがありますか?
EC2インスタンス作成時、SSHなどで接続する場合はキーペアを作成する必要があります。
アマゾン EC2 インスタンスのキーペアを作成する - Amazon Elastic Compute Cloud
上記ドキュメントにあるように、作成方法には大きく分けて以下2つのアプローチがあります。
- 手動で作成(コンソール・CLIなど)
- IaCで作成(CloudFormation・CDKなど)
本記事では、それぞれの方法のメリット・デメリットを解説し、ユースケース別の選択肢を紹介します。
3行まとめ
- 手動作成は迅速かつ簡単だが、大規模環境や長期運用には向かない
- IaCはコード化による一貫性と再現性に優れ、大規模環境や本番環境に適している
- 検証環境は手動、本番環境はIaCというハイブリッドアプローチも効果的
メリット・デメリット比較表
各観点で手動とIaCのメリットを比較してみました。
操作性と効率性
観点 | 手動作成 | IaC |
---|---|---|
作成の容易さ | ◎ 簡単に素早く作成可能 | △ 初期設定に多少時間がかかる |
操作性 | ◎ 視覚的UIで直感的に操作可能 | △ コード記述が必要 |
必要知識 | ◎ 特別な知識やツール不要 | △ IaCツールの知識が必要 |
秘密鍵管理 | ◎ すぐにダウンロード可能 | △ 安全な管理に追加の仕組みが必要 |
学習コスト | ◎ 低い | △ 比較的高い |
手動作成は直感的なUIを通じて迅速に操作できる利点があります。特別な技術知識がなくても、AWSコンソールの指示に従うだけで簡単にキーペアを作成できます。一方、IaCでは初期設定やコード記述の手間がかかります。
管理性と一貫性
観点 | 手動作成 | IaC |
---|---|---|
一貫性 | △ 環境間での一貫性維持が困難 | ◎ 環境間で一貫した設定が可能 |
再現性 | △ 作業の再現性が低い | ◎ 高い再現性。同じ設定を複数環境に展開可能 |
変更履歴 | △ 追跡が困難(CloudTrailで可能) | ◎ コードとして管理でき変更履歴の追跡が容易 |
スケーラビリティ | △ 大規模環境では管理が煩雑 | ◎ 大規模環境での管理が効率的 |
手動作成では、複数の環境で同じ設定を再現することが難しく、作業者によって設定が異なる可能性があります。IaCでは、コードとして定義されたインフラ設定を複数環境に一貫して適用できます。
特に大規模な環境や複数のAWSアカウントを管理する場合、IaCのアプローチは管理の複雑さを大幅に軽減できます。
自動化とプロセス統合
観点 | 手動作成 | IaC |
---|---|---|
自動化 | △ 自動化が難しい | ◎ CI/CDパイプラインに組み込み可能 |
エラーリスク | △ ヒューマンエラーのリスクが高い | ◎ コード化により一貫性のあるデプロイが可能 |
コンプライアンス | △ 監査対応が難しい | ◎ 監査やコンプライアンス要件への対応が容易 |
手動プロセスは自動化が難しく、繰り返し作業においてヒューマンエラーのリスクが高まります。
IaCにより、キーペア作成をCI/CDパイプラインの一部として自動化でき、デプロイプロセス全体の信頼性が向上します。また、コード化されたインフラは監査やコンプライアンス要件への対応が容易になります。
セキュリティ管理
観点 | 手動作成 | IaC |
---|---|---|
アクセス制御 | △ 個人アカウントでの操作が多く監視が難しい | ◎ サービスアカウントでの一元管理が可能 |
秘密情報の保護 | △ 秘密鍵の安全な保管は個人に依存 | ◎ シークレット管理サービスとの連携が可能 |
手動作成では、秘密鍵の管理も個人に委ねられることが多く、安全な保管が徹底されない可能性があります。また複数人で管理する場合は安全な受け渡しが難しくなります。
なお、手動作成の安全な受け渡し方法も紹介しています。
IaCでは、AWS Secrets Managerなどのシークレット管理サービスと連携することで、秘密情報の保護レベルを高められます。さらに、すべての変更が記録されるため、セキュリティ監査の際に誰がいつ何を変更したかを明確に追跡できます。
使い分けの目安
手動作成が適している場合
手動作成は、迅速さと簡便さが求められる状況に適しています。
特に技術的な知識が限られているチームや、一時的な用途のために環境をすぐに立ち上げる必要がある場合に有効です。
例えば、短期間の検証作業や、小規模なプロジェクト、緊急対応時などが該当します。また、AWSの操作に慣れていない人でも比較的容易に実行できるため、トレーニング目的でも有用です。
具体的なケース
- 単発的な検証環境の構築
- 少人数チームでの小規模プロジェクト
- クラウド技術の学習段階
- 緊急時の一時的な対応
- プロトタイプの迅速な作成
IaCが適している場合
IaCは、長期的な運用や複雑な環境管理が必要な場合に大きな価値を発揮します。特に、複数の開発者やチームが関わるプロジェクト、本番環境と開発環境の一貫性が重要な場合、定期的なデプロイが行われる環境などに適しています。また、セキュリティやコンプライアンス要件が厳しい業界(金融、医療など)では、設定の標準化や変更履歴の追跡が容易なIaCが推奨されます。
具体的なケース
- 本番環境の構築と管理
- 複数環境(開発、テスト、ステージング、本番)の一貫した管理
- 複数のAWSアカウントにまたがる環境管理
- 規制の厳しい業界でのインフラ管理
- 大規模なチームでの共同作業
- 頻繁なデプロイが必要なプロジェクト
最後に
今回は、小ネタとしてEC2のキーペアを手動・IaCどちらで作成すべきかについて検討した内容を紹介しました。
個人的に検証は手動、本番環境構築時はIaCと分けていたので、概ね方針としてはあっているのかなと思いました。
実際の組織に反映させるときも、各観点を評価し、適切なアプローチをとることが重要ですね。
最後までお読みいただきありがとうございました!
以上、おつまみ(@AWS11077)でした!