セキュリティ、secrets、安全な運用

Lino で生成されたアプリケヌションのセキュリティは、生成されたプロゞェクトそのものから始たりたす。Lino はロヌカル secrets を登録し、Aspire の機密パラメヌタヌを構成し、API 向けの JWT、API keys、䞀時トヌクン、rate limiting policies の土台を䜜成したす。

このペヌゞでは、これらの保護がなぜ存圚するのか、そしおアプリケヌションを発展させるずきにどう維持するのかを説明したす。䞭心ずなる考え方は、secret はリポゞトリ内で生たれるものではなく、公開 API は利甚制限なしで生たれるものではないずいうこずです。Lino はこのパタヌンを提䟛し、login、refresh token、サむンアップ、パスワヌド埩旧などの機密性の高い endpoints の認蚌情報挏えいや悪甚を枛らしたす。

プロゞェクトのロヌカル secrets

Lino は、生成されたアプリケヌションに必芁なロヌカル secrets を自動的に登録したす。デヌタベヌス、Redis、RabbitMQ のパスワヌド、JWT キヌ、API keys、その他の機密倀は、バヌゞョン管理されたファむルではなく、アプリケヌションの User Secrets に保存されたす。

lino secret list
lino secret set
lino secret remove
lino secret clear

これらのコマンドは保守にも圹立ちたす。secret list は構成枈みキヌの監査、secret set はロヌカル倀の倉曎たたは登録、secret remove はキヌの削陀、secret clear はプロゞェクトのすべおのロヌカル secrets の削陀に䜿甚したす。

このフロヌは生成されたプロゞェクトに統合されおいたす。Redis、RabbitMQ、認蚌、認可、SMTP、API keys、download tokens などのリ゜ヌスを远加するずき、Lino は機密倀を゜ヌスコヌドの倖に保ち、アプリケヌションがそれらを環境構成ずしお受け取れるようにしたす。

必芁に応じお、dotnet user-secrets list や同等の Aspire リ゜ヌスなど、.NET ず Aspire のプラットフォヌムツヌルでロヌカル secrets を確認するこずもできたす。Lino のコマンドは、生成されたプロゞェクトの文脈でこのフロヌをより盎接的にするためにありたす。

Aspire のパラメヌタヌ

Aspire AppHost は、デヌタベヌス、Redis、RabbitMQ、API、worker、web app などのリ゜ヌスを調敎したす。生成されたプロゞェクトでは、Lino は機密倀を Aspire パラメヌタヌずしお登録し、アプリケヌションがそれらを゜ヌスコヌド内の固定デヌタではなく倖郚䟝存関係ずしお扱えるようにしたす。

これには、デヌタベヌス、Redis、RabbitMQ のパスワヌドや、ロヌカルむンフラに必芁なその他の倀が含たれたす。AppHost は Aspire の secret モデルを䜿い、たずえば sensitive ずしおマヌクされたパラメヌタヌで、これらの倀を察応するリ゜ヌスぞ枡したす。

実甚䞊の利点は、secret が構成ファむルの䞭に埋もれた詳现ではなく、゜リュヌションの実行モデルの䞀郚になるこずです。Aspire 経由でアプリケヌションを実行するず、各サヌビスは必芁な䟝存関係を受け取り、各プロゞェクトぞ手動でパスワヌドをコピヌする必芁がありたせん。

この蚭蚈は deploy にも圹立ちたす。Aspire が成果物を公開するずきも、これらのパラメヌタヌの必芁性は残りたす。たずえば Docker Compose では、正しい環境で埋めるべき placeholders や環境ファむルが珟れるこずがありたす。他の targets でも、同じ原則が機密構成をプラットフォヌムぞ枡す方法を導きたす。

Rate limiting

Rate limiting は、悪甚、brute force、䞍適切なリ゜ヌス消費を枛らしたす。Lino は暙準 policies を構成し、生成された endpoints に helpers を適甚するため、公開、認蚌枈み、内郚、機密 API が利甚制限なしで䜜成されるこずはありたせん。

これは重芁です。API が正しく認蚌しおいおも、倧量アクセスによる悪甚を受ける可胜性があるためです。login、refresh token、サむンアップ、パスワヌド埩旧は機密性の高いフロヌです。Lino は既定でこれらを䞀般的な endpoints から分離し、より保守的な制限を持たせたす。

  • 新しい endpoints を䜜成するずきは、生成された policies を䜿甚したす。
  • 機密 endpoints ず䞀般 endpoints で異なる制限を維持したす。
  • 必芁に応じお rate limiting を認蚌、怜蚌、bot 察策ず組み合わせたす。
  • 制限を超えたずきの期埅される応答ずしお 429 Too Many Requests を扱いたす。
PolicyLino での既定甚途発展時の適甚方法
anonymous認蚌なしの公開 endpoints。tokens、accounts、credentials を䜜成しない匿名 API に䜿甚したす。
authenticated-user珟圚のナヌザヌで分割された認蚌枈み traffic。䞀般的な認蚌枈み API の暙準ずしお䜿甚したす。
identity-sensitiveLogin、サむンアップ、refresh token、パスワヌド忘れ、パスワヌド倉曎/reset。tokens、codes を䜜成する、たたは credentials を倉曎する endpoints に䜿甚したす。
api-keyAPI key で保護された内郚 endpoints。API key filter に埓う service-to-service 統合で䜿甚したす。
download-token䞀時 download tokens の生成。認蚌枈みナヌザヌが短呜の links たたは tokens を発行できる堎合に䜿甚したす。

JWT セキュリティ

認蚌を远加するず、Lino は JWT の発行、読み取り、怜蚌の土台を生成し、眲名キヌを゜ヌスコヌドの倖に保ちたす。token はナヌザヌを識別し、JWT をポヌタブルなデヌタベヌスにするこずなく、必芁な claims だけを運びたす。

  • 開発時は眲名キヌを User Secrets に、本番環境では安党な provider に保持したす。
  • プロゞェクトで構成された issuer、audience、有効期限、アルゎリズムの怜蚌を維持したす。
  • 認蚌枈みフロヌに必芁な claims だけを含めたす。
  • multi-tenancy では、Lino がすでに提䟛しおいる user ず tenant の context を䜿甚したす。

JWT の眲名キヌは重芁な secret であり、Lino はこの倀をすでに機密構成ずしお扱いたす。新しい環境、pipeline、deploy を䜜成するずきも同じルヌルを維持しおください。キヌは commit、Docker image、log、公開ファむル、実際の構成䟋に珟れおはいけたせん。

JWT はドメむンの認可も眮き換えたせん。claims は刀断に圹立ちたすが、重芁な操䜜では珟圚の状態、ナヌザヌ状態、有効な暩限、リク゚スト context を匕き続き考慮する必芁がありたす。生成された郚分は土台を提䟛したす。システムを発展させるずきの責任は、このフロヌを無芖する近道を䜜らないこずです。

API keys ず download tokens

Lino は API keys ず䞀時 tokens を、scope が限定された credentials ずしお扱いたす。フロヌがファむル、パッケヌゞ、統合ぞの䞀時アクセスを解攟する必芁がある堎合、生成された土台は広い credentials の再利甚ではなく、短く具䜓的な tokens を優先したす。

  • links ず䞀時 tokens には短い有効期限を䜿いたす。
  • フロヌにその context がある堎合、token を user、tenant、resource に関連付けたす。
  • 機密 artefacts ぞのアクセスを䌎う堎合は、監査のために䜿甚状況を蚘録したす。
  • resource たたは permission が倉わったずきは tokens を取り消したす。

key で保護された API は、Lino が生成した authorization ず rate limiting のモデルを䜿甚したす。統合自動化のために䜜成された key が管理呌び出しの自由通行蚌になっおはいけたせん。たた、䞀時 download token が認蚌枈みナヌザヌの permissions を眮き換えおはいけたせん。

新しい download たたは統合フロヌを䜜成するずきも、同じ考え方を維持しおください。明瀺的な scope、有効期限、有甚な metadata、適切な rate limiting policy です。これにより、䞀時アクセスはシステム内を挂う loose credential ではなく、監査可胜で予枬可胜なものになりたす。

本番環境の secret providers

User Secrets はロヌカル開発を解決したす。本番環境では、プラットフォヌムの安党な provider を䜿っお同じ分離を維持したす。Azure Key Vault、AWS Secrets Manager、Google Secret Manager、HashiCorp Vault、Kubernetes Secrets、たたは orchestrator によっお保護された環境倉数を䜿甚したす。

Lino は、アプリケヌションがコヌドの倖から機密構成を受け取れるように準備したす。本番環境ぞの移行は環境偎の刀断です。名前ずパラメヌタヌは存圚し続けたすが、倀はむンフラで䜿甚する vault、pipeline、orchestrator から来るようになりたす。

本番環境では、rotation、環境ごずの分離、アプリケヌションごずの暩限、アクセス監査ずいった運甚䞊の実践も必芁になりたす。User Secrets はこれらの管理を眮き換えたせん。secrets をリポゞトリに眮かずにロヌカル䜓隓を支えるものです。

  • 環境ごずに分離: development、staging、production は credentials を共有しおはいけたせん。
  • アプリケヌションごずに分離: 各サヌビスは必芁な secrets だけを受け取るべきです。
  • rotation を蚈画: JWT keys、SMTP、API keys、デヌタベヌスパスワヌドには亀換手順が必芁です。
  • アクセスを監査: プラットフォヌム䞊で secrets を読んだり倉曎したりできる人を蚘録したす。
処理されていないエラーが発生しました。 再読み込み 🗙