두 URL은 피어의 브라우저에서는 같아 보여도 방화벽에는 전혀 다른 의미일 수 있습니다. 하나는 호스트 자체에서 수신 대기하는 서비스를 가리킵니다. 다른 하나는 포트가 컨테이너 네트워크로 게시된 호스트 주소를 가리키며, 그곳에서 변환 단계가 연결을 다른 IP로 넘깁니다. 피어별 권한으로 로컬 네트워크 접근을 제어하는 피어 투 피어 메시에서는 그 차이가 검토의 전부입니다.

권한은 호스트 엔드포인트에 관한 것이고, 변환은 Docker에 관한 것이며, 로그인은 애플리케이션에 관한 것입니다. 세 가지 결정, 살펴볼 세 곳.

게시 후 목적지를 따라가세요

컨테이너의 포트 80을 호스트 포트 8080에 게시하는 Linux Docker 호스트를 생각해 봅시다. 피어가 8080에서 호스트의 메시 주소에 연결하고, 호스트가 연결을 수락하며, 목적지 변환이 이를 컨테이너의 브리지 주소, 보통 172.17.0.2 같은 주소의 포트 80으로 다시 씁니다.

규칙이 그 흐름을 검사할 때쯤이면 흥미로운 목적지는 호스트가 아니라 컨테이너입니다. «이 머신의 서비스»만을 논하는 정책은 잘못된 객체를 논하는 것입니다. 요청은 호스트에 도착했지만 다른 곳으로 전달되고 있습니다.

그래서 메시 문서는 Linux에서 로컬 네트워크 권한이 통제하는 리소스에 Docker 컨테이너를 포함합니다. 권한은 일반 VPN 허용 목록 항목의 동의어가 아니며, 두 제어는 서로를 대신하지 않습니다. 하나는 피어가 로컬 리소스에 아예 도달할 수 있는지 결정하고, 다른 하나는 터널 경로가 어떤 목적지를 나르는지 결정합니다.

권한이 얼마나 많은 로컬 접근을 부여하는지 결정하세요

피어에 로컬 네트워크 접근을 부여하는 것은 단일 컨테이너에 대한 결정이 아닙니다. 같은 호스트의 다른 게시된 서비스를 노출할 수 있고, 호스트가 어떻게 전달하는지에 따라 더 멀리 도달할 수 있습니다. 하나의 대시보드를 위해 스위치를 누르기 전에 실제 범위를 검토하세요.

그다음 Docker가 포트를 어디에 게시하는지 보세요. 0.0.0.0에 게시하면 모든 호스트 주소에 리스너가 생기며, 메시 항목 옆에 일반 LAN 항목이 추가될 수 있습니다. 요구 사항이 메시뿐이라면 게시를 의도한 특정 주소나 인터페이스에 바인딩하고, 더 넓은 바인딩은 편의가 아니라 별도의 발견으로 취급하세요.

호스트 전달 정책과 애플리케이션 자체의 인증을 서비스에 맞게 충분히 좁게 유지하세요. 사적으로 보이는 URL은 접근 제어가 아니며, 브리지 네트워크의 모든 출처를 신뢰하는 컨테이너는 메시 피어가 승인되었다는 사실로 보호되지 않습니다. 애플리케이션 인증이 세 번째 결정이며, 사용자가 누구인지 아는 유일한 결정입니다. 호스트 수준 권한은 그 지식을 제공할 수 없습니다.

권한을 테스트하세요, URL만이 아니라

승인된 피어에서 정확한 서비스를 열고 작동하는지 확인하세요. 그다음 거부된 채로 남아야 할 목적지를 시도하고 작동하지 않는지 확인하세요. 행복한 경로만 테스트하면 권한이 부여되었다는 것은 알 수 있지만, 경계가 생각하는 곳에 있는지는 알 수 없습니다.

호스트 고유 서비스를 따로 비교하세요. 데이터베이스가 호스트에서 수신 대기하고 대시보드가 컨테이너에서 실행된다면, 둘은 같은 권한을 통과하는 다른 경로를 따르며 호스트 전달 정책이 둘을 동일하게 통제하지 않을 수 있습니다. 검토 메모를 쓰기 전에 어느 쪽이 어느 쪽인지 기록하세요.

접근을 «재설정»하려고 Docker 테이블이나 메시 클라이언트의 규칙을 비우지 마세요. 두 제품 모두 자체 정책 통합을 설치하며, 이를 지우면 평가하도록 요청받은 제어를 우회하면서 작동하는 것처럼 보이는 호스트가 됩니다. 규칙이 잘못되어 보이면 읽고 그 규칙만 바꾸세요. 규칙이 무엇을 하는지 설명할 수 없다면 그것이 발견이며, 삭제할 이유가 아닙니다.

발견을 시스템 자체의 용어로 쓰세요

중요한 것은 검토 템플릿의 구분이 아니라 제품이 실제로 강제하는 구분, 즉 호스트 엔드포인트에 도달할 권한, 라우팅된 사설 리소스에 도달할 권한, 애플리케이션을 사용할 권한입니다. 포트를 게시해도 이 세 결정은 있던 자리에 그대로 남으며, 이를 하나로 취급하는 검토자는 잘못된 범위를 승인합니다.

호스트 주소, 게시된 포트, 컨테이너 목적지, 피어 권한을 같은 문장에 적으세요. 그 문장은 다른 사람이 검증할 수 있으며, 그래서 의견이 아니라 발견이 됩니다.

관련 글