2023. 1. 5. 00:05ใ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
โ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Ubuntu 22.04 Docker์ OpenLDAP ๊ตฌ์ฑ
๐ฝ ๊ตฌ์ฑ
๐ฆ OpenLDAP ์ค์น
์ต์ด ์ฃผ๋ํ๋์ Ubuntu 22.04 LTS Docker Container๋ฅผ ์ด์ฉํ ๊ฑฐ์์.
์์ ๊ฐ์ด Docker๋ฅผ ๊ธฐ๋ํ ์ ์๋ Shell Script๋ฅผ ๋ง๋ค๊ณ , ๊ธฐ๋ํ์ฌ ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค Ubuntu Package ์ต์ ํ๋ฅผ ์งํํด ์ค๊ฒ์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด ํ์ํ Package๋ฅผ ์ถ๊ฐ ์ค์นํด ์ฃผ์์ด์.
OpenLDAP์ ์ค์นํ๊ธฐ ์ ์ OpenLDAP Server FQDN(์ ๊ทํ๋ Domain Name) ๊ตฌ์ฑ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํด์ผ ํด์.
์ด๋ฒ ๊ธ์์ ๊ตฌ์ฑํ๋ Server์์๋ Server Host Name "http" ๋ฐ Domain "giggalpeople.com"๊ณผ IP ์ฃผ์ "172.17.0.7"์ ์ด์ฉํ์ฌ OpenLDAP Server๋ฅผ ๋ง์ถฐ๋ณด๋๋ก ํ ๊ฑฐ์์.
์ด ๋ด์ฉ์ ์์์ Container๋ฅผ ๋ง๋ค ๋ ์งํ ํด ์ฃผ์์ด์.
hostname์ด ์์ ๊ฐ์ด ์ ์ค์ ๋์ด ์์ด์.
์ด์ OpenLDAP ๊ด๋ จ Package๋ฅผ ์ค์นํด ๋ณผ๊ฒ์.
์ ๋ช
๋ น์ด๋ก Package ์ค์น๋ฅผ ํด ์ฃผ์์ด์.
์ต์ด OpenLDAP Package ์ค์น ์ OpenLDAP ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ผ๊ณ ํ ๊ฑฐ์์.
OpenLDAP ๊ด๋ฆฌ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ณ , ENTER๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋ ํ๋ฒ ๋ ๋ฌผ์ด๋ณผ๊ฑฐ๊ณ , ๋์ผํ ์์
์ ์งํํด ์ฃผ๋ฉด ๋์.
๐ฆ ์ด๊ธฐ ๊ตฌ์ฑ
OpenLDAP Server ์ค์ ์ ์์ํ๋ ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ค์ผ ํด์.
์ด ๋ช
๋ น์ด๋ OpenLDAP Main Package slapd๋ฅผ ์ฌ์ค์ ํ๊ณ , ๊ธฐ๋ณธ OpenLDAP ๊ตฌ์ฑ ์ค ์ผ๋ถ๋ฅผ ์
๋ ฅํ๋ผ๋ Message๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ ๊ฑฐ์์.
์์ ๊ฐ์ด Omit OpenLDAP Server Configuraion? ์ ๋ฌผ์ด๋ณด๋ฉด no๋ฅผ ์ ํํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด OpenLDAP Server์ ์ ๊ตฌ์ฑ File๊ณผ DB๊ฐ ์ค์ ๋ ๊ฑฐ์์.
์ด๋ฒ์ Domain Name์ ์ค์ ํด ๋ณผ๊ฒ์.
Domain Name์ OpenLDAP Server์ DN(Distinguished Name)์ผ๋ก ์ฌ์ฉ๋ ๊ฑฐ์์.
์ด๋ฒ ๊ตฌ์ฑ์์๋ Domain Name์ด giggalpeople.com ์ด๊ธฐ ๋๋ฌธ์ dc=giggalpeole,dc=com์ด ๋ฉ๋๋ค.
์ด๋ฒ์๋ ์กฐ์ง ์ด๋ฆ์ ์ค์ ํด ๋ณด๋ ค๊ณ ํด์.
Domain์ ์ด์ฉํ ์๋ ์๊ณ , ๋ค๋ฅธ ์ด๋ฆ์ ์ด์ฉํ ์๋ ์์ง๋ง, ์ฃผ๋ํ๋์ Domain ์ ๋ณด๋ฅผ ์ด์ฉํ ๊ฑฐ์์.
์ด๋ฒ์๋ OpenLDAP์ ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ค๊ฑฐ์์.
๋ ๋ฒ ๋ฌผ์ด๋ณด๊ฒ ๋๋ต๋๋ค.
์ด๋ฒ์๋ ์ด์ DB๋ฅผ ์ ๊ฑฐํ ๊ฑด์ง ๋ฌผ์ด๋ณด๊ณ ์์ด์.
์ฌ๊ธฐ์๋ no๋ฅผ ์ ํํด ์ค๊ฒ์.
์ด๋ฒ์๋ OpenLDAP DB๋ฅผ ์ด๋ํ ๊ฑด์ง ๋ฌผ์ด๋ณด๊ณ ์์ด์. yes๋ฅผ ์ ํํ์ฌ OpenLDAP ๊ตฌ์ฑ์ ๋ง๋ฌด๋ฆฌ ํด์ค๊ฑฐ์์.
์์ ๊ฐ์ด ๋์จ๋ค๋ฉด ์ ์ ์ค์ ๋ ๊ฒ์ด์์.
์๋ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ slapd Package ๊ตฌ์ฑ์ ์์ ํด ์ค๊ฒ์.
์์ ๊ฐ์ด 8 ~ 9๋ฒ์งธ ์ค์ ์์ ํ์ฌ ์ฃผ์์ด์.
์์ ๊ฐ์ด slapd Service๋ฅผ ์ฌ์์ํ์ฌ OpenLDAP Server์ ์๋ก์ด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํด ์ฃผ๋๋ก ํ์์ด์.
ํ์ฌ OpenLDAP Server๋ DN๊ฐ์ผ๋ก dc=giggalpeople,dc=com ์ ์ด์ฉํ์ฌ ๊ตฌ๋์ค์ ์์ด์.
์ด์ ์๋ ๋ช
๋ น์ด๋ฅผ ํตํด OpenLDAP ๊ธฐ๋ณธ ์ค์ ์ ํ์ธํด ๋ณด๋๋ก ํ ๊ฒ์.
์ค์ ์ด ์ ๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
๐ฆ ๊ธฐ๋ณธ ๊ทธ๋ฃน ์ค์
OpenLDAP Server์ ๊ธฐ๋ณธ DN(Distinguished Name)์ ์ค์ ํ๋ฉด Open LDAP ์ฌ์ฉ์์ ์๋ก์ด ๊ธฐ๋ณธ ๊ทธ๋ฃน์ด ์์ฑ๋ ๊ฑฐ์์. ์ด๋ฒ ๊ตฌ์ฑ์์๋ ๊ธฐ๊น๋๋ ์ฌ๋๋ค ํฌ๋ฃจ ๋ชจ๋๋ฅผ ์ ์ฅํ๋ crew ๋ผ๋ ์ด๋ฆ์ ๊ทธ๋ฃน๊ณผ OpenLDAP Server์ ๊ทธ๋ฃน์ ์ ์ฅํ๋ Groups๋ผ๋ ์ด๋ฆ์ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ๋ง๋ค์ด ๋ณด๋๋ก ํ ๊ฒ์.
์ด๋ฅผ ์ํด ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน๋ฑ์ ์๋ก์ด LDAP Contans๋ฅผ ์์ฑํ๊ธฐ ์ํด LDIF File(LDAP Data Interchange Format)๊ณผ LDAP ๋๊ตฌ์ธ ldapadd๋ฅผ ์ด์ฉํด ์ฃผ๋๋ก ํ ๊ฒ์.
์ต์ด ์๋ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ LDIF File base-groups.ldif๋ฅผ ๋ง๋ค์ด์ค๊ฒ์.
dn: ou=crew,dc=giggalpeople,dc=com
objectClass: organizationalUnit
ou: crew
dn: ou=Groups,dc=giggalpeople,dc=com
objectClass: organizationalUnit
ou: Groups
์์ ๊ฐ์ด ์์ฑํ๊ณ , ldapadd ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ์คํํด์ฃผ๋๋ก ํ ๊ฒ์.
OpenLDAP ๊ด๋ฆฌ์ ์ํธ๋ฅผ ์
๋ ฅํ๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅธ ์ํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ด์ผ ํด์.
์ด์ ์๋ ๋ช
๋ น์ด๋ฅผ ํตํ์ฌ OpenLDAP Server์ ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ํ์ธํ๋๋ก ํด ๋ณผ๊ฒ์.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ ๊ฐ์ ๊ธฐ๋ณธ ๊ทธ๋ฃน, ์ฆ crew์ Groups๊ฐ ํ์ ๋์์ด์.
์ด๋ฒ์๋ ์ ๊ทธ๋ฃน์ ์ถ๊ฐํด๋ณด๋๋ก ํ ๊ฒ์.
LDAP Server์ ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ์์ฑํ ๋ค ์ LDAP ๊ทธ๋ฃน ๋ฐ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์์ด์.
์ด๋ฒ์๋ LDIF File์ ์ด์ฉํ์ฌ ์ ๊ทธ๋ฃน์ ๋ง๋ค์ด ๋ณด๋๋ก ํ ๊ฒ์.
์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ์๋ก์ด LDIF File group.ldif๋ฅผ ๋ง๋ค์ด ์ค๊ฒ์.
dn: cn=DevOpsSec,ou=crew,dc=giggalpeople,dc=com
objectClass: posixGroup
cn: DevOpsSec
gidNumber: 5000
์์ ๊ตฌ์ฑ File์ ๋ง๋ค์ด์ค๊ฑฐ์์.
์ฌ๊ธฐ์๋ DevOpsSec์ด๋ผ๋ ์ด๋ฆ์ ์ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ๊ธฐ๋ณธ ๊ทธ๋ฃน Groups์ ์ ์ฅํ๊ณ ,
gidNumber๋ฅผ 5000์ผ๋ก ์ ์ํด ์ฃผ๋๋ก ํ์์ด์.
๐ฆ ์ฌ์ฉ์ ์ถ๊ฐ
OpenLDAP Server์ ๊ทธ๋ฃน์ ๋ง๋ค๊ฒ ๋๋ฉด LDIF File์ ํตํด LDAP ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด ์ค ์ ์์ด์.
์ ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ LDAP ์ฌ์ฉ์์ ์ํธํ๋ ์ํธ๋ฅผ ๋ง๋ค์ด ์ฃผ์ด์ผ ํด์.
์ ์ํธ๋ฅผ ์
๋ ฅํ๊ณ , ๋ฐ๋ณตํ ๋ค์ ๋ดํธํ๋ ์ํธ๋ฅผ ์ป์ ์ ์์ด์.
์ํธํ๋ ๊ฐ์ ์ ๊ธฐ๋กํด ์ฃผ์
์ผ ํด์.
dn: uid=testuser,ou=crew,dc=giggalpeople,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: testuser
sn: test
givenName: user
cn: testuser
displayName: OpenLDAP_Test_User
uidNumber: 10000
gidNumber: 5000
userPassword: {SSHA}uU+7XJzExwx0uQCjuAU2L/BwFsxt4oxw
gecos: testuser
loginShell: /bin/bash
homeDirectory: /home/testuser
์์ ๊ฐ์ด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์
๋ ฅํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ์ LDAP ์ฌ์ฉ์๋ฅผ ํ์ธํ์ฌ ์ฃผ์์ด์.
OpenLDAP์๋testuser์ด๋ผ๋ ๊ณ์ ์ด ์์ฑ ๋์์ด์.
์ด๊ฒ์ผ๋ก ๊ธฐ๋ณธ์ ์ธ OpenLDAP ์ค์น ๋ฐ ๊ตฌ์ฑ์ ์๋ฃ ํ์์ด์.
๐ฆ LDAP Account Manager ์ค์น
์ด๋ฒ์๋ WEB์ ํตํด LDAP์ ๊ด๋ฆฌํ ์ ์๋ LDAP ๊ณ์ ๊ด๋ฆฌ์๋ฅผ ์ค์นํด๋ณด๋๋ก ํ ๊ฒ์.
LDAP Account Manager(LAM; LDAP ๊ณ์ ๊ด๋ฆฌ์)๋ OpenLDAP Server์ Front End๋ก ์ฌ์ฉํ ์ ์๋ WEB Applicaion Program ์ด์์. ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด OpenLDAP Server๋ฅผ ๊ด๋ฆฌํ๊ณ , WEB ๋ธ๋ผ์ฐ์ ์์ ์ ์ฌ์ฉ์, ๊ทธ๋ฃน๋ฑ์ ์ค์ ํ ์ ์๋๋ก ๊ตฌ์ฑํด ๋ณผ๊ฒ์.
LAM์ Ubuntu ์ ์ฅ์์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ด์.
์๋ apt ๋ช
๋ น์ด๋ฅผ ํตํด ์ค์นํ ๊ฒ์ธ๋ฐ, ๊ทธ๋ ๊ฒ ํ๋ฉด PHP ๋ฐ Apache2 WEB Server๋ฅผ ํฌํจํ ๋ค๋ฅธ Package๊ฐ ์ค์น๋ ๊ฑฐ์์.
์ฃผ๋ํ๋์ ํด๋น Docker Container๋ฅผ ๋ง๋ค ๋, Port Mapping์ ํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ WEB์ ํตํด ์ ์ํ ์ ์์ด์.
๊ทธ๋์ ์๋์ ๊ฐ์ด ์์
์ ํด ์ฃผ์์ด์.
์ต์ด ๊ธฐ์กด์ ๊ธฐ๋์ค์ธ Docker Container๋ฅผ ์ค์งํ๊ณ , ํด๋น Container๋ฅผ Docker Image๋ก ๋ง๋ค์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Shell Script๋ฅผ ๋ง๋ค์ด์ Port Mapping์ ํ ๋ช
๋ น์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๊ณ , Docker Container๋ฅผ ๊ธฐ๋ํ์ฌ ์ฃผ์์ด์.
ํด๋น Shell Script๋ฅผ ์๋์ํค๋ฉด ๋ฐ๋ก ํด๋น Container๋ก ์ ์ํ ์ ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด slapd์ apache2๋ฅผ ์ฌ๊ธฐ๋ ํด์ฃผ๋๋ก ํ ๊ฒ์.
์์ ๊ฐ์ด ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ์ ์ ์ํ๊ฑธ ํ์ธํ ์ ์์ด์.
์ค๋ฅธ์ชฝ ์์ LAM configuraion์ ๋๋ฌ์ค๊ฒ์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Edit server profiles๋ฅผ ๋๋ฌ์ค๊ฒ์.
์ต์ด ๋น๋ฐ๋ฒํธ๋ lam ์ด์์.
์ต์ด Time zone์ ์์ ๊ฐ์ด ๋ณ๊ฒฝํด ์ฃผ์์ด์.
Tools settins์์ OpenLDAP Server ๊ธฐ๋ณธ DN(Distinguished Name)์ ์
๋ ฅํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค security settings์์ Login Method(๋ฐฉ๋ฒ)์ ๊ณ ์ ๋ชฉ๋ก(Fixed list)๋ก ์ ํํ๊ณ , OpenLDAP Server ์์ธ Login ์ ๋ณด๋ฅผ ์
๋ ฅํด ์ฃผ์์ด์. ์ฆ, OpenLDAP ๊ธฐ๋ณธ ์ฌ์ฉ์๋ admin์ด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์
๋ ฅํด ์ฃผ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก Profile password์๋ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์์ด์.
์ด ๋น๋ฐ๋ฒํธ๊ฐ ์๊น lam์ ์
๋ ฅํ๊ณ , ๋ค์ด์จ ์ ์๋น์ค์ ์๋ก์ด ๋น๋ฐ๋ฒํธ๊ฐ ๋ ๊ฑฐ์์.
์์ ๊ฐ์ด ์ค์ ์ ๋คํ๋ค๋ฉด SAVE๋ฅผ ๋๋ฌ์ค๋๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ด LDAP ๊ณ์ ๊ด๋ฆฌ์ Login Page๋ก ์ด๋ํ๊ฒ ๋ ๊ฑฐ์์.
LAM configuration์ ๋ค์ ํด๋ฆญํ๊ณ , ๊ธฐ๋ณธ Profile LAM์ ํธ์งํด ์ค๊ฒ์.
์ด๋ฒ์๋ Account types๋ก ์ด๋ํ์ฌ OpenLDAP ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ์ค์ ํด ๋ณด๋๋ก ํ ๊ฒ์.
Users ๋ถ๋ถ์๋ LDAP ์ ๋ฏธ์ฌ๋ฅผ ou=crew,dc=giggalpeople,dc=com์ผ๋ก ์
๋ ฅํด ์ฃผ์์ด์.
์ด๋ OpenLDAP์ ์ค์นํ๊ณ , ๊ธฐ๋ณธ ๊ทธ๋ฃน์ ๋ง๋ค ๋ ์ค์ ํด ์ค ๋ด์ฉ์ด์์.
Groups ๋ถ๋ถ์๋ LDAP ์ ๋ฏธ์ฌ๋ฅผ ou=Groups,dc=giggalpeople,dc=com์ผ๋ก ์
๋ ฅํด ์ฃผ์์ด์.
์ด ์์์๋ ๋ชจ๋ ๊ทธ๋ฃน์ ๊ธฐ๋ณธ ๊ทธ๋ฃน Groups์์ ์ฌ์ฉํ ์ ์์ด์ผ ํด์.
์์ ๊ฐ์ด ์ค์ ํ ๋ค SAVE ๋ฒํผ์ ๋๋ฌ ๊ธฐ๋ณธ Profile lam ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ์ฅํด ์ฃผ๋๋ก ํ ๊ฒ์.
๊ทธ๋ผ ๋ค์ ์ด ๊ณณ์ผ๋ก ์ด๋ํ๊ฒ ๋๋๋ฐ, User name์ด ์๊น์๋ ๋ค๋ฅด๊ฒ admin์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์์์ ์ค์ ํ๋ OpenLDAP ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ Login ํด ์ค๊ฒ์.
Users Tab์์ OpenLDAP์ ๊ณ์ ์ ์์ฑํ๋ฉฐ ๋ง๋ค์๋ ๊ณ์ ์ด ํ์ธ ๋์์ด์.
์ด์ ์ด LAM์ ์ด์ฉํด์ OpenLDAP์ ๋ณด๋ค ํธํ๊ฒ ์ด์ฉํ ์ ์๊ฒ ๋์์ด์!
๐ง ์ฐธ๊ณ ์๋ฃ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'System ์์ ์ค > DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DevOps] Ubuntu 22.04 LTS Docker Container Install NGINX (0) | 2023.01.06 |
---|---|
[Ubuntu 22.04] apache2 Port ๋ณ๊ฒฝ (0) | 2023.01.06 |
[DevOps] Ubuntu 22.04์ SonarQube 9.5 ์ค์น (0) | 2022.12.20 |
[Infra][Spring Boot] ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋๋ฅผ ์ด์ฉํ ๋ชจ๋ํฐ๋ง (0) | 2022.12.02 |
[DevOps] JAVA Gradle JaCoCo (Code coverage) ์ค์ ํ๊ธฐ (0) | 2022.09.21 |