๐ŸŒฑ Infra/KeyCloak 11

[keycloak ๋ง›๋ณด๊ธฐ#10] ์„ธ์…˜ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ

1๏ธโƒฃ ๊ฐœ์š”Keycloak์€ ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ๊ถŒํ•œ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Identity And Access management ์†”๋ฃจ์…˜์ด๋‹ค.IAM ์†”๋ฃจ์…˜์œผ๋กœ์จ SSO(SingleSignOn), ์‚ฌ์šฉ์ž Federation ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ์„ธ์…˜ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋Š”๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Keycloak์˜ ์„ธ์…˜ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.๋“ค์–ด๊ฐ€๊ธฐ์ „์— ์„ธ์…˜๊ณผ ํ† ํฐ์— ๋Œ€ํ•œ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์ž.๊ตฌ๋ถ„์„ธ์…˜ (์ธ์ฆ)ํ† ํฐ (์ธ์ฆ+์ธ๊ฐ€)๊ธฐ๋ณธ ๊ฐœ๋…์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์‚ฌ์šฉ์ž ์ƒํƒœ ์ •๋ณดํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ ์ƒํƒœ์„œ๋ฒ„ ์ธก์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋จํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋Š” ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ์ฆ๋ช…์„œ์ž์ฒด์ ์œผ๋กœ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๊ด€๋ฆฌ๋จ์ €์žฅ ์œ„์น˜์„œ๋ฒ„ ์ธก์— ์ €..

[keycloak ๋ง›๋ณด๊ธฐ#9] ์‚ฌ์šฉ์ž ์ธ์ฆ(Authentication)

๐Ÿ“Œ ๊ฐœ์š”๐Ÿ“Ž ๊ณต์‹๋ฌธ์„œ ๋งํฌ์ธ์ฆ์€ Client(์‚ฌ๋žŒ/๊ธฐ๊ธฐ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ)์˜ ์‹ ์›์„ ๊ฒ€์ฆํ•˜๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค.Keycloak์€ OAuth2.0 ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ/์ธ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , Keycloak์—์„œ์˜ ์ธ์ฆ์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค.   ๐Ÿ“Œ ์ธ์ฆ ํ๋ฆ„ (Authentication flows) ๐Ÿ“Ž ๊ณต์‹๋ฌธ์„œ ๋งํฌ ์ธ์ฆ ํ๋ฆ„์ด๋ž€?์ธ์ฆ ํ๋ฆ„์ด๋ž€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•  ๋•Œ ๊ฑฐ์น˜๋Š” ์ธ์ฆ ๋‹จ๊ณ„์˜ ์ˆœ์„œ์™€ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ๊ฒƒ์„ ๋งํ•œ๋‹ค.Keycloak์—์„œ๋Š” ์ธ์ฆ ํ๋ฆ„์„ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก Template ํ˜•ํƒœ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.Keycloak์—์„œ ์ธ์ฆ์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ• ์ง€ ๊ทธ ๋ฐฉ๋ฒ•๊ณผ ์ˆœ์„œ๋ฅผ Authentication Flow๋กœ ์ •์˜ํ•˜๊ณ ,์ •์˜๋œ Authentication Flow๋ฅผ..

[keycloak ๋ง›๋ณด๊ธฐ#8] Federation with LDAP (Kubernetes/minikube) + Grafana ์—ฐ๋™๊นŒ์ง€

๐Ÿ“Œ ๊ฐœ์š” LDAP์ด๋ž€? * ์ฐธ๊ณ ์ž๋ฃŒ: https://www.okta.com/identity-101/what-is-ldap/LDAP(Lightweight Directory Access Protocol)์ด๋ž€, ๋””๋ ‰ํ„ฐ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ์‚ฌ์—์„œ ๋ถ€์„œ ๋ฐ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž/๊ทธ๋ฃน/๊ถŒํ•œ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.dc=example,dc=org (ํšŒ์‚ฌ) โ”œโ”€โ”€ ou=Development (๊ฐœ๋ฐœ๋ถ€์„œ) โ”‚ โ”œโ”€โ”€ cn=developer1 โ”‚ โ””โ”€โ”€ cn=developer2 โ”œโ”€โ”€ ou=Sales (์˜์—…๋ถ€์„œ) โ”‚ โ”œโ”€โ”€ cn=sales1 โ”‚ โ””โ”€โ”€ cn=sales2 โ””โ”€โ”€ ou=HR (์ธ์‚ฌ๋ถ€์„œ) โ”œ..

[keycloak ๋ง›๋ณด๊ธฐ #7] Production Keycloak์„ ์œ„ํ•œ ์„ค์ •

๋“ค์–ด๊ฐ€๊ธฐ์ „์—, *https://www.keycloak.org/server/configuration-production Keycloak์€ ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ๋ถ€์—ฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ๋‹ค.์•ˆ์ „ํ•˜๊ณ  ์•ˆ์ •์ ์ธ Keycloak์„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„๋“ค์„ ํ™•์ธ ํ•ด ๋ณด์ž.  1. Keycloak์˜ Hostname ์„ค์ •* ๊ณต์‹๋ฌธ์„œ: https://www.keycloak.org/server/hostname โœ“ Hostname์„ ์„ค์ •ํ•ด์•ผํ•˜๋Š” ์ด์œ keycloak์€ ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ hostname ์„ค์ •์„ ํ•„์ˆ˜๋กœํ•œ๋‹ค.โ–ช๏ธŽ ์„ค๋ช…Keycloak์€ OIDC Discovery ์—”๋“œํฌ์ธํŠธ, ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์—”๋“œํฌ์ธํŠธ ๋“ฑ์˜ URL์ด ์™ธ๋ถ€๋กœ ๊ณต๊ฐœ๋œ๋‹ค.์ด๋•Œ, hostname์ด..

[keycloak ๋ง›๋ณด๊ธฐ #6] Keycloak์˜ ์ธ๊ฐ€ ์ „๋žต

๊ฐœ์š”, ์ธ๊ฐ€๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ธ๊ฐ€(Authorization)์ด ๋ฌด์—‡์ธ์ง€ ํ•œ๋ฒˆ ๋” ๊ฐœ๋…์„ ์ •๋ฆฌํ•ด๋ณด์ž.์ธ๊ฐ€๋Š” "์ด ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค๋‚˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •"์ด๋‹ค.์˜ˆ๋ฅผ๋“ค์ž๋ฉด ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ID/PW๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‚ฌ์ง„์ฒฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋กœ๊ทธ์ธํ–ˆ๋‹ค๋ฉด, ์‚ฌ์šฉ์ž ๋ณธ์ธ์˜ ์‚ฌ์ง„์ฒฉ์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์ง„์ฒฉ์—๋Š” ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.๊ตฌ๋ถ„๊ฐœ๋…์˜ˆ์‹œ์ธ์ฆAuthentication๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •๋กœ๊ทธ์ธ์ธ๊ฐ€Authorization๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •๋‚ด ์‚ฌ์ง„์ฒฉ์—๋งŒ ์ ‘๊ทผ ์ฆ‰, ์ธ๊ฐ€๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ํ—ˆ์šฉ๋œ ๋ฆฌ์†Œ์Šค์—๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ํ•˜๋Š”๊ฒƒ์ด ์ธ๊ฐ€์˜ ๊ฐœ๋…์ด๋‹ค.์ธ๊ฐ€๋ฅผ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ์š”์†Œ๋Š” ์ •๋ง ๋งŽ๋‹ค.์‚ฌ์šฉ์ž ์ปจํ…์ŠคํŠธ (Who): ์‚ฌ์šฉ์ž ์‹ ์›, ์—ญํ• , ๊ทธ๋ฃน, ์†์„ฑ, ์กฐ์ง ๊ตฌ์กฐ ๋‚ด ์œ„์น˜๋ฆฌ..

[keycloak ๋ง›๋ณด๊ธฐ #5] Keycloak์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ

์ฐธ๊ณ ์ž๋ฃŒ์ฑ…: https://www.yes24.com/Product/Goods/122459785ํ…Œ์ŠคํŠธ ์†Œ์Šค์ฝ”๋“œ: https://github.com/PacktPublishing/Keycloak---Identity-and-Access-Management-for-Modern-Applications-2nd-Edition ํ†ตํ•ฉ ๋ฐฉ์‹ ์„ค๋ช… Keycloak๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ฉํ•  ๋•Œ,  Embedded์™€ Proxied ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ์™€ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.๊ตฌ๋ถ„EmbeddedProxied์„ค๋ช…์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋‚ด์—์„œ Keycloak ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ  Keycloak๊ณผ์˜ ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์• ..

[keycloak ๋ง›๋ณด๊ธฐ #4] Keycloak์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณดํ˜ธ  1๏ธโƒฃ ๊ฐœ์š”์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๊ฐ€์ฝ”๋“œํ๋ฆ„(Authorization Code Flow)๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฉฐ, PKCE(Proof key for Code Exchange)๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.์ธ๊ฐ€์ฝ”๋“œ ํ๋ฆ„(Authorization Code Flow)๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ธ์ฆ ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค.# [์ดˆ๊ธฐ ๋กœ๊ทธ์ธ ํ๋ฆ„]Browser App Server Keycloak | | | |----(1) ์ ‘๊ทผ ์‹œ๋„------------>| | | ..

[keycloak ๋ง›๋ณด๊ธฐ #3] ์ ‘๊ทผ๊ถŒํ•œ์ธ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ

์ฐธ๊ณ ์ž๋ฃŒ* ์ฑ…: https://www.yes24.com/Product/Goods/122459785* ํ…Œ์ŠคํŠธ ์†Œ์Šค์ฝ”๋“œ: https://github.com/PacktPublishing/Keycloak---Identity-and-Access-Management-for-Modern-Applications-2nd-Edition ์‹ค์Šต ์ค€๋น„) Keycloak & ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ธํŒ… Keycloak ์ค€๋น„Keycloak์„ ๋กœ์ปฌ์—์„œ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค.docker run -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak \ st..

[keycloak ๋ง›๋ณด๊ธฐ #2] OpenID Connection ์‚ฌ์šฉ์ž ์ธ์ฆ ์ดํ•ดํ•˜๊ธฐ

์ฐธ๊ณ ์ž๋ฃŒ* ์ฑ…: https://www.yes24.com/Product/Goods/122459785* ํ…Œ์ŠคํŠธ ์†Œ์Šค์ฝ”๋“œ: https://github.com/PacktPublishing/Keycloak---Identity-and-Access-Management-for-Modern-Applications-2nd-Edition์‹ค์Šต ์ค€๋น„) Keycloak & ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ธํŒ…Keycloak์„ ๋กœ์ปฌ์—์„œ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค.docker run -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak \ start-dev์ดํ›„ ํ…Œ์ŠคํŠธ..

[keycloak ๋ง›๋ณด๊ธฐ #1] Keycloak ๋กœ์ปฌ์—์„œ ๋„์šฐ๊ณ  Realm ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

๊ฐœ์š”Keycloak์€ ์˜คํ”ˆ์†Œ์Šค(Apache License2.0) ID ๋ฐ ์—‘์„ธ์Šค ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์ด๋‹ค.์ด๊ฒƒ๋งŒ ์•Œ๊ณ  ์ผ๋‹จ ์‹œ์ž‘ํ•ด๋ณด์ž Keycloak ๋„์ปค๋กœ ๋„์›Œ๋ณด๊ธฐKeycloak์€ ์„ค์น˜ ๋งค๋‰ด์–ผ์ด ์ •๋ง ์ž˜๋˜์–ด์žˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์— ์ •๋ง ์ž์„ธํžˆ ์ž˜ ์ž‘์„ฑ๋˜์–ด์žˆ์–ด ๋ฌธ์„œ์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ด๋ณด์ž.docker run -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:24.0.4 \ start-devdocker run ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ keycloak์„ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค. http://localhost:8080 ์— ์ ‘์†ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•ด๋ณด์ž. (id..

728x90