API キー、トークン、資格情報などの機密データをさまざまな環境で管理することは、特にアプリケーションの開発とデプロイの場合に非常に難しい場合があります。シークレットをバージョン管理にハードコードせずに、安全に保存し、必要なときに取得できるようにすることは、セキュリティを維持するために非常に重要です。
そこで私は Secrets Loader を作成しました。これは、AWS SSM と CloudFormation から .env ファイルに直接シークレットを動的に取得する Bash スクリプトで、ローカルでの開発とデプロイメントをより簡単、安全、効率的に行うことができます。
Secrets Loader は、.env ファイル内のカスタム構文に基づいて、AWS SSM パラメータ ストアおよび AWS CloudFormation 出力からシークレットを自動的に取得するように設計されたシンプルなツールです。バージョン管理で機密情報を公開することなく、プレースホルダーを実際のシークレットに置き換えます。
たとえば、API キーや認証情報をハードコーディングする代わりに、次のように .env ファイルで定義します。
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"
1 つのコマンドで、Secrets Loader は AWS から実際の値をフェッチし、.env ファイルを更新して、機密情報を安全に保ち、管理しやすくします。
ローカルでの開発と展開中に、プロジェクト ファイルにハードコーディングしたくない機密の認証情報を扱っていることに気づきました。 AWS のサービスを広範囲に使用してきたので、それほど手間をかけずにシークレット管理を既存の開発ワークフローに統合する方法を必要としていました。
Secrets Loader が解決する主な課題は次のとおりです:
Secrets Loader には、ローカル開発環境と運用環境の両方で便利なツールとなるいくつかの重要な機能が付属しています。
Secrets Loader の魅力は、特定のプレフィックス (ssm: および cf:) に基づいて AWS からシークレットをフェッチできる機能にあります。ワークフローの例は次のとおりです:
SSM パラメーターの場合は ssm: プレフィックス、または CloudFormation 出力の場合は cf: プレフィックスを使用して、.env ファイルにシークレットのプレースホルダーを追加します:
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"
次のコマンドを使用してスクリプトを実行し、シークレットを取得します:
./secrets.sh
スクリプトを実行すると、.env ファイルが AWS から取得した実際の値で更新されます:
THIRD_PARTY_API_KEY=actual-api-key-value AWS_SECRET_ACCESS_KEY=actual-access-key-value
シークレットをハードコーディングしたり、手動で検索したりする必要はもうありません!
始める準備はできましたか?プロジェクトで Secrets Loader をセットアップする方法は次のとおりです:
git clone https://github.com/Thavarshan/secretst-loader.git cd secretst-loader
chmod x secrets.sh
AWS CLI がインストールされていない場合は、AWS CLI インストールガイドに従ってください。インストール後、AWS 認証情報を構成します:
aws configure
ssm: および cf: プレフィックスを使用して、シークレットの取得元を定義します:
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"
簡単な例を見てみましょう:
# Application settings APP_NAME=MyApp APP_ENV=production # Secrets fetched from AWS SSM and CloudFormation THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"
./secrets.sh
# Application settings APP_NAME=MyApp APP_ENV=production # Fetched secrets THIRD_PARTY_API_KEY=actual-api-key-value AWS_SECRET_ACCESS_KEY=actual-secret-access-key
Secrets Loaderの使用中に問題が発生した場合は、次の点を確認してください:
AWS 権限: AWS CLI が正しく設定されていること、および IAM ロールまたはユーザーに AWS SSM および CloudFormation シークレットにアクセスするための十分な権限があることを確認してください。
構文エラー: .env ファイルの構文を再確認して、ssm: および cf: プレフィックスが正しいことを確認してください。
スクリプト エラー: スクリプトが特定のシークレットの取得に失敗した場合、警告がログに記録されますが、他のシークレットの取得は続行されます。ログでエラー メッセージがないか確認し、AWS リソースが存在し、アクセス可能であることを確認してください。
スクリプトは拡張可能に設計されています。他のシークレット管理システム (Azure Key Vault や HashiCorp Vault など) を統合する場合は、新しいプレフィックスとフェッチ ロジックをサポートするようにスクリプトを簡単に変更できます。
たとえば、azkv: プレフィックスを追加して、Azure Key Vault からシークレットを取得し、Azure CLI を使用して取得を処理できます。
Secrets Loader はオープンソースであり、貢献はいつでも歓迎されます。機能の追加、バグの修正、改善の提案をご希望の場合は、お気軽に次のことを行ってください:
環境間でシークレットを手動で管理するのにうんざりしている場合は、Secrets Loader がプロセスを合理化するシンプルで効果的なツールです。 AWS SSM と CloudFormation からシークレットを動的に取得することで、バージョン管理で公開される危険を冒さずに認証情報を安全に管理できます。
GitHub でプロジェクトをチェックして試してみて、役に立ったと思ったら、GitHub で ⭐ をお願いします! あなたのサポートがプロジェクトの成長に役立ちますので、ぜひご意見をお待ちしています。フィードバックを送ったり、進行中の開発への貢献を確認したりできます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3