[アップデート]EC2のキーペアに新しい管理機能が追加されました。

CloudFormationでEC2のキーペアが作れたり、公開鍵をAPI経由で参照出来るようになりました。
2022.04.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。

先ほどEC2のキーペアに新たな管理機能が加わったとのアップデート情報が入ったので早速試してみました。

内容は以下のようなものでした。

  • コンソール上やAPI経由(AWS CLI, SDK)でキーペアの作成日を参照出来るようになったよ。
  • ED25519タイプでも秘密鍵の形式で.ppk形式を選択出来るようになったよ。
  • API経由で公開鍵を参照出来るようになったよ。
  • CloudFormationでキーペアが作成/削除出来るようになったよ。

このうち、本記事では下の2つについて検証してみました。

まずは上の2つについても簡単にご紹介します。

コンソール上やAPI経由(AWS CLI, CDK)でキーペアの作成日を参照出来るようになったよ。

作成日についてはこちらの記事で紹介されていますのでご覧ください。本記事では割愛します。

ED25519タイプでも秘密鍵の形式で.ppk形式を選択出来るようになったよ。

ED25519は楕円曲線暗号の一種で、RSAと同程度の安全性を確保しながらもRSAよりも高速に利用出来るというメリットを持っています。(デメリットもありますが。)

ED25519のキーペアについて、詳しくはこちらをご覧ください。

上の記事内にも書かれているように、今まではキーペアのタイプとしてED25519を選んでしまうと秘密鍵の形式は.pemしか選べなかったようですが、今回のアップデートで.ppk形式も選べるようになりました。

API経由で公開鍵を参照出来るようになったよ。

今までキーペアの公開鍵は以下の方法でしか参照出来ませんでした。

  • ローカルPCでssh-keygenコマンドを叩く
  • インスタンスから直接取得
  • インスタンスメタデータから取得

Describe public keys - Amazon Elastic Compute Cloud

しかし、今回のアップデートでAWS CLIやSDKなどのAPI経由でも参照出来るようになりました。

今回はAWS CLIでやってみますが、公開鍵を取得するためのオプション--include-public-keyは記事執筆の2022/04/30時点でAWS CLI version 1系にしか対応していません。。。

describe-key-pairs — AWS CLI 1.23.3 Command Reference

describe-key-pairs — AWS CLI 2.6.0 Command Reference

それではCloudShellでAWS CLI version 1系の環境を作ってコマンドを叩いてみます。

(aws-cli-v1) [cloudshell-user@ip-10-0-102-206 ~]$ aws ec2 describe-key-pairs --key-names demo-key-pair --include-public-key
{
    "KeyPairs": [
        {
            "KeyPairId": "key-028fbc4d7f94a46b5",
            "KeyFingerprint": "**:**:**::**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**",
            "KeyName": "demo-key-pair",
            "KeyType": "rsa",
            "Tags": [],
            "PublicKey": "ssh-rsa ************** demo-key-pair",
            "CreateTime": "2022-04-29T18:59:07.000Z"
        }
    ]
}

確かにPublicKeyとして表示されています。

当たり前ですが、version 2系ではオプションが無いと言われちゃいます。

[cloudshell-user@ip-10-0-102-206 ~]$ aws ec2 describe-key-pairs --key-names demo-key-pair --include-public-key

usage: aws [options]   [ ...] [parameters]
To see help text, you can run:

  aws help
  aws  help
  aws   help

Unknown options: --include-public-key

CloudFormationでキーペアが作成出来るようになったよ。

個人的にはこのアップデートが一番嬉しいですね。

CloudFormationでもキーペアが作成/削除出来るようになっちゃいました。わお。


追記 - 4/30 14:06

アップデート時には無かったCFnの公式ドキュメントも追加されていました。

AWS::EC2::KeyPair - AWS CloudFormation


早速試してみます。

キーペアを作成するだけなので使うファイルはシンプルにこんな感じ。

Resources:
    DemoKeyPair:
        Type: AWS::EC2::KeyPair
        Properties:
            KeyName: demo-key-pair
            KeyType: rsa

PropertiesはKeyNameさえあれば良さそうです。KeyTypeは書かなくてもデフォルトでRSAが指定されます。

早速流してみます。

おお、無事にStackの作成が完了しています!

ちなみに出力タブには何も表示されていません。

キーペアが作成されていることも確認出来ました。

では秘密鍵は。。。?

ありました、AWS Systems Managerのパラメータストアに。助かる。


追記 - 4/30 11:00

こちらの秘密鍵情報はコンソール上から複数回参照することが可能です。

また、SSM参照権限(AmazonSSMReadOnlyAccess)のみを持つ別ユーザーでも複数回参照することが出来ました。


最後に

CloudFormationでもキーペアを作成出来るのは嬉しいですね。

簡単なアップデート情報まとめですが、本記事がどなたかのお役に立てれば幸いです。

以上、べこみんでした。

ちなみに。。。

今回のアップデート情報はLINEにプッシュ通知しているおかげですぐに気付くことが出来ました!

お手軽に連携出来ちゃうのでアップデート情報を追いたいな〜と思っている方は是非こちらの記事もご覧ください。