강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

보키님의 프로필 이미지
보키

작성한 질문수

비전공자도 이해할 수 있는 쿠버네티스 입문/실전

시크릿(Secret)을 활용해 ‘민감한 값’을 환경 변수로 분리하기

Secret 질문

해결된 질문

작성

·

59

0

재성님! 강의 잘 보고 있습니다!

k8s에서 Secret 관련해서 예전에 본 걸 기억하기로는 value값은 base64로 인코딩된 값이어야 한다고 봤는데, 영상에서는 잘 동작하네요!?

제가 잘못 알고 있는지, 아니면 다른 방식이 있는지 등 궁금합니다!

답변 3

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 보키님! 질문 잘 해주셨어요~~

질문에 답변 드려볼게요ㅎㅎ

영상 강의에서 spring-secret.yaml 부분의 코드를 보시면

stringData: 라고 입력한 부분이 있습니다.

image.png

 

공식 문서에 따르면 stringData에 입력하는 경우에는

base64로 인코딩하지 않아도 된다고 나와있습니다!

(https://kubernetes.io/ko/docs/concepts/configuration/secret/)

이 때문에 base64로 인코딩하지 않아도 잘 작동한 것입니다:)

image.png

여기서 또 궁금한 점 있으시면 질문 남겨주세요~~

보키님의 프로필 이미지
보키
질문자

감사합니다!

0

보키님의 프로필 이미지
보키
질문자

앗......뭔가 찾은것같은데..!

저장할때는 base64로 저장 할 필요 없고, k8s 오브젝트(secret)이 된 후에는 base64로 인코딩되어서 저장이 되는게 맞을까요?

그리고

$ kubectl describe secret spring-secret 

이 명령어를 치면

Name: spring-secret

Namespace: default

Labels: <none>

Annotations: <none>

Type: Opaque

Data

====

my-password: 18 bytes

 

이렇게 나오는데.. 뭔가 18bytes라고 적힌걸 보니 제가 적은 알파벳보다 바이트수가 많아보여서 인코딩됐나 생각이 들고

$ kubectl get secret spring-secret -o jsonpath="{.data.my-password}" | base64 --decode

이 명령어로 디코딩을 해보니

my-secret-password%

이렇게 나오네요!

결국 저장하기 전에는 plain text로 요청을 보내는 거지만 k8s 오브젝트 내에서는 base64로 변환해서 들고있다. 이렇게 생각하면 될까요?

혹은 틀렸다면 알려주세요! :)

0

안녕하세요, 인프런 AI 인턴입니다. 보키님!

쿠버네티스(Kubernetes)에서 Secret은 기본적으로 민감한 정보를 저장하기 위해 사용되며, 기본값으로 value를 Base64 인코딩된 문자열로 입력해야 합니다. 이는 보안을 강화하기 위한 표준적인 방식입니다.

강의에서 직접 인코딩하지 않아도 되는 것처럼 보였다면, 의도적으로 강의에서 생략했을 가능성이 있습니다. 일부 툴이나 환경에서는 사용자가 Base64 방식을 이해할 수 있도록 자동으로 처리해줄 수도 있습니다. 따라서 사용 환경이나 툴의 설정에 따라 동작이 달라질 수 있습니다.

기본적으로 kubectl 명령어를 사용해 Secret을 생성할 때, 명령어 자체가 자동으로 인코딩을 처리합니다. 다음과 같은 방식으로 Secret을 생성하며 쿠버네티스 API에 전달될 때 Base64로 인코딩됩니다.

다음 리소스를 참고해 보시는 것도 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

보키님의 프로필 이미지
보키

작성한 질문수

질문하기