2023. 1. 6. 21:46ใSystem ์์ ์ค/DevOps
๐ ๋ชฉ์ฐจ
โ [INFRA] OpenLDAP๊ณผ LDAP Account Manager ์ค์นํ๊ธฐ
โ [INFRA] OpenLDAP๊ณผ Client CentOS 7.9 ์ฐ๋ํ๊ธฐ
โ [INFRA] Installation Keycloak of Ubuntu 22.04.01 LTS in Docker Container
โ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Keycloak ์ค์น ๋ฐ ๊ตฌ์ฑ
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ฃผ๋ํ๋์ ์ด์ ์ Ubuntu 22.04.01 LTS Docker Container๋ฅผ ์ด์ฉํ์ฌ OpenLDAP Server๋ฅผ ๊ตฌ์ฑํ๊ณ , CentOS 7.9 Client๋ฅผ ์ฐ๋ํ๋ ๊ฒ์ ์งํํด ๋ณด์์ด์.
์ด๋ฒ์๋ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ๊ณ์ ๊ด๋ฆฌ๋ฅผ ์ํด Keycloak๋ฅผ ์ค์นํด๋ณด๋ ค๊ณ ํด์.
Keycloak์ด๋ ํ๋ Application๊ณผ Service์ ์ด์ ์ ๋ ID ๋ฐ ์ ๊ทผ ๊ด๋ฆฌ(Access Management)์ ํตํฉ ์ธ์ฆ(SSO; Sigle Sign On)์ ํ์ฉํ๋ Open Source Software๋ก Kubernetes ๋๋ MSA ํ๊ฒฝ์ ์ต์ ํ๋ ์๋ฃจ์
์ด์์.
์ข ๋ ์ฝ๊ฒ ์ค๋ช
ํ๋ฉด ์ธ์ฆ(Authentification)๊ณผ ์ธ๊ฐ(Authorizaion)์ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฃจ์
์ด๋๋๋ค.
๋ํ์ ์ธ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ์์.
โ ํ์ค Protocol ์ง์(OpenID Connect, OAuth 2.0 - GitHub, Google ๋ฑ, SAML)
โ ๋์ผ Realm์ ์ํ ๋ชจ๋ Application์ ๋ํ ํตํฉ ์ธ์ฆ(SSO; Single Sign-On) ๋ฐ Sign-Off
โ ๊ด๋ฆฌ์ / ๊ณ์ ๊ด๋ฆฌ Console ์ ๊ณต
โ ID ์ค๊ฐ
โ ์ฌ์ฉ์ UI ์ ์
โ Client Adapters (๋ค์ ํ๋ซํผ๊ณผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ Adapter ์ง์)
โ Two fact ์ธ์ฆ
โ LDAP ํตํฉ
โ Kerberos ๋ธ๋ก์ปค
โ ์์ญ ๋ณ ์ฌ์ฉ์ ์ง์ ๊ฐ๋ฅ ์คํจ์ ์ฌ์ฉํ ๋ฉํฐ ํ๋์
๐ฝ ์ด๊ธฐ ๋จ๊ณ
๐ฆ ์ค์น
์ฃผ๋ํ๋์ ์ด๋ฒ System ๊ตฌ์ฑ์ ์ํด Ubuntu 22.04.01 LTS Docker Container๋ฅผ ์ด์ฉํด์ฃผ๋ ค๊ณ ํด์.
์ต์ด Docker Container ๊ตฌ๋์ ์ํด ์์ ๊ฐ์ด Shell Script๋ฅผ ๋ง๋ค์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด ๊ถํ์ ์์ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Shell Script๋ฅผ ๋์ ์์ผ Container๊ฐ ๊ตฌ๋๋๊ฒ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค Ubuntu Package๋ฅผ ์ต์ ํ ํด ์ฃผ์์ด์.
Keycloak๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ JDK๋ฅผ ์ค์นํด ์ฃผ์ด์ผํด์.
JDK๋ 11 version ์ด์์ ์ด์ฉํด์ผ ํ๋ฉฐ, ์ฃผ๋ํ๋์ 17 Version์ ์ค์นํด ๋ณด๋ ค๊ณ ํด์.
JDK๊ฐ ์ ์ ์ค์น ๋์์ด์.
wget์ผ๋ก ๋ด๋ ค๋ฐ๊ธฐ๋ฅผ ํ๋ ค๊ณ ํ์ง๋ง, wget์ ์ค์น๊ฐ ๋์ด ์์ง ์์ ๋ช๊ฐ์ง Package๋ฅผ ๋ด๋ ค ๋ฐ์ ์ค๊ฒ์.
์์ ๊ฐ์ด ๋ช๊ฐ์ง Package๋ฅผ ์ค์น ํด์ฃผ์์ด์.
๋ค์ ํ์ ์ฌํญ์ wget์ผ๋ก ๋ด๋ ค ๋ฐ๊ธฐ๋ฅผ ํด ์ฃผ์์ด์.
๋ด๋ ค ๋ฐ์ ์์ถ ํ์ผ์ ์์ ๊ฐ์ด ํ์ด ์ฃผ์์ด์.
์์ ๊ฐ์ด Keycloak์ ์์ํ ์ ์ ์ด๊ธฐ ๊ด๋ฆฌ์ ๊ณ์ ์ ์์ฑ ํด์ผ ๋์.
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด http://{Server IP}:{Keyloak Port Number}๋ฅผ
์
๋ ฅํ๋ฉด ์์ ๊ฐ์ด WEB Interface์ ์ ์ํ ์ ์์ด์.
์ด ๊ณณ์์ Administration Console์ ํด๋ฆญํ์ฌ ๋ค์ด๊ฐ ์ค๊ฒ์.
์์ ๊ฐ์ด ์ธ์ฆ์ฐฝ์ด ๋์ค๋ฉด ์์์ ์ค์ ํ๋ ๊ด๋ฆฌ์ ๊ณ์ ์ ์
๋ ฅํด ์ฃผ๋ฉด ๋์.
์ฐธ๊ณ ๋ก ๊ด๋ฆฌ์ ๊ณ์ ์ ์ฒ์ ์์ฑํ ๋, ํน์๋ฌธ์๋ ์ง์์ ์ํ๋ ๊ฑฐ ๊ฐ์์.
์๋ฅผ ๋ค์ด abc123$%^์ด๋ผ๊ณ ๋ฑ๋กํ๋ค๋ฉด ํน์๋ฌธ์๋ ๋ค ์งค๋ฆฌ๊ณ abc123๋ง ๋ฑ๋ก์ด ๋๋๊ฑธ๋ก ํ์ธํ์ต๋๋ค.
์ ์์ด ์ฑ๊ณตํ๋ฉด ์์ ๊ฐ์ด Keycloak Dash Board๋ฅผ ํ์ธํ ์ ์์ด์.
๐ฝ ๊ตฌ์ฑ
๐ฆ ์ฌ์ฉ์ ๊ณ์ ๊ณผ Client ์์ฑ
์ด๋ฒ์๋ ์ฌ์ฉ์ ๊ณ์ ๊ณผ Client๋ฅผ ๋ง๋ค์ด ๋ณผ๊ฒ์.
์ผ์ชฝ ์์ Master๋ผ๊ณ ๋ ๋ถ๋ถ์ Mouse๋ฅผ ๊ฐ์ ธ๋ค ๋๋ฉด ์์ ๊ฐ์ด Add realm์ด ๋์ฌ๊ฑฐ์์.
์ด ๋ถ๋ถ์ ํด๋ฆญํด ์ค๊ฒ์.
์ต์ด ์์ ๊ฐ์ด Name์ ์ด๋ฆ์ ์ ์ด์ฃผ๊ณ , create๋ฅผ ๋๋ฌ์ฃผ์์ด์.
์์ ๊ฐ์ด ์ด๋ฆ์ด ์ ๋ฑ๋ก๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ด๋ฒ์๋ Keycloack์ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ํ๋ฒ ๋ง๋ค์ด ๋ณผ๊ฒ์.
์์ ๊ฐ์ด ์ผ์ชฝ์ Users๋ฅผ ๋๋ฌ์ค๋๋ค.
์์ ๊ทธ๋ฆผ ํ์๋ Add user๋ฅผ ๋๋ฌ์ค๊ฒ์.
์์ ๊ฐ์ด ํด๋น ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ID๋ฅผ ์
๋ ฅํ๊ณ , Save๋ฅผ ๋๋ฌ์ฃผ์์ด์.
๊ทธ๋ผ ์์ ๊ฐ์ ํ๋ฉด์ด ๋์ฌํ
๋ฐ ์ฌ๊ธฐ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์๋ ๊ณณ์ ํด๋ฆญํด ์ค๊ฒ์.
์์ ๊ฐ์ด ์ฌ์ฉ์ ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ , Set Password๋ฅผ ๋๋ฌ์ค๋๋ค.
์ฐธ๊ณ ๋ก Temporary๋ ๊ด๋ฆฌ์๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ๊ณ ,
๋ค์์ Login ์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ํ๋๋ก ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฑฐ์์.
๋ค์ Users์ ๋์์ View all Users๋ฅผ ๋๋ฅด๋ฉด ์์ ๊ฐ์ด ์ฌ์ฉ์ ๊ณ์ ์ ํ์ธํ ์ ์์ด์.
์ด๋ฒ์๋ Application ๋ณดํธ๋ฅผ ์ํด Keycloack ์ธ์คํด์ค์ Application ๋ฑ๋ก์ ํด๋ณผ๊ฒ์.
์ด๋ฒ์๋ ์์ ๊ฐ์ด Clients๋ฅผ ๋๋ฌ์ค๊ฒ์.
๊ทธ๋ฐ ๋ค ์์ ํ์๋ ๊ณณ๊ณผ ๊ฐ์ด Create๋ฅผ ๋๋ฌ ์ค๋๋ค.
์ฃผ๋ํ๋์ด ํ์ฌ ํฌ๋ฃจ๋ค๊ณผ ํจ๊ป ์งํํ๊ณ ์๋ WEB Service๋ฅผ ๋ฑ๋กํด ๋ณผ๊ฒ์
์์ ๊ฐ์ด ํด๋น Service ์ด๋ฆ์ Client ID์ ๋ฃ๊ณ , URL ์ ๋ณด๋ฅผ ์
๋ ฅํด ์ฃผ์์ด์.
Save๋ฅผ ๋๋ฅด๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด ๋๋ถ๋ถ ์ค์ ์ ์๊ธฐ๊ฐ ์์์ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ค์ Save๋ฅผ ๋๋ฌ์ค๊ฑฐ์์.
์์ ๊ฐ์ด WEB Application์ด ๋ฑ๋ก๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
๐ฆ KeyCloack์ OpenLDAP ์ฐ๊ณ
์ด๋ฒ์๋ ์ด ์ ์ ๊ตฌ์ฑํ OpenLDAP๊ณผ KeyCloack๋ฅผ ์ฐ๋ ์์ผ ๋ณผ๊ฒ์.
์ด๋ฒ์๋ ์์ ๊ฐ์ด User Federation์ ์ ํํด ์ค๊ฒ์.
๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด ldap์ ์ ํํด ์ค๋๋ค.
์ฃผ๋ํ๋์ ์์ ๊ฐ์ด ์ค์ ์ ํด์คฌ๊ณ , Connection URL๊ณผ Bind Credential๋
๋ฏธ๋ฆฌ ์ ๋๋ก๋ ๊ฐ์ด ์
๋ ฅ ๋์๋์ง ํ์ธํด ๋ณผ ์ ์์ด์.
์ฐธ๊ณ ๋ก Bind Credential์๋ OpenLDAP ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ๋ฉด ๋์.
์์ ๊ฐ์ด ์ค์ ํ๊ณ , Save๋ฅผ ๋๋ฌ์ฃผ์์ด์.
Save๋ฅผ ๋๋ฅด๋ฉด ์์ ๊ฐ์ด ๋ฒํผ์ด ๋ ์๊ธธ๊ฑฐ์์.
์ ๊ทธ๋ฆผ์ ํ์๋ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด OpenLDAP์ ์์ฑํ User ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ ๊ฑฐ์์.
Users Tab์ ๋ค์ ๊ฐ์ View All users๋ฅผ ๋๋ฌ๋ณด๋ฉด
OpenLDAP์์ ์์ฑํ ๊ณ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ด๋ฒ์๋ ๊ทธ๋ฃน ์ ๋ณด๋ ์ฐ๋ ์์ผ๋๊ฒ์.
์ด๋ฒ์๋ ์ด์ ์ ๋ง๋ค์๋ LDAP ์ฐ๋ ์ ๋ณด์ ๋ค์ ๋ค์ด๊ฐ ์ค๊ฑฐ์์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Mappers๋ฅผ ํด๋ฆญํด ์ค๊ฑฐ์์.
๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ ์์ Create๋ฅผ ๋๋ฌ์ค๊ฑฐ์์.
๊ทธ๋ฐ ๋ค Name์ Groups๋ก ํ๊ณ , Mapper Type์ group-ldap-mapper๋ก ์ ํํด ์ค๊ฑฐ์์.
๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด ์์ธ ์ค์ ์ฐฝ์ด ๋์ ์์ ๊ฐ์ด ์ค์ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค Save๋ฅผ ๋๋ฌ์ฃผ์์ด์.
๊ทธ๋ผ ์์ ๊ฐ์ด ๋ ๋ฒํผ์ด ๋ ๊ฐ ๋ ์๊ธธํ
๋ฐ, ํ์๋ ๋ฒํผ์ ๋๋ฌ์ฃผ๋ฉด LDAP์ ๊ทธ๋ฃน ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋์.
์์ ๊ฐ์ด OpenLDAP์ User ์ ๋ณด๋ ์์ง๋ง, Group ์ ๋ณด๋ ์๋ ์ํ์์.
๊ทธ๋์ Keycloak์๋ Group ์ ๋ณด๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
๐ง ์ฐธ๊ณ ์๋ฃ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ก ์ฐธ๊ณ ์ฌํญ
์๋ ํ์ธ์.
'System ์์ ์ค > DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CI/CD] Jenkins Trigger ์ ๋ณด Discord๋ก ๋ณด๋ด๊ธฐ (0) | 2023.06.01 |
---|---|
[CI/CD] Jenkins์ Gitea ์ฐ๋ (0) | 2023.06.01 |
[INFRA] OpenLDAP๊ณผ Client CentOS 7.9 ์ฐ๋ํ๊ธฐ (0) | 2023.01.06 |
[DevOps] Ubuntu 22.04 LTS Docker Container Install NGINX (0) | 2023.01.06 |
[Ubuntu 22.04] apache2 Port ๋ณ๊ฒฝ (0) | 2023.01.06 |