Home Assistant 비밀 정보가 Compose 파일이나 백업에 유출되지 않도록 방지하는 방법

에바 왕기술 작가 그리고 이자 ZimaSpace의 상주 장인입니다. 평생을 기술에 열정을 가진 사람으로서 홈랩과 오픈소스 소프트웨어에 열정을 가지고 있으며,복잡한 기술 개념을 쉽게 이해할 수 있는 실습 가이드로 번역하는 데 전문성을 가지고 있습니다.에바는 셀프 호스팅이 어렵지 않고 재미있어야 한다고 믿습니다. 그녀의 튜토리얼을 통해 커뮤니티가 하드웨어 설정의 신비를 풀도록돕고 있습니다. 첫 NAS 구축부터 Docker 컨테이너 마스터링까지.

공유 가능한 Compose 정의에서 값을 제외하고 모든 백업 또는 진단 내보내기가 콘텐츠 검사를 통과할 때까지 민감한 것으로 취급하여 비밀 정보 유출을 방지하세요.

Home Assistant는 런타임에 자격 증명이 필요하므로, 호스트에 대한 전체 액세스 권한을 가진 관리자로부터 자격 증명을 보이지 않게 만드는 로컬 레이아웃은 없습니다. 실질적인 목표는 더 제한적입니다. 실수로 인한 커밋, 지원 업로드, 광범위한 백업 복사본 및 불필요한 컨테이너 액세스를 막는 것입니다. 각 값이 스택에 유입되는 위치를 파악하고, 리터럴 값을 통제된 비밀 정보 소스로 대체한 다음, 비밀 정보 자체를 출력하지 않고 내보낸 아티팩트를 테스트하세요.

비밀 정보가 유출될 수 있는 모든 위치 파악

API 토큰, 데이터베이스 비밀번호, MQTT 자격 증명, 웹훅 URL, 암호화 키, 개인 인증서 및 복구 키를 나열하세요. 각 항목에 대해 런타임 소비자, 저장 경로, 파일 소유자, 백업 포함 여부, 리포지터리 상태, 로그 노출 여부 및 교체 방법을 기록하세요. 인벤토리에 값을 복사하지 마세요.

비밀 정보 파일은 값을 체계적으로 관리하지만 호스트를 읽을 수 있는 계정에는 여전히 평문으로 보입니다. 이 평문 액세스 경계는 완전한 권한을 가진 공격자를 막기보다는 주로 실수로 인한 공개를 줄입니다.

Compose YAML에 리터럴 값이 있거나, 환경 파일이 추적되고 있거나, 구성 디렉터리를 광범위하게 읽을 수 있거나, 내용이 확인되지 않은 내보내기가 존재한다면 실패로 간주합니다. 모든 노출 경로에 담당자와 수정 조치가 지정될 때까지 공유 및 리포지터리 푸시를 중지하세요.

런타임 비밀 정보와 배포 정의 분리

Compose의 리터럴 값을 배포에서 지원하는 최소 권한의 파일 기반 비밀 정보 또는 다른 비밀 정보 소스로 대체하세요. 각 서비스에는 해당 서비스가 사용하는 값만 제공하고, 가능한 경우 읽기 전용으로 마운트하며, 호스트 권한은 런타임 ID와 관리자에게만 제한하세요.

환경 값은 검사, 프로세스 컨텍스트 또는 로그를 통해 노출될 수 있지만, 파일 기반 비밀 정보 마운트는 자격 증명을 받는 컨테이너의 범위를 줄일 수 있습니다. 로컬 비밀 정보 파일에도 여전히 권한 제어가 필요합니다.

먼저 플레이스홀더로 검증하고, 렌더링된 Compose 구성에서 실수로 포함된 리터럴을 검사한 다음, 서비스 하나만 시작하여 할당된 비밀 정보만 읽을 수 있는지 확인하세요. 변경으로 인해 애플리케이션이 값을 출력하거나 허용 범위가 넓은 디렉터리 액세스가 필요해지면 롤백하세요.

백업 및 지원 번들에 포함되는 내용 제어

범위가 그렇지 않다는 점이 입증되지 않는 한 백업에는 자격 증명이 포함된 것으로 분류하세요. 신뢰할 수 있는 저장소 경계를 벗어나는 복사본은 암호화하고, 복구 키는 별도로 보관하며, 보존 기간과 액세스를 제한하세요. 지원 문의에 답하는 데 삭제된 로그 일부만으로 충분하다면 전체 구성 아카이브를 첨부하지 마세요.

구성 보호 워크플로를 사용하여 복구 가능성을 유지하면서 보안 저장소와 공유 가능한 배포 자료를 분리하세요.

배포 전에 파일 이름과 추출된 텍스트에서 알려진 키 이름, 토큰 접두사, 개인 URL, 이메일 주소, 인증서 및 통제된 테스트 마커의 정확한 해시를 검사하세요. 검사 결과가 깨끗하다는 것은 배포를 허용하는 기준일 뿐, 알려지지 않은 비밀 정보 형식이 존재할 수 없다는 증거는 아닙니다.

노출된 정보 교체 및 예방 경로 입증

사용 가능한 값이 리포지터리, 티켓, 채팅, 공개 링크 또는 신뢰할 수 없는 백업에 들어갔다면 먼저 해당 값을 폐기하거나 교체하세요. 눈에 보이는 복사본을 삭제해도 다른 복사본이나 기록이 무효화되지는 않습니다. 기존 값을 보존하지 말고 영향을 받은 서비스와 교체 시간을 기록하세요.

무해한 카나리 비밀 정보를 만들고, 새 경로를 통해 배포한 다음, 일반적인 Compose 렌더링, 백업 및 진단 번들을 생성하여 해당 아티팩트를 검색하세요. 런타임은 카나리 값을 받아야 하지만, 공유 가능한 아티팩트에는 의도적으로 보호된 백업 경계 밖에서 해당 값이 노출되지 않아야 합니다.

배포 정의와 리포지터리에서 실제 비밀 정보가 제거되고, 보호된 백업에 별도의 복구 경로가 있으며, 아티팩트 검사를 통과하고, 노출된 자격 증명이 교체되면 완료하세요. 타사 통합이 비밀 정보 값을 로그에 기록하거나 더 광범위한 호스트 액세스 없이 최소 범위의 비밀 정보 소스를 사용할 수 없다면 에스컬레이션하세요.

지원 및 팁

더 읽어보기

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.