前置き
基本、秘密鍵の共有はよろしくないので、そちらを許容できる方のみ対応ください。
EC2のキーペアのプライベートキーの管理をどのように共有するかを模索していた段階でしたが、AWS Secret Managerで実現できそうなので、検証してみました。
AWS Secret Manager
アプリケーション、サービス、IT リソースへのアクセスに必要なシークレットの保護
データベースの認証情報、API キー、その他のシークレットをそのライフサイクルを通して容易にローテーション、管理、取得できるようにします。
秘匿情報の管理をこいつはやってくれます。
秘密鍵をバイナリデータで登録
※バイナリデータの登録・参照・取り出しは、AWSマネジメントコンソールではサポートされておらず、AWS CLIやSDKを使う必要があります。
登録用のシェル
register.sh
#! bin/bash
if [ -z "$1" ]; then
echo "引数を入力してください"
exit
else
KEYPAIR_NAME=$1
aws secretsmanager create-secret \
--name ${KEYPAIR_NAME} \
--secret-binary file:///data/secret-manager/keypair/${KEYPAIR_NAME}.pem
aws secretsmanager get-secret-value \
--secret-id ${KEYPAIR_NAME}
fi
登録シェル実行
$ sh register.sh [秘密鍵の名称(.pem除く)]
コンソールで確認
秘密鍵を取り出し、ファイルで保存する
他の人が、登録した秘密鍵を取得する目線で、やっていきます。
先程、登録したシークレットキーを取得します。
取り出し用のシェル
getValue.sh
#! bin/bash
if [ -z "$1" ]; then
echo "引数を入力してください"
exit
else
KEYPAIR_NAME=$1
aws secretsmanager get-secret-value \
--secret-id ${KEYPAIR_NAME} \
--query 'SecretBinary' \
--output text \
| base64 -d > ./get-keypair/${KEYPAIR_NAME}.pem
fi
取り出しシェル実行
引数の名称で、シークレットキーを取得してきます。
$ sh getValue.sh [秘密鍵の名称(.pem除く)]
これでファイルが保存され、秘密鍵として使用できると思います。