AWS CDKによる【キーペア】の構築

皆様こんにちは。
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.接続テスト

  1. 作成したキーペアを指定してテスト用のEC2を作成します。

  1. SSH接続ツール(Tera Term等)でEC2のパブリックIPを指定し、接続します。

  1. ユーザー名と秘密鍵をそれぞれ指定します。

       ユーザー名:ec2-user(Amazon Linuxのデフォルト)
       秘密鍵:先ほど作成した.pemファイル

  1. 以下の画面が表示され、接続を確認できました。

6.感想

キーペアの詳細について理解が深まりました。
特に公開鍵と秘密鍵の関係性について復習できました。

Last modified: 2024-08-07

Author