フロー実行に関するセキュリティの考慮事項
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
フローがGitLab CI/CDで実行される場合:
- アクセスを制限するために、フローは複合アイデンティティを使用します。
- これらは一時的なワークロードパイプラインを作成し、フローが完了すると削除されます。
- フローが使用できるツールは、フローの目的に応じて制限されます。これらのツールには、マージリクエストの作成、実行環境でのローカルShellコマンドの実行などが含まれます。
デフォルトでは、フローはGitLabインスタンスへのネットワークアクセスのみを持ちます。ネットワークアクセスルールに関する詳細は、ネットワークポリシーを設定する方法を参照してください。この分離された環境により、Shellコマンドの実行による意図しない結果から保護されます。
GitLab UIでフローが自律的に実行されるのを防ぐため、フローの実行をオフにすることができます。
agent-config.ymlのセキュリティに関する影響
.gitlab/duo/agent-config.ymlファイルは、setup_scriptで実行されるコマンドを含め、CI/CDでのフローの実行方法を制御します。フローの実行方法により、このファイルへの変更は、それらをコミットしたユーザーだけでなく、より多くのユーザーに影響を与えます。
クロスユーザー実行
フローは、複合アイデンティティを通じてそれらをトリガーするユーザーのIDで実行されます。setup_scriptのコマンドは、設定をコミットしたユーザーの認証情報ではなく、トリガーするユーザーの複合アイデンティティの認証情報で実行されます。
.gitlab/duo/agent-config.ymlへの書き込みアクセス権を持つユーザーは、別のユーザーのRunner環境で何が実行されるかに影響を与えることができます。このファイルへの変更は、後にプロジェクトでフローをトリガーするすべてのユーザーの実行コンテキストに影響を与えます。
公開される環境変数
Anthropic Sandbox Runtime(SRT)の外部で実行されるsetup_scriptの実行中、以下の機密性の高い変数が環境に存在します:
GITLAB_OAUTH_TOKENとGITLAB_TOKEN: 複合アイデンティティを介した、トリガーするユーザーのOAuthトークン。DUO_WORKFLOW_GIT_HTTP_PASSWORD: Git HTTPパスワード。DUO_WORKFLOW_SERVICE_TOKEN: サービストークン。DUO_WORKFLOW_GIT_USER_EMAILとDUO_WORKFLOW_GIT_USER_NAME: トリガーするユーザーのメールアドレスと名前。
公開される変数の完全なリストについては、フロー実行変数を参照してください。
推奨される保護
.gitlab/duo/agent-config.ymlファイルへの不正な変更のリスクを軽減するには、次のことを行います:
直接のプッシュを防ぐために、デフォルトブランチを保護します。
コードオーナーを使用して、
.gitlab/duo/agent-config.ymlへの変更がマージされる前に、特定のオーナーからの承認を要求します。たとえば、CODEOWNERSファイルに以下を追加します:.gitlab/duo/agent-config.yml @your-group/security-reviewersこのファイルを変更するマージリクエストには、信頼できるメンテナーからのレビューを要求する承認ルールを設定します。