플로우 실행 보안 고려 사항
GitLab v19.3Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
플로우가 GitLab CI/CD에서 실행될 때: 복합 ID를 사용하여 액세스를 제한합니다. 임시 워크로드 파이프라인을 생성하며, 이 파이프라인은 플로우가 완료되면 제거됩니다. 사용할 수 있는 도구는 해당 플로우의 목적에 맞게 한정됩니다.
플로우가 GitLab CI/CD에서 실행될 때:
-
복합 ID를 사용하여 액세스를 제한합니다.
-
임시 워크로드 파이프라인을 생성하며, 이 파이프라인은 플로우가 완료되면 제거됩니다.
-
사용할 수 있는 도구는 해당 플로우의 목적에 맞게 한정됩니다. 이러한 도구에는 머지 리퀘스트 생성이나 실행 환경에서의 로컬 셸 명령어 실행이 포함될 수 있습니다.
기본적으로 플로우는 GitLab 인스턴스에 대한 네트워크 액세스만 갖습니다. 네트워크 액세스 규칙에 대한 자세한 내용은 네트워크 정책 구성 방법을 참조하세요. 이렇게 분리된 환경은 셸 명령어 실행으로 인한 의도치 않은 결과로부터 보호합니다.
GitLab UI에서 플로우가 자율적으로 실행되지 않도록 하려면, 플로우 실행을 끌 수 있습니다.
agent-config.yml의 보안상 영향#
.gitlab/duo/agent-config.yml 파일은 setup_script에서 실행되는 명령어를 포함하여 플로우가
CI/CD에서 실행되는 방식을 제어합니다. 플로우가 실행되는 방식 때문에, 이 파일의 변경은 파일을
커밋한 사용자 이상의 범위에 영향을 미칩니다.
사용자 간 실행#
플로우는 복합 ID를 통해 플로우를 트리거한 사용자의 ID로 실행됩니다.
setup_script의 명령어는 구성을 커밋한 사용자의 자격 증명이 아니라, 트리거한 사용자의
복합 ID 자격 증명으로 실행됩니다.
.gitlab/duo/agent-config.yml에 대한 쓰기 액세스 권한이 있는 사용자는 다른 사용자의 러너
환경에서 무엇이 실행되는지에 영향을 줄 수 있습니다. 이 파일을 수정하면 이후 프로젝트에서
플로우를 트리거하는 모든 사용자의 실행 컨텍스트에 영향을 미칩니다.
노출되는 환경 변수#
Anthropic Sandbox Runtime(SRT) 외부에서 실행되는 setup_script 실행 중에는
다음과 같은 민감한 변수가 환경에 존재합니다:
-
GITLAB_OAUTH_TOKEN및GITLAB_TOKEN: 복합 ID를 통한 트리거 사용자의 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 -
이 파일을 수정하는 머지 리퀘스트에 대해 신뢰할 수 있는 메인테이너의 검토를 요구하도록 승인 규칙을 구성합니다.