LoginSignup
2
3

More than 3 years have passed since last update.

秘密鍵の共有「Secret Manager」

Last updated at Posted at 2020-02-26

前置き

:warning:基本、秘密鍵の共有はよろしくないので、そちらを許容できる方のみ対応ください。

EC2のキーペアのプライベートキーの管理をどのように共有するかを模索していた段階でしたが、AWS Secret Managerで実現できそうなので、検証してみました。

AWS Secret Manager

【AWS公式】AWS Secrets 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除く)]

コンソールで確認

一応、コンソール画面で登録されているか確認してください。
Screenshot from 2020-02-26 11-39-33.png

秘密鍵を取り出し、ファイルで保存する

他の人が、登録した秘密鍵を取得する目線で、やっていきます。
先程、登録したシークレットキーを取得します。

取り出し用のシェル

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除く)]

これでファイルが保存され、秘密鍵として使用できると思います。

参考サイト

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3