프로필은 동시에 두 가지 역할을 합니다. 연결 설정을 기록하고, 실제로 동작하는 자격 증명 묶음을 함께 나릅니다. 파일 확장자는 둘 중 무엇을 들고 있는지 알려주지 않습니다. 저장소에 속한다고 판단하기 전에 내용을 읽으세요.

아래 단계는 클라이언트 템플릿을 버전 관리 대상으로 검토하는 상황을 가정합니다. 순서대로 실행하고, 되돌릴 수 없는 것을 커밋하기 전에 멈추세요.

스테이징하려는 파일을 읽으세요

실제 바이트에서 시작하세요. 별도 파일을 참조하는 프로필은 그것을 포함하는 프로필과 전혀 다르게 보입니다. PEM 블록 표식과 ca, cert, key, tls-auth, tls-crypt라는 이름의 인라인 태그를 찾으면 같은 검색에서 두 경우가 모두 드러납니다. 암호화된 개인 키도 여전히 민감한 자료이며, 공유된 tls-auth 또는 tls-crypt 키는 사용자의 신원이 아니더라도 자격 증명입니다. 자격 증명 파일을 참조하는 압축 파일과 설정 스크립트를 포함해 프로필과 함께 스테이징되는 모든 것에 같은 검토를 적용하세요.

그다음에는 작업 트리가 아니라 스테이징된 집합을 보세요. git diff --cached 는 커밋이 실제로 무엇을 담을지 보여 주며, 이 결정에서 중요한 유일한 버전입니다.

저장소가 배포해도 되는 것을 결정하세요

템플릿은 공유되고 검토된 설정과, 사람이 등록할 때 받는 모든 것에 대한 이름 있는 자리 표시자를 담을 수 있습니다. 담을 수 없는 것은 사용 가능한 신원입니다. 저장소는 그것을 읽을 수 있는 모든 이에게 배포되고 자동화도 여기에 포함되기 때문입니다. 비공개 저장소는 대상을 좁힐 뿐, 각 독자가 그 자격 증명에 대해 권한이 있는지라는 질문을 바꾸지 않습니다.

무시 규칙은 앞으로의 추가를 막지만 이미 기록된 것에는 아무것도 하지 않습니다. 이 비대칭은 열 번째 커밋 뒤가 아니라 첫 번째 커밋 전에 새겨 둘 가치가 있습니다. 인프라의 이름과 주소는 별개의 판단입니다. 인증 비밀은 아니지만 팀이 공개하려는 것보다 더 많은 것을 드러낼 수 있습니다. 모든 줄을 비밀번호냐 공개냐로 나누는 대신 그 판단을 명시적으로 내리세요.

자료가 이미 기록에 있다면

새 커밋에서 그 줄을 지워도 가져간 사람에게는 옛 버전이 그대로 남습니다. 노출을 실제로 다루세요. 자격 증명의 종류를 확인하고, 그것을 무효화할 수 있는 주체를 찾으세요. 클라이언트 인증서는 폐기되고 폐기 목록은 다시 생성됩니다, 공유 제어 채널 키는 서버와 그것을 사용하는 모든 클라이언트에서 교체됩니다.

둘의 영향 범위는 크게 다르며, 계획은 시작하기 전에 어느 쪽을 실행하는지 밝혀야 합니다. git log --all -S 'BEGIN PRIVATE KEY' 같은 검색으로 자료를 들여온 커밋을 찾아 정리 범위를 추측이 아니라 알려진 것으로 만드세요. 동료의 클론이나 포크가 이미 옛 객체를 갖고 있을 수 있으므로 폐기가 먼저이고 정리가 다음입니다.

격리한 뒤에만 정리하세요

기록을 다시 쓰면 편집한 커밋 이후의 모든 커밋이 바뀌므로, 먼저 저장소 소유자와 그 안에서 일하는 사람들의 합의가 필요합니다. 강제 푸시는 복구가 아닙니다. 자체적인 되돌림 위험이 있는 조정 사건입니다. 일정을 잡고, 백업을 만들고, 언제 일어날지 팀에 알리세요.

그 뒤에는 도구의 요약을 믿는 대신 현재 트리와 남은 기록을 검증하세요.

결과는 두 가지 산출물로 남기세요. 공유해도 안전한 템플릿과, 등록 과정에서 발급된 자격 증명의 목록입니다. 어느 것도 사용 가능한 신원이 저장소에 살 것을 요구하지 않습니다.

그 분리가 진짜 해결책이며, 다음에 프로필을 커밋하려는 사람 이후에도 살아남습니다.

관련 글