본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

소프트웨어개발

GitHub Actions 로그도 시크릿 검사: 알림을 기다리면 놓치는 이유

by 아빠띠띠뽀 2026. 11. 12.

GitHub Actions 로그에 비밀값이 찍힐까 걱정된다면, 새 검사 기능의 대상과 경고를 확인할 사람부터 함께 정하세요. GitHub는 2026년 11월 9일 Actions 워크플로 로그의 secret scanning을 공개 미리보기로 발표했습니다. 실행이 끝난 뒤 정해진 공급자 패턴을 검사하는 기능이며, 미리보기 동안 이 로그 검사에서 나온 경고에는 별도 알림이 오지 않습니다. 설정만 켜고 평소 이메일을 기다리면 확인할 기회를 놓칠 수 있어요.

11월 11일 오전 공지와 GitHub Enterprise Cloud 공식 문서를 다시 읽었습니다. 아래 설명은 GitHub Secret Protection 또는 GitHub Advanced Security를 사용하는 대상 엔터프라이즈의 검토를 돕기 위한 것입니다. 일반 저장소의 시크릿 검사와 이번 로그 검사 미리보기의 제공 조건을 섞지 않겠습니다. 실제 기업 계정에서 정책을 켜거나 실서비스 비밀값으로 검출 시험을 한 글도 아닙니다.

코드 밖의 실행 기록도 검사 대상이 됩니다

워크플로 로그는 자동 빌드나 테스트가 실행되는 동안 도구가 남긴 기록입니다. 코드에 비밀값을 적지 않았더라도 실행 중 어떤 값이 출력되는지는 별도로 살펴볼 문제예요. 이번 발표는 기존 코드와 다른 콘텐츠에 대한 시크릿 검사에서 Actions 실행 로그로 범위를 넓힌 변화입니다. 검사 범위가 생겼다는 사실을 모든 출력 실수를 사전에 막는 기능으로 이해하면 실제 동작 시점을 놓칩니다.

공지는 워크플로 실행이 완료된 다음 로그를 검사한다고 설명합니다. 발견한 항목은 저장소의 시크릿 검사 경고 목록에서 다른 출처의 경고와 함께 보이며 해당 로그로 연결됩니다. 지원하는 비밀값 유형에는 유효성 확인도 수행합니다. 유효성 정보가 있다는 것과 그 비밀값으로 어떤 작업이 일어났는지까지 조사됐다는 것은 다릅니다. 후속 대응에서 알아야 할 질문을 나눠 두면 좋아요.

이 기능은 이미 노출된 기록을 찾아보는 데 도움을 주는 범위입니다. 실행이 끝난 뒤의 발견이므로 출력 전에 차단됐다고 적을 수는 없습니다. 가상의 배포 작업에서 외부 도구가 연결 정보를 찍었다고 해 볼게요. 운영자는 검사 기능의 상태뿐 아니라 어떤 실행이었는지, 어떤 시스템의 자격 증명이었는지, 해당 시스템 담당자가 누구인지 연결해야 합니다. 발견과 대응 사이의 인계를 생각해 볼 사례입니다.

내 환경에서 먼저 확인할 제공 조건

공개 미리보기의 대상은 GitHub Enterprise Cloud에서 GitHub Secret Protection 또는 GitHub Advanced Security를 사용하는 엔터프라이즈이며 GHE.com 데이터 레지던시 환경도 포함됩니다. 기본 정책은 꺼져 있고, 대상 라이선스 아래에서 secret scanning이 켜진 저장소에 적용됩니다. 공개 저장소에서 기본 시크릿 검사가 동작한다는 일반 안내만 보고 이번 기능도 자동 제공된다고 결론 내리지 마세요.

활성화 권한도 분리해서 읽어야 합니다. 공지는 엔터프라이즈 소유자가 기업 설정의 Policies, Advanced Security에서 Actions 워크플로 로그 검사 정책을 설정한다고 안내합니다. 실제 변경이 필요하다면 현재 엔터프라이즈, 대상 조직과 저장소, 적용 라이선스를 확인하고 권한이 있는 담당자에게 요청하세요. 메뉴가 보이지 않을 때 조직 관리자가 아니라는 이유 하나로 단정하지 말고 제공 조건과 정책 범위를 같이 확인하는 편이 좋습니다.

전체 저장소 범위의 정책을 바꾸기 전에는 현재 값과 요청한 변경 범위를 보존합니다. 이 글은 실제 계정에 적용하는 일괄 설정 명령을 제공하지 않습니다. 기존 정책과 다르게 동작한다면 변경 담당자가 원래 값으로 되돌릴 절차를 정해 두세요. 되돌림은 노출된 비밀값을 무효화하는 조치가 아니므로, 설정 복구와 자격 증명 대응을 별개 작업으로 추적해야 합니다.

검토할 항목 확인해서 남길 답
제품과 계약 범위 Enterprise Cloud와 대상 보안 제품 여부
저장소의 기본 상태 secret scanning 활성화 여부
정책 변경 책임 권한자, 현재 값, 승인된 적용 범위
경고 확인 책임 목록을 직접 확인할 사람과 인계 경로

과거 로그까지 다시 훑는 기능은 아니에요

공지는 기능을 켠 후 완료되는 워크플로 실행만 검사하며 과거 로그를 소급 검사하지 않는다고 명시합니다. 오래전에 남긴 로그가 걱정된다면 새 정책을 켠 사실만으로 이전 실행까지 점검됐다고 표시하면 안 됩니다. 운영 기록에는 정책을 켠 시각과 확인한 실행을 연결해 보세요. 과거 출력에 대한 별도 검토가 필요하다면 그 작업은 범위와 권한을 정해 따로 남길 수 있습니다.

또한 현재 로그 검사에서는 공급자 패턴만 탐지합니다. 일반 패턴, 사용자 정의 패턴, AI가 찾는 비밀값과 Actions가 이미 가린 값은 탐지 대상에 들어가지 않습니다. 공식 시크릿 검사 문서에 다양한 검사 방식이 소개돼 있어도 그 전체가 이 미리보기에서 동작하는 것은 아니에요. 새 기능에 관한 설명을 읽을 때는 공지와 문서의 Actions 로그 전용 항목을 기준으로 범위를 확인해야 합니다.

예를 들어 팀이 자체 형식으로 만든 인증 문자열을 사용한다고 가정해 봅시다. 이번 목록에 경고가 없었다는 관찰은 그 문자열이 로그에 없었다는 증명이 되지 않습니다. 먼저 현재 지원 범위에 속하는지부터 물어야 해요. 탐지하지 않는 유형인지, 실행이 정책 적용 이후에 완료됐는지, 해당 저장소가 실제 대상인지가 서로 다른 확인 항목입니다. 확인할 수 없는 부분은 검사 완료와 분리해 적습니다.

알림을 기다리지 않는 확인 순서를 정해 보세요

이번 미리보기에서는 워크플로 로그 출처의 경고가 알림을 생성하지 않습니다. 따라서 검토 담당자가 저장소 경고 목록을 직접 확인하는 절차가 필요합니다. 이것은 새 이메일 규칙이나 웹훅을 추가하라는 뜻이 아닙니다. 현재 제공되는 관찰 경로에서 발견한 내용을 누가 후속 담당자에게 넘길 것인지 정하자는 이야기예요. 새로운 자동화를 만들면 이미 경고가 전달된다고 가정하지 말고 실제 제공 범위부터 확인하세요.

가상의 업무 분담을 만들어 볼게요. 배포 담당자는 실행 완료 여부와 검사 대상 조건을 확인합니다. 보안 담당자는 경고 목록을 보고 노출된 자격 증명의 소유 시스템을 찾습니다. 그 시스템 담당자는 해당 값의 상태와 필요한 교체 절차를 검토합니다. 한 사람이 여러 역할을 맡더라도 각 단계의 증거를 연결해 두면 좋습니다. 다음 사람이 로그를 처음부터 다시 추측하는 수고를 줄일 수 있어요.

확인 기록에는 비밀값 원문 대신 저장소와 실행의 식별 정보, 경고 위치, 필요한 담당과 조치 상태를 사용하세요. 비밀값을 그대로 다른 이슈나 채팅에 붙여 넣어 인계하면 전달 범위가 더 넓어질 수 있습니다. 실제 값이 필요한 처리는 해당 시스템의 허용된 보안 절차 안에서 진행합니다. 여기서 제시한 기록 방식은 운영 제안이며, 특정 기업의 보안 요구사항을 모두 충족한다는 보장은 아닙니다.

로그 삭제와 자격 증명 대응은 나눠야 합니다

공지는 원래 로그가 삭제된 뒤에도 관련 경고가 남는다고 설명합니다. 공식 문서는 같은 비밀값이 여러 실행이나 작업에서 발견되면 하나의 경고가 여러 위치를 가리킬 수 있으며, 경고에서 워크플로 파일과 로그 줄로 연결하지만 로그 내용의 인라인 미리보기는 제공하지 않는다고 안내합니다. 경고 한 건이라는 숫자를 실행 한 번의 노출로 단순히 바꾸지 마세요.

노출된 자격 증명에 관해서 GitHub 문서는 영향을 받은 자격 증명을 교체하도록 안내합니다. 실제 작업에서는 연결된 서비스와 사용처를 확인하고 해당 서비스의 절차에 따라 대응해야 합니다. 로그를 지웠다는 사실이나 경고를 확인했다는 사실은 이미 발급된 값이 무효화됐다는 증거가 아닙니다. 새 값이 필요한 서비스에 반영됐는지도 별도로 확인할 항목이에요.

시크릿을 보관하는 방식 자체가 고민이라면 AWS Secrets Manager와 Vault의 선택 기준도 함께 읽어 볼 수 있습니다. 보관 도구를 고르는 일과 실행 중 출력되는 값을 관리하는 일은 연결돼 있지만 범위가 같지 않습니다. 저장 위치를 바꿨다는 이유만으로 기존 로그 노출 가능성이 사라졌다고 해석하지 마세요. 이번 기능은 그 연결 고리 중 로그 관찰에 해당합니다.

관찰한 내용 곧바로 결론 내릴 수 없는 내용
정책을 활성화함 과거 실행 로그까지 검사됨
경고가 없음 모든 형식의 비밀값이 출력되지 않음
유효성 정보가 있음 노출 영향 조사까지 완료됨
로그를 삭제함 자격 증명이 무효화되거나 대응이 완료됨

작은 시험 범위를 정할 때의 기준

새 기능을 도입하는 팀이라면 먼저 제공 조건, 정책 시각, 실행 완료 시각과 경고를 읽을 경로를 한 문서에 연결해 보세요. 검출 시험이 필요하더라도 실제 운영 비밀값을 출력하는 방식을 기본값으로 삼지 말고, 승인된 시험 자료와 공급자의 안내를 따릅니다. 이 글에서는 검출용 문자열이나 실제 자격 증명을 제시하지 않으며, 검사 결과도 만들어 쓰지 않았습니다.

확인 목표도 문장으로 정하면 좋습니다. 대상 조건을 확인했는지, 경고 목록을 열 수 있는지, 발견했을 때 누구에게 넘길지처럼 실제로 답할 수 있는 질문이 유용합니다. 경고가 생기지 않은 결과를 제품의 안전 성적으로 쓰는 대신 그때 무엇을 확인했고 무엇이 남았는지 남기세요. 도입 담당자가 달라져도 같은 범위에서 검토를 이어갈 수 있습니다.

자주 나오는 질문

이제 모든 GitHub Actions 로그가 자동으로 검사되나요? 아닙니다. 이번 미리보기의 제품 조건과 기업 정책, 저장소의 secret scanning 상태를 확인해야 합니다. 기본값도 꺼져 있습니다.

기존 알림 수신자가 있으니 그대로 기다려도 될까요? 이 로그 검사 미리보기에서 생성된 경고는 알림을 보내지 않습니다. 저장소 경고 목록을 직접 확인할 담당과 절차를 정해 주세요.

기능을 켜기 전 실행도 새로 검사되나요? 과거 로그의 소급 검사는 제공하지 않는다고 공지돼 있습니다. 확인 시각을 기준으로 이전 기록과 새 실행의 점검 범위를 나누세요.

확인한 공식 자료

2026년 11월 11일 Actions 로그 검사 공개 미리보기 공지, Secret scanning 개념과 로그 검사 범위, 엔터프라이즈 보안 정책 문서를 대조했습니다. 미리보기의 조건은 이후 바뀔 수 있으므로 적용할 때 현재 문서도 함께 확인해 주세요.

Actions 로그 검사의 대상 조건, 켠 뒤 완료된 실행, 경고 목록, 자격 증명 대응을 나누는 자체 개념도
정책과 검사 범위를 확인한 뒤 경고 목록의 발견을 실제 대응 담당에게 연결합니다.