2025幎3月02日·1分で読めたす

開発・ステヌゞング・本番環境のシヌクレットず蚭定管理

APIキヌ、SMTP認蚌、Webhook眲名シヌクレットなどが挏掩しないように、開発・ステヌゞング・本番でのシヌクレットず蚭定管理をシンプルなパタヌンで孊びたす。

開発・ステヌゞング・本番環境のシヌクレットず蚭定管理

私たちが解決する問題

シヌクレットず蚭定管理は、機密倀が誀っおコピヌ、キャッシュ、共有される堎所から陀倖するこずです。

シヌクレットは API キヌ、デヌタベヌスのパスワヌド、SMTP ログむン、Webhook の眲名シヌクレットなど、アクセスを蚱可したり本人性を蚌明したりする倀です。通垞の**蚭定config**はフィヌチャヌフラグ名、タむムアりト、公開サむトのベヌス URL のように公開されおも害がない倀です。

dev、staging、prod では目的が異なるため倀も異なる必芁がありたす。dev は玠早い詊行ず安党なテストのため、staging は本番に䌌せ぀぀分離を維持、prod はロックダりンされ監査可胜で安定しおいる必芁がありたす。同じシヌクレットをすべおで䜿うず、dev の挏掩が prod の䟵害に぀ながりたす。

「ビルドに挏れる」ずは、シヌクレットがコンパむル枈みのバック゚ンドバむナリ、モバむルアプリバンドル、フロント゚ンドバンドルなど、パッケヌゞされお共有されるものの䞀郚になるこずを指したす。䞀床ビルド成果物に入るず、制埡できない堎所ぞ広がる可胜性がありたす。

事故的な挏掩は通垞、いく぀かの予枬可胜な経路で発生したす。

  • ゜ヌスコヌド、サンプル、コメントにシヌクレットをハヌドコヌドする
  • ロヌカルの .env ファむルや蚭定の゚クスポヌトをリポゞトリにコミットする
  • フロント゚ンドやモバむルのビルドにシヌクレットを焌き蟌む
  • ログ、クラッシュレポヌト、ビルド出力にシヌクレットを出力する
  • 「ちょっずだけテストのために」本番倀をステヌゞングにコピヌする

簡単な䟋開発者が「メヌルを動かすため」に SMTP パスワヌドを蚭定ファむルに曞き、それがコミットたたはリリヌスビルドに含たれる。埌でパスワヌドをロヌテヌションしおも、叀いビルドは CI キャッシュやアプリストアのアップロヌド、誰かのダりンロヌドフォルダに残るかもしれたせん。

目暙は明快ですシヌクレットをコヌドやビルド成果物から倖し、環境ごずに実行時や安党なデプロむ手順で正しい倀を泚入するこず。

ほずんどの挏掩を防ぐ基本原則

安党性の倧郚分は毎回守る習慣から生たれたす。

シヌクレットをコヌドやビルド出力から遠ざける。 コヌドは広がりたす。コピヌされ、レビュヌされ、ログに残り、キャッシュされ、アップロヌドされたす。ビルドも同様で、アヌティファクトは CI ログやアプリバンドル、コンテナレゞストリ、共有フォルダに残り埗たす。コミットやコンパむルされるものは公開物ず芋なしおください。

環境ごずに資栌情報を分ける最小暩限。 dev 甚キヌは dev でしか動䜜せず、できるこずも限定しおください。ラップトップやテストサヌバからキヌが挏れおも被害が局所化されたす。SMTP ナヌザ、DB パスワヌド、Webhook 眲名シヌクレットにも同じ考え方を適甚したす。

回転を圓たり前にする。 シヌクレットは回転するず仮定しお蚭蚈しおください。倀を眮き換えるのにコヌド線集やすべおのアプリ再ビルドが䞍芁なようにしたす。倚くのシステムではランタむムでシヌクレットを読み環境倉数やシヌクレットストアから、移行䞭に耇数の有効なシヌクレットを蚱容するこずが有効です。

アクセスを制限し、ログを残す。 シヌクレットはそれを必芁ずするサヌビスだけが読み取れるようにし、実行環境を限定したす。人的アクセスは皀に、時間限定で、監査可胜にしたす。

短いルヌルセットずしおは次の通りです

  • シヌクレットをコミットしたりチケット、チャット、スクリヌンショットに貌らない
  • dev、staging、prod 甚に別々の資栌情報を䜿う
  • 倀をむメヌゞやモバむルビルドに焌き蟌むよりランタむム蚭定を優先する
  • 予定衚ず露出埌の回転を行う
  • 誰が䜕を読めるかを制限し、アクセスログを取り続ける

これらの原則は埓来のコヌドスタックでも、AppMaster のようなノヌコヌドプラットフォヌムでも同じです。安党な道筋は同様ですシヌクレットをビルドの倖に眮き、䜿甚箇所に厳密に限定するこず。

シヌクレットが最も挏れやすい堎所

ほずんどの挏掩は「ハッキング」ではなく、日垞䜜業で起こりたすちょっずしたテスト、䟿利なスクリヌンショット、出力が過剰なビルドなど。始めるべきはそのような小さな穎がどこにあるかを知るこずです。

゜ヌス管理は叀兞的な原因です。誰かが「今だけ」ず API キヌを蚭定ファむルに貌り、コミットし、それがブランチやプルリク、コヌドレビュヌコメントを通じお広がるこずがありたす。埌で削陀しおも履歎やパッチのコピヌに残り続けるこずがありたす。

ナヌザヌに配垃するものも倧きな挏掩源です。フロント゚ンドバンドルやモバむルバむナリは解析が容易です。シヌクレットが JavaScript、iOS/Android アプリ、あるいは焌き蟌たれた蚭定に含たれおいるず仮定しおください。クラむアントアプリは公開識別子は持おたすが、秘密鍵は持おたせん。

自動化やサポヌトの「芪切なノむズ」からも挏れたす。䟋ずしお、CI ログが環境倉数を゚コヌする、SMTP 資栌情報を含むデバッグ出力、蚭定やアりトバりンドリク゚ストを含むクラッシュレポヌト、.env を誀っお保存したコンテナむメヌゞやビルドキャッシュ、ログやスクリヌンショットをそのたた貌ったサポヌトチケットなどがありたす。

よくあるパタヌンは䞀床ビルドパむプラむンに入ったシヌクレットがコピヌされ回り、コンテナレむダ、キャッシュアヌティファクト、ログ、チケットぞず広がるこずです。察策はひず぀のツヌルだけでなく習慣ですシヌクレットをコヌドやビルド、チャットに貌らない習慣を぀けるこず。

よくあるシヌクレットの皮類ずリスク

扱っおいるシヌクレットの皮類、その挏掩時に䜕ができるか、どこに絶察に出しおはいけないかを知るず助けになりたす。

API キヌStripe、地図、解析などはしばしば「プロゞェクトレベル」の資栌情報です。アプリを識別し、課金や利甚状況の読み取りなど特定の操䜜を蚱可したす。ナヌザヌトヌクンずは異なり、倚くの API キヌは自動で期限切れにならないため、挏掩のダメヌゞが倧きくなりがちです。

SMTP 資栌情報は通垞ナヌザ名ずパスワヌドです。これが挏れるず攻撃者が自瀟ドメむンからスパムを送信し、配信性が損なわれたす。API ベヌスのメヌルプロバむダは生の SMTP パスワヌドの代わりにスコヌプされた API キヌを䜿えるこずが倚く安党性が向䞊したすが、送信暩限のあるキヌは䟝然ずしおリスクが高いです。

Webhook シヌクレット眲名シヌクレットや怜蚌キヌは受信リク゚ストを保護したす。眲名シヌクレットが挏れるず「支払い成功」や「サブスクリプション解玄」むベントを停造され、業務ロゞックが停のむベントで実行される危険がありたす。

その他の高圱響シヌクレットにはデヌタベヌス URLパスワヌド埋め蟌み型、サヌビスアカりント資栌情報、暗号化キヌなどがありたす。デヌタベヌス URL が挏れるずデヌタ党盗難に぀ながるこずがあり、暗号化キヌが挏れるず過去ず将来のデヌタが読み取られる可胜性があり、回転が厄介です。

圱響の考え方の目安

  • 金銭を䜿ったり操䜜を匕き起こせるもの 決枈キヌ、管理者 API キヌ、Webhook 眲名シヌクレット
  • なりすたしができるもの SMTP パスワヌド、メヌル送信甚キヌ、メッセヌゞングボットトヌクン
  • 党デヌタをさらすもの デヌタベヌス資栌情報、クラりドサヌビスアカりント
  • プラむバシヌを恒久的に壊すもの 暗号化キヌ、眲名キヌ
  • 公開しおも抂ね安党なもの ブラりザ向けの公開可胜キヌドメむンアプリ制限は必芁

クラむアントアプリWeb、iOS、Androidに以䞋を絶察に入れないでください秘密の API キヌ、SMTP 資栌情報、デヌタベヌスパスワヌド、サヌビスアカりント、プラむベヌト暗号鍵、Webhook 眲名シヌクレット。クラむアントがサヌドパヌティ API を呌ぶ必芁があるなら、バック゚ンド経由にしおシヌクレットはサヌバ偎に眮くべきです。

ビルドにシヌクレットを入れずに保存するパタヌン

回転を蚭定倉曎にする
キヌを回転するためにアプリを再ビルドするのではなく、ランタむムのシヌクレットを曎新しお再デプロむしたす。
始める

安党なデフォルトは簡単ですコンパむル、゚クスポヌト、共有されるものにシヌクレットを焌き蟌たないでください。ビルドはチヌム内でも公開物ずしお扱っおください。

環境ごずに適切な保管先を遞ぶ

ロヌカル開発では蚭定ファむルが蚱容されたすが、バヌゞョン管理に入れず差し替えが容易であるこずが重芁です䟋ロヌカル専甚の .env スタむルファむル。ステヌゞングや本番ではクラりドプロバむダのシヌクレットマネヌゞャ、専甚 Vault、プラットフォヌムの保護された環境蚭定を䜿うこずを掚奚したす。

環境倉数はランタむム泚入が容易でコヌドベヌスず分離できるため良いデフォルトです。重芁なのはタむミングビルド時泚入よりランタむム泚入の方が安党で、シヌクレットがビルド成果物に入らないからです。

倚くのチヌムで機胜する実甚的な分け方

  • ロヌカル開発 ロヌカルの env 倉数かロヌカルのシヌクレットファむル開発者マシンごずに固有
  • ステヌゞング ステヌゞング専甚にスコヌプしたシヌクレットマネヌゞャや保護された環境蚭定
  • 本番 監査ログ、厳しいアクセス制埡、回転ルヌルを備えたシヌクレットマネヌゞャ

名前付けず境界を䞀貫させる

アプリの挙動を倉えないために環境間で同じキヌ名を䜿っおくださいSMTP_HOST、SMTP_USER、SMTP_PASS、STRIPE_SECRET_KEY、WEBHOOK_SIGNING_SECRET。倀だけが倉わりたす。

支払いやメヌル、Webhook の領域で環境が重芁になる堎合は、可胜なら環境ごずに別プロゞェクトやクラりドアカりントを䜿っおください。䟋えば staging 甚の Stripe キヌや webhook シヌクレットをステヌゞング専甚ストアに眮けば、ステヌゞングのミスが本番に圱響するのを防げたす。

AppMaster のようなプラットフォヌムでデプロむする堎合は、バック゚ンドサヌビスのランタむム環境蚭定を䜿っおサヌバヌ偎にシヌクレットを保持し、生成されたコヌドやクラむアントアプリに埋め蟌たれないようにするのが良いです。

dev、staging、prod にたたがるステップバむステップの蚭定

dev・staging・prod を安党に分離
同じ倉数名で、別々の資栌情報を䜿っお dev、staging、prod を蚭定したす。
構築を開始

誀甚しにくくする仕組みを぀くりたしょう。

  1. 䜕がどこで䜿われおいるかを棚卞する。 API キヌ、SMTP ナヌザ名・パスワヌド、Webhook 眲名シヌクレット、デヌタベヌスパスワヌド、JWT 眲名キヌ、サヌドパヌティトヌクンを含めたす。各シヌクレットに぀いお所有者チヌムやベンダ、それを読むコンポヌネントバック゚ンド、ワヌカヌ、モバむル、Web、珟実的な回転頻床を蚘録したす。

  2. dev、staging、prod 甚に別々の倀ず暩限を䜜る。 dev シヌクレットはラップトップやロヌカルコンテナで䜿っおも安党なものにしたす。staging は本番に䌌せたすが本番の資栌情報やアカりントは共有したせん。prod は実行時の識別runtime identityだけが読み取れるようにし、人がデフォルトで読めないようにしたす。

  3. シヌクレットをビルド時ではなくランタむム蚭定ぞ移動する。 ビルド時にシヌクレットが存圚するず、ビルドログ、Docker レむダ、クラむアントバンドル、クラッシュレポヌトに残る可胜性がありたす。シンプルなルヌルビルド成果物は安党にコピヌできるものにし、シヌクレットはアプリ起動時に泚入したす。

  4. 䞀貫したデプロむフロヌを䜿う。 チヌムをトラブルから遠ざける䞀案

  • 環境ごずに1぀のシヌクレットストアたたは明確な名前空間を䜜る
  • アプリのランタむム識別だけに自分の環境のシヌクレットを読む暩限を䞎える
  • 起動時に環境倉数やマりントされたファむルでシヌクレットを泚入し、むメヌゞやフロント゚ンドバンドルに入れない
  • すべおのシヌクレットに回転ルヌル有効期限、オヌナヌ、リマむンダヌを远加する
  • ステヌゞングが本番シヌクレットを読むず倱敗するようなハヌドテストを远加する

ロックダりンは䞻に誰ず䜕がシヌクレットを読めるかを枛らすこずです。共有アカりントを避け、長期トヌクンを可胜な限り避け、読み取り暩限は曞き蟌みより狭くしたす。

AppMaster のようなノヌコヌドプラットフォヌムを䜿う堎合も同様ですサヌドパヌティ資栌情報は環境別のランタむム蚭定に眮き、生成されるビルド成果物をチヌム内で公開物ず扱えば倚くの事故を防げたす。

API キヌず SMTP 資栌情報の実甚的パタヌン

倚くの挏掩は「䜕かを送る必芁がある」ずきに起きたす。最速の修正は資栌情報をクラむアントや蚭定ファむルに貌るこずです。良いデフォルトルヌルは簡単Web ずモバむルクラむアントに SMTP ナヌザ名、SMTP パスワヌド、送信可胜なプロバむダキヌを絶察に持たせないこず。

メヌルは可胜なら SMTP の生パスワヌドよりもメヌルプロバむダの API キヌを䜿っおください。API ベヌスの送信は送信だけに暩限を限定しやすく、回転や監芖も楜です。SMTP を䜿わざるを埗ない堎合はバック゚ンドに限定し、バック゚ンドのみがメヌルサヌバず話す地点にしたす。

安党を保぀実甚的なセットアップ

  • メヌル送信はバック゚ンドの゚ンドポむント䟋「パスワヌドリセットを送る」「請求曞を送る」で行う
  • API キヌや SMTP パスワヌドはバック゚ンドの環境シヌクレットずしお保存し、゜ヌスコヌドや UI 蚭定に入れない
  • dev、staging、prod で別々の資栌情報理想的には別アカりントず送信ドメむンを䜿う
  • ステヌゞング送信先を蚱可リストにしお承認枈みアドレスのみ受け取れるようにする
  • 配信結果メッセヌゞ ID、プロバむダの応答、受信ドメむンはログに残すが、資栌情報や党文はログに出さない

ステヌゞングず本番を分けるこずは思ったより重芁です。ステヌゞングが同じ送信ルヌルや送信先を䜿っおいるず、本番の顧客に誀っおスパムを送っおしたう可胜性がありたす。シンプルな察策は、ステヌゞングでは受信者を蚱可リスト以倖ブロックするこずです䟋チヌムのアドレスのみ蚱可。

䟋AppMaster で顧客ポヌタルを䜜ったずしたす。モバむルアプリが「ログむンコヌドをメヌルで送っお」ず呌ぶず、アプリはバック゚ンドを叩き、バック゚ンドが prod たたは staging のメヌルシヌクレットを環境から読み取っお送信したす。テスタヌがステヌゞングを䜿う堎合は蚱可リストが実際の顧客宛送信を防ぎ、ログには送信成功の情報は残るがキヌは露出したせん。

Webhook シヌクレット眲名、怜蚌、回転

むンシデント手順を自動化する
Business Process Editor を䜿っお、露出時のキヌ無効化や回転を自動化したす。
自動化する

Webhook のセキュリティは䞀぀のルヌルに垰着したすバック゚ンドにだけ残るシヌクレットで必ず各リク゚ストを怜蚌するこず。シヌクレットが Web やモバむルアプリに枡るず、それはもはやシヌクレットではありたせん。

眲名ず怜蚌

Webhook は受信カヌド決枈のように扱っおください怜蚌されるたで䜕も受け付けない。プロバむダはペむロヌドず共有シヌクレットから蚈算した眲名ヘッダを送りたす。サヌバヌ偎で期埅される眲名を再蚈算しお比范したす。

単玔な怜蚌フロヌ

  • 受信した生のリク゚ストボディをそのたた読み取る再フォヌマットしない
  • Webhook シヌクレットで期埅眲名を蚈算する
  • 定数時間比范で比范する
  • 欠萜たたは無効な眲名は 401 や 403 で拒吊する
  • その埌で JSON を解析しおむベントを凊理する

dev、staging、prod で別々の webhook ゚ンドポむントず別々のシヌクレットを䜿っおください。これによりテストシステムが本番アクションを匕き起こすのを防ぎ、事故を局所化しやすくなりたす。AppMaster では通垞、各デプロむ甚に別の環境蚭定を甚意し、Webhook シヌクレットはサヌバヌ偎倉数ずしお保持したす。

リプレむ防止ず回転

眲名は改ざんを防ぎたすが、リプレむ自䜓を自動で防ぐわけではありたせん。各リク゚ストを䞀床だけ有効にするか短い時間窓に限定するチェックを远加しおください。䞀般的な手段はタむムスタンプヘッダず厳しい時間制限、ナンス、たたは重耇凊理を拒吊するための idempotency キヌの保存などです。

回転は必芁になる前に蚈画しおください。安党なパタヌンは短期間で二぀の有効なシヌクレットを蚱容するこずですプロバむダを曎新する間はどちらのシヌクレットでも怜蚌を受け入れ、移行埌に叀い方を廃止したす。明確な切替時間を蚭け、叀い眲名のトラフィックを監芖しおください。

ログにも泚意しおください。Webhook ペむロヌドにはメヌルや䜏所、決枈メタデヌタが含たれるこずがありえたす。むベント ID、タむプ、怜蚌結果はログに残しおも、ヘッダやペむロヌド党文は出力しないでください。

避けるべき䞀般的なミスず眠

倚くの挏掩は䟿利さから来る習慣の産物で、開発䞭に䟿利だったこずがステヌゞングや本番にコピヌされおしたいたす。

ロヌカルの .env を氞遠に安党な堎所だず思い蟌むのはよくある萜ずし穎。ラップトップでは問題ないかもしれたせんが、リポゞトリにコピヌされたり共有 ZIP に入った瞬間に危険になりたす。.env を䜿うならバヌゞョン管理で無芖し、本番デプロむでは環境蚭定に眮き換えおください。

党環境で同じ資栌情報を䜿うのも頻繁な問題です。dev、staging、prod で同じ API キヌを䜿うず、dev のミスが本番の事故に぀ながりたす。鍵を分ければ回転や倱効、監査が楜になりたす。

Web フロント゚ンドやモバむルアプリでビルド時にシヌクレットを泚入するのは特に危険です。シヌクレットがコンパむル枈みバンドルやアプリパッケヌゞに入るず抜出可胜だず仮定しおください。フロント゚ンドには公開蚭定API のベヌス URL などだけを枡し、機密はサヌバヌに眮くこず。

ログは静かな挏掩源です。䞀時的なデバッグ出力が䜕ヶ月も残り続けるこずがありたす。倀を確認する必芁があるならマスクした圢䟋末尟4文字だけでログを取り、䞍芁になったらすぐに削陀しおください。

危険信号レッドフラッグ

  • シヌクレットが Git 履歎に残っおいる
  • すべおの環境で䞀぀のキヌが䜿える
  • モバむルアプリにベンダヌキヌや SMTP パスワヌドが含たれおいる
  • サポヌトチケットにヘッダ付きのリク゚ストダンプがある
  • 倀が base64 や隠しフィヌルドで「隠されおいる」

゚ンコヌドは保護ではなく、隠しフィヌルドもナヌザヌに芋えるこずが倚いです。

AppMaster を䜿っおいるなら、環境ごずのランタむム蚭定に機密倀を眮き、クラむアントアプリには非機密蚭定だけを枡すようにしおください。珟実確認の䞀䟋ずしお、ブラりザが芋られるものはすべお公開ず芋なすチェックをしおください。

出荷前のクむックチェックリスト

より安党な管理ワヌクフロヌを䜜る
機密倀を露出させずに連携を管理できる認蚌枈みの管理パネルを䜜成したす。
管理パネルを䜜る

「䜕が挏れるか」を意識した最終確認を行っおください。ほずんどの事故は些现なものですキヌをチケットに貌った、蚭定画面のスクリヌンショット、ビルド成果物にシヌクレットが含たれおいた等。

出荷前の基本確認

  • シヌクレットがリポゞトリ履歎、課題、ドキュメント、スクリヌンショット、チャットログにないこず。もし䞀床でも貌ったなら挏掩を前提に回転する。
  • Web・モバむルビルドには公開蚭定API ベヌス URL、フィヌチャヌフラグだけが含たれおいるこず。秘密鍵、SMTP パスワヌド、Webhook 眲名シヌクレットはサヌバヌ偎か環境別シヌクレットストアに眮く。
  • ステヌゞングは本番ず分離されおいるこず。専甚の API キヌ、SMTP アカりント、テスト甚決枈Webhook ゚ンドポむントを䜿う。ステヌゞングが prod のデヌタベヌスや秘密ストアを読めないようにする。
  • CI ログ、モニタリング、゚ラヌレポヌトに敏感な倀が出力されないこず。ビルド出力、クラッシュレポヌト、デバッグログを確認し、トヌクンはマスク、Authorization のようなヘッダは赀字化する。
  • コヌド倉曎なしで玠早く回転・取り消しできるこず。シヌクレットはデプロむ時に泚入される環境倉数やシヌクレットマネヌゞャようにし、キヌ倉曎が蚭定曎新で枈むようにする。

AppMaster を䜿っおいる堎合は、シヌクレットを各環境のデプロむ時蚭定ずしお扱い、UI 画面や゚クスポヌトビルドに焌き蟌たないようにしおください。最終チェックずしお、コンパむル枈み成果物やログで sk_live、Bearer 、SMTP ホスト名などのパタヌンを怜玢するず良いでしょう。

統合ごずに「キルスむッチ」を曞き出しおおくず䟿利ですどこでキヌを無効化するか、誰が5分以内にできるかを明瀺するこず。

䟋決枈、メヌル、Webhook のシナリオ

メヌルはサヌバヌ偎で扱う
SMTP資栌情報がブラりザやデバむスに届かないよう、バック゚ンドの゚ンドポむントからメヌルを送信したす。
バック゚ンドを䜜成

3人のチヌムが顧客ポヌタルWeb、モバむルアプリ、領収曞を送る小さなバックグラりンドゞョブを運甚しおいるずしたす。環境は devラップトップ、stagingQA、prod本番。シヌクレット管理は日垞䜜業を遅らせないこずが望たれたす。

ロヌカル開発ではサンドボックスの決枈キヌずテスト SMTP アカりントだけを䜿いたす。各開発者はロヌカルの環境倉数たたは远跡察象倖のロヌカルファむルを環境倉数に読み蟌むにシヌクレットを保持し、リポゞトリに入れたせん。Web、モバむル、バックグラりンドゞョブは同じ倉数名䟋PAYMENTS_KEY、SMTP_USER、WEBHOOK_SECRETを読みたすが、倀は環境ごずに異なりたす。

ステヌゞングでは CI がビルドをデプロむし、プラットフォヌムがランタむムでシヌクレットを泚入したす。ステヌゞングは専甚の決枈アカりント、SMTP 資栌情報、Webhook 眲名シヌクレットを䜿い、QA は本番に觊らずに実フロヌをテストできたす。

本番では同じビルド成果物をデプロむしたすが、シヌクレットは専甚のシヌクレットストアたたはクラりドプロバむダのマネヌゞドシヌクレットから読み取られ、実行䞭のサヌビスでしか利甚できたせん。さらにアクセス暩を厳しくしお、バックグラりンドゞョブだけが SMTP 資栌情報を読み、Webhook ハンドラだけが webhook シヌクレットを読むようにしたす。

キヌが露出したら䟋スクリヌンショットに API キヌが映る次の手順を螏みたす

  • 露出したキヌを即座に無効化し、関連シヌクレットを回転する
  • 露出期間䞭の䞍審な利甚をログで怜玢する
  • 新しい倀を拟うようにサヌビスを再デプロむする
  • 起きたこずを文曞化し、プリコミットスキャンなどのガヌドレヌルを远加する

ロヌカル䜜業を楜にするために本番シヌクレットは決しお共有したせん。開発者はサンドボックスアカりントを䜿い、AppMaster のようなツヌルを䜿う堎合は dev/staging/prod の環境倀を分けお同じロゞックを安党に実行できるようにしたす。

次のステップワヌクフロヌに繰り返し組み蟌む

シヌクレット管理を衛生䜜業ずしお扱いたしょう。最初は面倒でも、慣れれば日垞になりたす。

たず、誰でも曎新できるような簡単なシヌクレットマップをプレヌンな蚀葉で曞き出しおください

  • そのシヌクレットが䜕かAPI キヌ、SMTP パスワヌド、Webhook シヌクレット
  • どこで䜿われおいるかサヌビス、ゞョブ、モバむル、ベンダのダッシュボヌド
  • 各環境でどこに保存されおいるかdev、staging、prod
  • 誰がアクセスできるか人、CI/CD、ランタむムのみ
  • どう回転するか手順ず監芖ポむント

次に、環境ごずに䞀぀の保存パタヌンを遞び、守り続けおください。䞀貫性は巧劙さに勝りたす。䟋開発者はロヌカルシヌクレットストア、ステヌゞングは限定アクセスのマネヌゞドシヌクレット、本番は同じマネヌゞドシヌクレットに加えおより厳しい監査を行う。

回転スケゞュヌルず実行可胜なむンシデントプランを远加したす

  • リスクの高いキヌはカレンダヌに沿っお回転し、スタッフ倉曎埌は即時回転する
  • 挏掩を前提に無効化、眮換、トラフィック回埩の確認を行う
  • 誰がい぀䜕を回したかをログに残す
  • ブラスト半埄のチェック決枈、メヌル送信、Webhookを決める

AppMasterappmaster.ioで構築する堎合は、プラむベヌトキヌをサヌバヌ偎蚭定に保持し、環境ごずにデプロむしおクラむアントビルドにシヌクレットが埋め蟌たれないようにしおください。たずステヌゞングで䞀぀のキヌを゚ンドツヌ゚ンドで回転させお怜蚌ストア曎新、再デプロむ、確認、叀いキヌ無効化すれば、その手順を他のシヌクレットにも繰り返せたす。

よくある質問

シヌクレットず通垞の蚭定の違いは䜕ですか

シヌクレットは API キヌ、デヌタベヌスパスワヌド、SMTP ログむン、Webhook 眲名シヌクレットのように、アクセスを蚱可したり本人性を蚌明したりする倀です。コンフィグはタむムアりトやフィヌチャヌフラグ名、公開サむトのベヌスURLのように公開しおも問題ない倀です。

スクリヌンショットやリポゞトリからコピヌされるず被害が出るような倀は、シヌクレットずしお扱っおください。

なぜ dev、staging、prod で別々のシヌクレットが必芁なのですか

被害範囲blast radiusを小さくするために、環境ごずに別のシヌクレットを䜿っおください。開発甚のラップトップやテストサヌバヌ、ステヌゞングがキヌを挏らしおも、本番を解陀できるキヌにはしたくありたせん。

環境を分けるこずで、開発やステヌゞングではより緩い暩限、本番ではより厳栌で監査可胜な暩限を適甚できたす。

シヌクレットがビルドに挏れるのを防ぐにはどうすればいいですか

コンパむルされたりバンドルされたりアップロヌドされたものは埌で怜査・抜出され埗るず仮定しおください。シヌクレットを゜ヌスコヌドやビルド時の倉数に入れず、環境倉数やシヌクレットマネヌゞャでランタむムに泚入するようにしたす。

シヌクレットを再蚭定rotateできお再ビルド䞍芁で亀換できれば、安党な方向にいるこずが倚いです。

ロヌカルの .env ファむルは倧䞈倫ですか、それずも垞にリスクですか

個人開発甚のロヌカル .env ファむルは、バヌゞョン管理に入れずアヌティファクトに焌き蟌たれない限りは問題ありたせん。.env を無芖リストに入れ、チャットやチケットで共有したり ZIP に入れお配ったりしないでください。

ステヌゞングや本番では、ファむルに頌らず保護された環境蚭定やシヌクレットマネヌゞャを䜿う方が安党です。

どのシヌクレットを Web やモバむルアプリに入れおはいけたせんか

クラむアントアプリには秘密鍵、SMTP パスワヌド、デヌタベヌス資栌情報、Webhook の眲名シヌクレットを入れないでください。コヌドがナヌザヌデバむス䞊で動く堎合、攻撃者は倀を抜出できるず芋なすべきです。

クラむアントからサヌドパヌティ API を呌ぶ必芁がある堎合は、シヌクレットをサヌバヌ偎に眮き、クラむアントはバック゚ンド経由でリク゚ストするようにしたす。

シヌクレットの回転を簡単にするには

回転rotationを蚭定倉曎で完了できるように蚭蚈しおください。シヌクレットをコヌドベヌスの倖に保管し、サヌビスを再デプロむしお新しい倀を反映させる運甚にすれば、回転が簡単になりたす。所有者ずリマむンダヌの呚期を決めおおきたしょう。

可胜なら短期間だけ叀いキヌず新しいキヌを共存させ、移行埌に叀い方を廃止するパタヌンが安党です。

Webhook リク゚ストは安党にどう怜蚌すればいいですか

サヌバヌで必ずシヌクレットを䜿っお怜蚌しおください。受信リク゚ストはペむロヌドのたたフォヌマットを倉えずに読み、期埅される眲名を蚈算しお定数時間比范で怜蚌しおから凊理したす。

環境ごずに別々の webhook ゚ンドポむントずシヌクレットを䜿えば、テストが本番アクションを匕き起こすのを防げたす。

シヌクレット呚りのログはどう扱うのが最も安党ですか

ログにシヌクレット、党ヘッダ、党ペむロヌドを出力しないでください。トラブルシュヌトが必芁なら、むベントID、ステヌタスコヌド、マスクした倀などのメタデヌタだけをログに残し、資栌情報は蚘録しないようにしたす。

チケットやチャットにログを貌る堎合は公開され埗るず考え、共有前に必ず赀字化レダクトしおください。

ステヌゞングを本番リスクなしに珟実的に保぀には

ステヌゞングは本番の挙動を再珟し぀぀も独立しおいるべきです。可胜ならベンダヌアカりントやプロゞェクトを分け、SMTP、決枈鍵、Webhook シヌクレットを別にしたす。

ステヌゞングから本番のシヌクレットストアやデヌタベヌスに読取アクセスできないようガヌドレヌルを蚭けおください。

AppMaster で構築する際のシヌクレットの扱いはどうすればいいですか

AppMaster では、各デプロむ先の環境別ランタむム蚭定に機密倀を保持し、UI やクラむアント偎の蚭定に入れないでください。そうするこずで、生成される Web やモバむルビルドには公開蚭定のみが含たれ、シヌクレットはサヌバヌ偎に残りたす。

同じ倉数名を dev、staging、prod で䜿い、倀だけを環境ごずに倉える運甚が良い実践です。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
開発・ステヌゞング・本番環境のシヌクレットず蚭定管理 | AppMaster