自動化と個人管理を分離する
レポートAPIパイプラインは、承認済み成果物を選択し、制御されたリリースアクションを呼び出す必要があります。それによって自動的にユーザー作成、請求変更、すべてのアプリケーションシークレットの読み取りが必要になるわけではありません。権限インベントリと保護されたテスト環境から始め、資格情報をドキュメント、リポジトリ、サンプルログから遠ざけます。
人間によるリカバリアクセスは分離したままにし、デプロイ資格情報を失効させても唯一の調査経路が失われないようにします。承認されたメンテナーと独立したホスト検証を特定します。2つ目の無制限キーはより狭いロールではなく、別の資格情報です。
許可される操作を正確に記述する
| 機能 | 必要か | 境界 |
|---|---|---|
| 承認済み成果物を読む | はい | 特定のリポジトリ/バージョン |
| リリースアクションを呼び出す | はい | 固定されたアプリと環境 |
| すべてのランタイムシークレットを読む | 避ける | 制御されたランタイムID |
| ユーザーまたは SSH ポリシーを変更する | いいえ | 管理を分離 |
| ワークフロー設定を変更する | ランタイムIDには不可 | 保護されたリポジトリレビュー |
| バックアップを削除する | いいえ | リカバリ権限を分離 |
リリースアクションの入力を検証します。任意のテキストを特権シェルに連結する制限付きコマンドは、依然として意図しない作業を許可します。ラッパーの動作、書き込み可能パス、成果物の信頼をまとめてレビューします。広範なsudo権限やDockerソケットへのアクセスは、意図した境界を無効にできます。
ワークフロー編集を資格情報アクセスとして扱う
信頼されたワークフローステップを変更できる人物は、その資格情報を使用または露出させる可能性があります。リポジトリ権限、保護されたデプロイ環境、特権ジョブを実行するイベントをレビューします。本番資格情報を信頼されていないプルリクエストコードから遠ざけます。ワークフロートークンにはそのジョブが必要とする権限だけを与えます。
GitHubは不変のアクション選択のために完全長コミットSHAピン留めを推奨しています。選択したアクションと後の更新をレビューしてください。バージョンタグは移動する可能性があります。信頼されていないイベントデータをインラインシェルコードに直接挿入しないでください。既知のシークレット値のマスキングは、変換、ログ、成果物を通じた開示に対する保証ではありません。
技術リファレンス: GitHub Actionsの安全な使用.
宛先が対応する場合は短い有効期間を使用する
OpenID Connectは、対応する宛先がワークフローIDを短期資格情報と交換できるようにします。意図したリポジトリ、ブランチまたは環境、およびオーディエンスに対する信頼チェックを設定します。これは普遍的な SSH の代替ではなく、現在の PrivacyNodes フロントエンドが提供する機能でもありません。
デプロイが SSH を使用している場合、インストールされているパッケージのauthorized-keyオプションをレビューしてください。強制コマンドだけではフォワーディングを禁止できません。制限は意図したアクセス経路をカバーし、依然として安全なリリース操作を呼び出す必要があります。別の環境でテストしてください。認証を変更する際は、動作する管理とリカバリアクセスを維持し、古い方式を削除する前に新しい独立した接続を検証します。
技術リファレンス: GitHub Actions OpenID Connect · OpenSSH authorized_keys形式.
許可される作業と禁止される作業をテストする
IDが意図した成果物を選択し、リリースを呼び出し、有用な結果を得られることを検証します。次にその限界をテストします。別のアプリケーションのシークレット、無関係なファイル変更、任意の管理は利用できないはずです。ラッパーが拒否すべき成果物パスと引数を含めます。
ID、スコープ、該当する場合は有効期限、承認したメンテナー、監査証拠の場所を記録します。資格情報の値ではなくストレージ参照を保持します。広範な管理を付与した後にのみテストが機能する場合は、それを暗黙に恒久的なロールにするのではなく、リリースタスクを再検討してください。
失効とパイプライン障害リリースをリハーサルする
レビュー済みスコープで代替を準備し、テストデプロイを検証し、パイプラインを切り替え、古いIDを失効させます。置き換えられた資格情報が失敗し、別のワークフローに重複が残っていないことを確認します。新しいキーを追加するだけでは以前のアクセスは削除されません。
承認されたメンテナーがデプロイを停止し、CIが利用できないときにリカバリする方法を文書化します。その手順を次にリンクします リリース記録 と リカバリインベントリ。狭い資格情報は意図した権限を制限しますが、悪意のある成果物を無害にはしません。
公式リファレンス
この記事のドキュメントをレビューしました。例は計画用の演習であり、PrivacyNodes サーバーでテストされたコマンドではありません。インストールされているバージョンのドキュメントを確認してください。