Search

[CKA] 43. Certificate Workflow & API

Date
2025/01/13
Category
Devops
Tag
Kubernetes
CKA
Security
๋ชฉ์ฐจ

ย Add Admin

ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒˆ๋กœ์šด Admin User๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
โ€ข
๋จผ์ € ์ƒˆ๋กœ์šด ์œ ์ €๋Š” ๊ฐœ์ธํ‚ค์™€ CSR์„ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ์ž์—๊ฒŒ CSR์„ ์ „๋‹ฌํ•œ๋‹ค
โ—ฆ
CSR์„ CA ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ๊ด€๋ฆฌ์ž๋งŒ CA ์„œ๋ฒ„์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค
โ—ฆ
์ƒˆ๋กœ์šด ์œ ์ €๋Š” ์•„์ง ํด๋Ÿฌ์Šคํ„ฐ์˜ ์œ ์ €๋กœ ๋“ฑ๋ก๋œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— CA ์„œ๋ฒ„๋กœ์˜ ์•ก์„ธ์Šค๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
โ€ข
๊ด€๋ฆฌ์ž๋Š” ์ „๋‹ฌ๋ฐ›์€ CSR์„ CA์„œ๋ฒ„๋กœ ๊ฐ€์ ธ๊ฐ€ CA ์„œ๋ฒ„์˜ ๊ฐœ์ธ ํ‚ค์™€ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ๋ฐ›๋Š”๋‹ค
โ€ข
์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ์ธ์ฆ์„œ๋ฅผ ์ƒˆ ์œ ์ €์—๊ฒŒ ๋ณด๋‚ธ๋‹ค
โ—ฆ
์ƒˆ ์œ ์ €๊ฐ€ ๊ด€๋ฆฌ์ž๋กœ ๋“ฑ๋ก๋˜์–ด ํด๋Ÿฌ์Šคํ„ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค
์ธ์ฆ์„œ์—๋Š” ์œ ํšจ ๊ธฐ๊ฐ„์ด ์กด์žฌํ•˜๋Š”๋ฐ, ๋งŒ๋ฃŒ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด CSR์„ ์ƒ์„ฑํ•˜๊ณ  CA์— ์„œ๋ช…์„ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค. ์ด๋•Œ ์ธ์ฆ์„œ ํŒŒ์ผ์€ ๊ณ„์† ๋ฐ”๋€๋‹ค.

ย CA Server

CA๋Š” ํ‚ค์™€ ์ธ์ฆ์„œ ํŒŒ์ผ ์Œ์— ๋ถˆ๊ณผํ•˜๋‹ค. ์ด ํŒŒ์ผ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์‚ฌ๋žŒ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์–ด๋–ค ์ธ์ฆ์„œ๋“  ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํŒŒ์ผ๋“ค์€ ๋ณดํ˜ธ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ์— ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.
CA Server๋Š” CA ์ธ์ฆ์„œ ํ‚ค ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ์„œ๋ฒ„์ด๋‹ค. ์ธ์ฆ์„œ์— ์„œ๋ช…์„ ์›ํ•  ๋•Œ๋งˆ๋‹ค, ๊ทธ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์„œ๋ช…ํ•ด์•ผ ํ•œ๋‹ค. ์ธ์ฆ์„œ๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ฐฐ์น˜ํ•œ๋‹ค๋ฉด ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ CA ์„œ๋ฒ„ ์—ญํ• ์„ ํ•œ๋‹ค.
kubeadm ๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค. ํ‚ค ํŽ˜์–ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ์ €์žฅํ•œ๋‹ค.

ย Certificates API

์œ„์—์„œ ์„ค๋ช…ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์ˆ˜๋™์œผ๋กœ ์š”์ฒญ์— ๋Œ€ํ•ด ์„œ๋ช…ํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ, ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ์ด ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ์ผ์„ ๊ฐฑ์‹ ํ•˜๋Š” ์ผ์„ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ์ธ์ฆ์„œ API๊ฐ€ ์žˆ์–ด ์ด๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ย Create CertificateSigningRequest Object

๊ด€๋ฆฌ์ž๊ฐ€ ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ, ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ง์ ‘ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๋Š” ๋Œ€์‹  CertificateSigningRequest๋ผ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
1.
์ƒˆ ์œ ์ €๊ฐ€ ์ž์‹ ์— ๋Œ€ํ•œ key์™€ CSR์„ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์š”์ฒญ์„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
openssl genrsa -out bal1oon.key 2048 openssl req -new -key bal1oon.key -subj "/CN=<username>" -out bal1oon.csr
Bash
๋ณต์‚ฌ
2.
๊ด€๋ฆฌ์ž๋Š” ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  CertificateSigningRequest ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
# bal1oon-csr.yaml apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: bal1oon spec: expirationSeconds: 600 # seconds usages: - digital signature - key encipherment - server auth requests: LNJDFNJKEWNKNVDLSNEKJFNLKSNKDFNKNSLKDF
YAML
๋ณต์‚ฌ
โ€ข
request ํ•„๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ์„ ๋ช…์‹œํ•˜๋Š” ๊ณณ์ด๋‹ค.
โ€ข
request๋Š” PlaneText๊ฐ€ ์•„๋‹Œ Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
$ cat bal1oon.csr | base64 LNJDFNJKEWNKNVDLSNEKJFNLKSNKDFNKNSLKDF
Bash
๋ณต์‚ฌ

ย Review Requests

โ€ข
๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋ชจ๋“  CSR์„ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ด€๋ฆฌ์ž๋“ค์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
kubectl get csr
Bash
๋ณต์‚ฌ

ย Approve Requests

โ€ข
kubectl ๋ช…๋ น์œผ๋กœ ์ธ์ฆ์„œ๋ฅผ ์Šน์ธํ•  ์ˆ˜ ์žˆ๋‹ค
kubectl certificate approve bal1oon
Bash
๋ณต์‚ฌ

ย Share Certs to Users

โ€ข
์ƒ์„ฑ๋œ ์ธ์ฆ์„œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข
์ธ์ฆ์„œ๋Š” yaml ํฌ๋งท์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
kubectl get csr bal1oon -o yaml
Bash
๋ณต์‚ฌ
โ—ฆ
์ธ์ฆ์„œ๋Š” base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ…์ŠคํŠธ๊ฐ€ ํ™•์ธ๋˜๋Š”๋ฐ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์ตœ์ข… ์‚ฌ์šฉ์ž์™€ ๊ณต์œ ํ•œ๋‹ค

ย Kube-Controller-Manager

๋ชจ๋“  ์ธ์ฆ์„œ ๊ด€๋ จ ์ž‘์—…์€ Controller Manager์— ์˜ํ•ด ์ด๋ค„์ง„๋‹ค. Controller Manager์—๋Š” CSR-Approving, CSR-Signing ๋“ฑ์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ธ์ฆ์„œ์— ์„œ๋ช…์„ ํ•  ๋•Œ๋ฉด, CA ์„œ๋ฒ„์˜ Root Certificate์™€ ๊ฐœ์ธ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Controller Manager์˜ ์„œ๋น„์Šค ๊ตฌ์„ฑ์—๋Š” ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋‹ค.
cat /etc/kubernetes/manifests/kube-controller-manager.yaml
Bash
๋ณต์‚ฌ