sicherheit について
sicherheit は、認証情報、サーバー、プロジェクトのリポジトリを保護するためのドイツ語のセキュリティスキルです。予防的な確認と、秘密情報の漏えいなどが起きた際の対応手順を扱います。
主な機能
- 01リポジトリ履歴の秘密情報漏えい確認
- 02Git や公開ファイルへの認証情報混入防止
- 03サーバーの制限付き `.env` で秘密情報を管理
- 04公開ポートと管理アクセスの制限
- 05更新と依存関係の脆弱性確認
- 06認証情報漏えいや事故への対応
活用シーン
- 01デプロイ前のプロジェクト監査
- 02サーバーでの秘密情報保管の設定
- 03外部公開サービスの削減
- 04漏えいした認証情報への対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill sicherheitインストール後、Claude Code で/sicherheitを入力して読み込まれたか確認します。
詳細
セキュリティ:鍵を玄関マットの下に隠さない
たとえ話
家の安全性は、最も不用心な瞬間で決まります。泥棒が探すのは最も頑丈な錠前ではなく、玄関マットの下にある鍵や、開いた地下室の窓です。
- 秘密情報(パスワード、API キー、秘密鍵)は鍵です。金庫に保管し、玄関マットの下には絶対に置かないでください。
- ログブック(Git)は玄関マットではなく、ショーウィンドウです。一度記録された内容は、すべての古い記録から見えるままになります。
- ドアと窓は、サーバーへの開かれた入口です。必要な数だけにしましょう。
- アップデートは、古い錠前を開ける手口が知られたときに取り付ける新しい錠前です。
**このたとえ話の使い方:**質問をしたりコマンドを示したりする前に、最初の回答で相手に伝えてください。相手がすぐに解決策を求めている場合も同じです。
話し方
- **質問だけで終わらせない:**プロジェクトや情報が不足していても、具体的な手順を提示するか、前提条件に印を付けた草案(
[前提:…])としてファイルを作成してください。不足していることは最後に尋ねてください。 - です・ます調で、落ち着いて、はっきりと話してください。秘密情報が公開された場合は、誰かを責めずに、すぐに対応してください。
- 秘密情報を読み上げたり、出力したり、チャット、コミットメモ、ログに書き込んだりしてはいけません。
- 公開鍵(統計用の
phc_…や Stripe のpk_…など)は秘密情報ではありません。秘密鍵は多くの場合、sk_…、ghp_…、-----BEGIN … PRIVATE KEY-----のような文字列で始まります。
手順
Light では、リンクがどこにもなくても、Albatros が公開するものはすべて公開状態です。対象は seite/ フォルダーです。ない場合は public/、場合によっては docs/ を含むリポジトリ全体です。そのため、ページは seite/ に置いてください。ここには秘密情報を一切入れてはいけません。それでも手順 1 と 2 は適用されます。サーバー、.env、ポートに関する内容は Pilot の場合にのみ適用されます。
1. 玄関マットの下に何かありませんか?
git ls-files | grep -E '(^|/)\.env(\..+)?$' | grep -v '\.env\.example$'
git log -p --all | grep -nE -- '-----BEGIN [A-Z ]*PRIVATE KEY-----|sk_live_|sk_test_|ghp_[A-Za-z0-9]{20,}|password *[=:]' | head
何か見つかった場合は、すぐにプロバイダーで新しいものを生成し(ローテーションし)、古いものを無効にしてください。リポジトリから削除するだけでは不十分です。古い記録はログブックとハーバーに残ります。片付けるのは、その後にしてください。
2. 金庫
.gitignoreに.env、.env.*、!.env.exampleを記載します。相手と一緒に確認してください。- リポジトリ内の
.env.exampleに、必要な秘密情報を空の値で示します。 - サーバー上では、実際の値を自分だけが読み取れる
~/projekt/.envに保存します。
値は相手自身に入力してもらいます(ssh {name}@aufwind.sh 'cd ~/projekt && umask 077 && touch .env && chmod 600 .env'nano ~/projekt/.env)。これにより、値があなたの履歴に残りません。 - **パイプラインについて:**パイプラインはあなたのサーバー上で動作し、あなたのページは
.envから秘密情報を読み取ります。ワークフローのステップで秘密情報が必要な場合は、ハーバーの金庫(リポジトリの「Settings」→「Actions」→「Secrets」)に保存し、ワークフロー内ではenv:を通じてのみコマンドに渡します(スキルpipeline)。 - Dockerfile について:
.dockerignoreに.env、.git、node_modulesを指定します。指定しないと、ビルド時に.envまで取り込まれてしまいます。
3. 用途ごとに鍵を分ける
相手の家の鍵(サーバーとハーバー用)、サーバーがハーバーにアクセスするための読み取り専用鍵、そして後に自分のサーバー上で使うパイプラインの鍵は、それぞれ別のものにします。いずれかを紛失した場合は、その鍵に対応する錠前だけを交換します(コックピットまたは schluessel_hinterlegen を使用します)。
4. ドアと窓
Albatros では、プラットフォームが玄関(ファイアウォール、パスワード総当たり攻撃への対策)を管理します。自分で開けるドアは、自分で管理してください。
compose.yamlでは、外部に公開するのはポート 80 のウェブサイトだけにします。それ以外(データベース、CMS、管理画面)は127.0.0.1のみにバインドするか(例:"127.0.0.1:5432:5432")、公開しないでください。そうしないと、Docker がファイアウォールをすべて迂回してポートを開いてしまいます。- 管理画面にはトンネル経由でのみアクセスします(スキル
cms)。 - 内部情報が公開されていないことを確認します。
どちらもcurl -s -o /dev/null -w '%{http_code}\n' https://{name}.aufwind.sh/.env curl -s -o /dev/null -w '%{http_code}\n' https://{name}.aufwind.sh/.git/config404(または403)を返す必要があります。
5. 新しいロック
- サーバー上で、
apt list --upgradableを実行すると、保留中のアップデートが表示されます。大きなアップデートの前に写真を撮ってから(スキルzurueck-auf-gestern)、sudo apt update && sudo apt upgradeを実行します。 - プロジェクトでは、
package.jsonがある場合、npm auditを実行すると、コンポーネントに既知の脆弱性が表示されます。
6. 最小限の権限
- ワークフローには、必要なシークレットだけを渡します。GitHub では(移行後、スキル
landung)、さらにpermissions: contents: readを設定します。 - テンプレートで許可されている場合は、コンテナ内のプログラムを root として実行しないでください(Dockerfile の
USER)。 - 作業に参加する人には、それぞれ個別のアクセス権を付与し、共有アカウントは使いません。
7. ミッションを確認する
航海日誌とベルトコンベア(スキル git-logbuch、pipeline)を確認してから、flugschule-07-sicherheit を使って mission_pruefen を実行します。この確認では、プロジェクトの .gitignore に .env が含まれているかを調べます(サーバー上では ~/projekt に Pilot を配置し、港では Light を使います)。
何かが起きた場合
- 提供元でシークレットを再発行し、古いものを無効にします。
- 悪用されていないか確認します(提供元の請求書、ログイン履歴、送信先リスト)。
- サーバーが変更されている場合は、問題発生前の写真の状態に戻します(スキル
zurueck-auf-gestern)。 - 他の人のデータに関わる場合は、
coach_fragenを通じて Albatros に知らせます。被害を受ける人へのリスクが高い場合、データ保護法により EDÖB への報告が求められます(DSG 第 24 条)。法的助言ではありません。
最後のメッセージ
このステップでの最後のメッセージは、「鍵を玄関マットの下に置かない」というイメージを使い、要点をもう一度伝える一文から始めます。その後、完了したこと、結果の保存場所、未完了のこと、次に行うことを伝えます。