皆様こんにちは。
AWS CDKを利用してマルチAZ3層アーキテクチャ構築をしていきます。
この記事ではキーペアの作成を行います。
1.キーペアとは
キーペア(Key Pair)は、AWSのセキュリティ機構の一つで、EC2インスタンスへの安全なアクセスを提供するために使用されます。キーペアは、公開鍵と秘密鍵の2つの部分で構成されます。
- 公開鍵:AWSに登録され、EC2インスタンスに関連付けられます。
- 秘密鍵:ユーザーがダウンロードし、EC2インスタンスへの接続時に使用します。
役割
-
認証:EC2インスタンスへのSSH接続や、WindowsインスタンスへのRDP接続を行う際に、秘密鍵を使って認証します。
-
セキュリティ:公開鍵はインスタンスに配置され、秘密鍵はユーザーだけが持つことで、安全な接続を保証します。秘密鍵が漏れない限り、セキュリティが保たれます。
使用方法
-
キーペアの作成:AWSマネジメントコンソール、CLI、CloudFormation、SDK、Terraform、CDKなどを使って新しいキーペアを作成します。
-
キーペアの登録:作成した公開鍵をEC2インスタンスに登録し、接続を許可します。
-
接続:インスタンスに接続する際に、秘密鍵を使って認証を行います。
詳細は公式ドキュメントを参照ください。
2.目的
AWS CDKでキーペアを作成する。
その後EC2にアタッチし、Parameter Storeに保存された秘密鍵を使用してSSH接続を行う。
※今回はテスト用EC2を作成し、接続の検証を行う
3.構成図
4.ソースコード
# キーペアの作成
key_pair = ec2.CfnKeyPair(self, "kitaya-kp-ec2",
key_name="kitaya-kp-ec2"
)
Tags.of(key_pair).add("Name", "kitaya-kp-ec2")
5.ソースコード詳細
- "ec2.CfnKeyPair"クラスを使用
リソースを作成する際に必要なコンストラクトの指定と論理ID(テンプレート内で一意)の指定をしたのち、詳細のプロパティを指定しています。
※他リソースでも同様
プロパティは下記
使用するプロパティ | 設定値 | 説明 |
---|---|---|
key_name | kitaya-kp-ec2 | キーペアの名前を指定 |
- "Tags.of()"メソッドを使用してNameタグをつけます(書式は下記)
Tags.of("リソース名").add("キー", "値")
6.検証
6-1.公開鍵の作成を確認
先ほどのコードをデプロイするとマネジメントコンソール(EC2>キーペア)から作成を確認できます。
6-2.秘密の作成を確認
キーペアをCDK(Cloudformation)にて作成した場合、秘密鍵はParameter Storeに保存されます。
マネジメントコンソール(AWS Systems Manager>パラメータストア)から確認できます。
以下の画面で"値"から秘密鍵の情報を確認できます。
確認した情報を拡張子".pem"で保存することで利用可能となります。
6-3.接続テスト
- 作成したキーペアを指定してテスト用のEC2を作成します。
- SSH接続ツール(Tera Term等)でEC2のパブリックIPを指定し、接続します。
- ユーザー名と秘密鍵をそれぞれ指定します。
ユーザー名:ec2-user(Amazon Linuxのデフォルト)
秘密鍵:先ほど作成した.pemファイル
- 以下の画面が表示され、接続を確認できました。
6.感想
キーペアの詳細について理解が深まりました。
特に公開鍵と秘密鍵の関係性について復習できました。