왜 쿠버네티스에 있는 포드들이 서비스 계정 비밀을 자동으로 탑재하고 있나요?
왜 쿠버네티스에 있는 포드들이 서비스 계정 비밀을 자동으로 탑재하고 있나요?
포드가 서비스 계정 비밀을 자동으로 마운트하는 이유를 이해해야 합니다.
자동 아웃 오브 서비스 계정을 비활성화하면 포드 사양 부분에 이미 지정된 서비스 계정을 가지고 있지만 서비스 계정의 자동 마운트가 비활성화되지 않은 응용 프로그램의 모든 작업에 영향을 미칩니다.
서비스 계정의 자동 마운트를 비활성화하는 방법은 다음에서 설명합니다:
버전 1.6+에서는 서비스 계정에 설정하여 서비스 계정의 API 자격 증명 자동 마운트를 해제할 수 있습니다.
버전 1.6+에서는 특정 포드에 대한 API 자격 증명 자동 마운트를 해제할 수도 있습니다.
보안 문제를 완화하기 위한 몇 가지 솔루션도 제안됩니다:
자동 아웃 오브 서비스 계정을 비활성화하면 포드 사양 부분에 이미 서비스 계정이 지정되어 있는 응용 프로그램의 모든 작업에 영향을 미칩니다
SA 비밀의 자동 마운트를 해제하면 Pod는 K8s API 서버에 액세스하거나 서비스 계정으로 인증해야 하는 다른 작업을 수행할 수 없습니다. 작업량에 영향을 미칠지 여부는 당신만 알 수 있습니다. 다른 사용자 정의 서비스와만 대화하는 웹 서버나 작업자 포드는 SA 액세스 없이도 문제가 없을 수 있지만, 애플리케이션 포드에서 K8s 작업을 생성하려면 SA가 필요합니다.
하지만 보안 강화임에도 불구하고 서비스 계정의 비밀이 포드에 탑재되는 이유를 알고 싶습니다.
요점은, 컴퓨터 보안에서 흔히 볼 수 있듯이, 우리는 편리함과 보안을 저울질할 필요가 있다. SA 비밀을 Pod에 자동으로 탑재하면 K8s API를 쉽게 사용할 수 있습니다(=> 편리하게 사용할 수 있습니다). K8s API에 대한 액세스가 필요한 포드를 명시적으로 표시해야 하므로 기본적으로 이 기능을 비활성화하는 것이 더 안전하지만 편의성도 떨어집니다. 이 작업이 너무 부담스러운지 여부는 워크로드에 따라 크게 달라지며, 모든 사용자에게 적합한 기본 답변은 없을 수 있습니다.
더 안전한 기본값으로 변경되지 않은 이유는 무엇입니까?
이에 대한 답변은 다음과 같습니다:
기본적으로 사용하지 않도록 설정하는 것은 이전 버전과 호환되지 않으므로 v2 Pod API가 만들어지기 전까지는 현실적인 옵션이 아닙니다
및 :
나는 그것이 불합리하다는 것을 말하는 것이 아니라, 단지 쿠버네티스의 GA 배포판에 삼키기 힘든 알약이 될 것이라는 것이다. 나는 v2 pod API에서 이것이 일어나는 것을 볼 수 있었다.
팟에서 zure 서비스에 액세스하기 위해 사용하는 경우 서비스 계정 토큰이 필요할 것으로 생각됩니다, 서비스 계정 토큰이 필요합니다. 이는 k8s 서비스 계정 토큰이 포드의 Azure CLI 또는 SDK에 의해 Azure 서비스 토큰으로 교환되기 때문입니다.
닷넷과 같은 일부 런타임에 대한 Application Insights 라이브러리는 서비스 계정 토큰을 사용하여 k8s API를 통해 배포 환경에 대한 정보를 수집합니다. 자바용은 그렇지 않다.