ForgeRock
- ForgeRock μ κΈ°μ
μ© IAM μ μ 곡νλ νλ«νΌμΌλ‘, μ£Όμ μ»΄ν¬λνΈλ‘ AM, DS λ±μ΄ μλ€.
- IAM, Identity and Access Management μ νμκ°μ
, λ‘κ·ΈμΈ μΈμ¦, μΈκ°, λ‘κ·ΈμΈ μ΄λ ₯κ΄λ¦¬, νμ μ 보 μμ , νν΄ λ± μΈμ¦/μΈκ° κΈ°λ₯μ΄ λͺ¨λ ꡬνλμ΄ μλ μ루μ
μ λ§νλ€.
- λ€λ₯Έ μ루μ
μΌλ‘ μ€νμμ€μΈ CNCF μ KeyCloakμ μ¬μ©ν μ μλ€.
ForgeRock AM
Introducing AM Core Concepts
- ForgeRock Access Management λ μΈμ¦, μΈκ°λ₯Ό λ΄λΉνλ μ»΄ν¬λνΈλ€.
- SSO, OIDC, OAuth2, SAML, MFA λ±μ μ§μνλ€.
- API, μΉμ¬μ΄νΈ, λͺ¨λ°μΌ μ± λ±μ μ¬μ©νλ €λ μ μ κ° λκ΅°μ§, μ΄λ€ κΆνμ κ°μ§κ³ μλμ§ νμΈνκΈ° μν΄ μ μ λ λ¨Όμ μΈμ¦, μΈκ°, SSO λ±μ ForgeRock AM μ ν΅ν΄ κ±°μΉλ€. μ΄ κ³Όμ μμ OAuth λ₯Ό νμ©ν΄ Google, Facebook λ± Social Media μμ μ 곡νλ μ μ μ μ΄λ¦, μ΄λ©μΌ λ±μ ForgeRock AM μ μ μ₯ν μ μλ€.
- μ μ κ° μ¬μ©νλ €λ μ»΄ν¬λνΈμ λ°λΌ AM κ³Ό ν΅μ νλ μΈν°νμ΄μ€κ° λ€λ₯Έλ°, λͺ¨λ°μΌ μ±μ κ²½μ° SDK λ₯Ό νμ©ν΄ AM κ³Ό ν΅μ ν μ μκ³ API, μΉμ¬μ΄νΈ λ±μ Identity Gateway λ₯Ό ν΅ν΄ AM κ³Ό ν΅μ ν μ μλ€.
Protecting an Application with Intelligent Authentication
- μ μ λ IG, Web agent, Java agent λ₯Ό ν΅ν΄ μ κ·Όνκ³ μ νλ 리μμ€μ λν μΈμ¦μ μμ²ν μ μλ€.
- IG λ μ μ μκ² AM μ ν΅ν΄ μΈμ¦μ λ°μκ²λνλλ°, μ μ λ AM μκ² μ§λ¬ΈμΈμ, μΌκ΅΄μΈμ λ±μ ν΅ν΄ SSO token μ λ°κΈλ°μ μ μλ€.
- μ΄ν μ μ λ λ°κΈλ°μ SSO token μ IG μκ² λκ²¨μ£Όκ³ , IG λ ν΄λΉ token μ΄ μ ν¨νμ§ AM μ ν΅ν΄ νμΈνλ€.
- SSO token μ΄ μ ν¨νλ€λ©΄ IG λ μ μ μκ² λ¦¬μμ€μ λν μ κ·Όμ νκ°νλ€.
- AM μ ACR level μ ν΅ν΄ μ¬λ¬ λ¨κ³μ μΈμ¦ μμ μ§μνλ€.
- μλ₯Ό λ€μ΄, μ§λ¬ΈμΈμ, μΌκ΅΄μΈμ λ³΄λ€ λμ μμ€μ μΈμ¦μ μν΄ SMS OTP λ±μ νμ©ν μ μλ€.
- AM μ νμ©ν΄ μΈμ¦ νλ‘μ°λ₯Ό μ€κ³νλ κ΄λ¦¬μλ AM μ΄ μ 곡νλ UI λ₯Ό ν΅ν΄ λλκ·Έ μ€ λλ λ°©μμ ν΅ν΄ μκ°μ μΌλ‘ μΈμ¦ νλ‘μ°λ₯Ό μ€κ³ν μ μλ€.
- Authentication Tree & Node λ ForgeRock AM μμ μ μ μΈμ¦ νλ‘μ°λ₯Ό μ€κ³ν λ μ¬μ©λλ μν°ν°λ€.
- Auth Tree λ μΈμ¦ νλ‘μ°μ μ 체 ꡬ쑰λ₯Ό μλ―Ένκ³ , Auth Tree λ₯Ό λ ν° μΈμ¦ νλ‘μ°μ μΌλΆλΆμΌλ‘ νμ©ν μ μλ€.
- Auth Node λ μΈμ¦ κ³Όμ μ κ° λ¨κ³λ₯Ό ꡬμ±νλ λ
Έλλ‘, Username Collector, Password Collector, OTP Validator λ±μ΄ μλ€. κ΄λ¦¬μλ Auth Node λ₯Ό μ‘°ν©νμ¬ Auth Tree λ₯Ό ꡬμ±ν μ μλ€.
- ForgeRock AM μμ μ 곡νλ MFA Auth Node λ₯Ό νμ©ν΄ λ λμ μμ€μ μΈμ¦μ ꡬνν μ μλ€.
- MFA λ κΈ°λ³Έμ μΈ ID, PW μΈμ¦ λ°©μ μΈμ λ€λ₯Έ μ±λ(λ€λ₯Έ νμ
μ νλ‘ν μ½, λ€λ₯Έ λλ°μ΄μ€)μμ μΆκ°μ μΈ λͺ¨λ°μΌ Authenticator μ±μ ν΅ν νΈμ λλ μ΄λ©μΌ, λ¬Έμλ±μ ν΅ν OTP λ₯Ό νμ©ν μΈμ¦μ κ±°μΉλ κ³Όμ μ μλ―Ένλ€.
- ForgeRock μ΄ μ 곡νλ MFA μΈ λ€λ₯Έ λꡬλ€λ μ μ½κ² μ°λ κ°λ₯νλ€.
Controlling Access to an Application with AM Authorization
- ForgeRock AM μ Policy λ₯Ό ν΅ν΄ μ μ κ·Έλ£Ήμ 리μμ€ μ κ·Όμ μ μ΄ν μ μλ€.
- μ μ κ° IG/SDK λ±μ ν΅ν΄ 리μμ€μ λν μ κ·Όμ μμ²νλ©΄, IG/SDK λ AM μκ² μ κ·ΌκΆνμ λν νμΈμ μμ²νκ³ AM μ΄ μ 곡νλ μλ΅μ λ°λΌ 리μμ€μ λν μ κ·Όμ μ μ΄ν μ μλ€.
- Subject, Action, Resource, Condition μ ν΅ν΄ Policy λ₯Ό μ μν μ μλ€.
- Subject: λ£°μ΄ μ μ©λ λκ΅°κ°
- e.g. μΈμ¦λ μ μ λ° κ·Έλ£Ή, OIDC, JWT claim λ±
- Actions: 무μμ ν μ μλμ§
- e.g. μΌλ°μ μΈ HTTP Method
GET
, POST
λ± μΈμλ Database INSERT
, SELECT
λ±λ μ€μ ν μ μμ
- Resources: μ΄λ€ 리μμ€λ₯Ό μ νν κ²μΈμ§
- e.g. μΌλ°μ μΈ URL
https://fec.example.com
μ΄λ, DB Table λ κ°λ₯
- Conditions: λ£°μ΄ μ μ©λ 쑰건
- e.g. IP κ°
192.168.100.22
μΌ κ²½μ°
Protecting REST APIs and Integrating Mobile Applications
- ForgeRock AM μ΄ μΈμ¦ μλ²λ‘μ¨ OIDC μ OAuth 2.0 λ₯Ό μ΄λ»κ² μ§μνλμ§ μμ보μ.
- OAuth 2.0 μ μΈκ°λ₯Ό μν νλ‘ν μ½μ΄λ€. 리μμ€ μμ μκ° λ¦¬μμ€μ λν μ κ·Όμ νμ©νκ³ μΆμ λ Access Token μ λ°κΈνμ¬ Access Token μ κ°μ§ μ¬μ©μκ° λ¦¬μμ€μ μ κ·Όν μ μλλ‘ νλ€. λλ¬Έμ 리μμ€μ μ κ·Όνλ €λ μ μ λ μλ¬΄λ° Credentials λ₯Ό μ 곡νμ§ μμλλλ©° 리μμ€λ₯Ό μ 곡νλ μͺ½ μμ λ³ΈμΈμ΄ λ°κΈν Access Token μ validity λ§ νμΈνλ©΄ λλ€.
- OIDC λ μΈμ¦μ μν νλ‘ν μ½μ΄λ€. OAuth 2.0 handshake μμμ μλνλ©° Access Token μ΄μΈμλ μΆκ°μ μΌλ‘ ID Token μ λ°κΈνμ¬ μΈμ¦ κΈ°λ₯μ μ 곡νλ€. ν΄λΌμ΄μΈνΈκ° ForgeRock AM μ μμ²νλ μλν¬μΈνΈλ OAuth 2.0 κ³Ό κ°μ§λ§, Scope λ₯Ό
openid
λ‘ μ€μ νμ¬ μμ²ν κ²½μ° ID Token μ λ°ννλ λ°©μμ΄λ€.
- Access Token μ Bearer Token νμμΌλ‘ μ΄λ£¨μ΄μ Έ μκΈ° λλ¬Έμ νμ·¨λ κ²½μ° μ무λ 리μμ€μ μ κ·Όν μ μκ²λλ€. λλ¬Έμ νμ TLS/SSL μ μ¬μ©ν΄μΌνλ©°, μΆκ°μ μΌλ‘ Proof-of-Possession μ΄λΌλ λ°©μμ ν΅ν΄ μμ²μ΄ μ€μ λ‘ Access Token μ λ°κΈν΄μ€ μ μ μκ²μ μ¨ κ²μΈμ§ νμΈν μ μλ€. Access Token μ λ°κΈν λ ν΄λΌμ΄μΈνΈμ identity λ₯Ό ν¨κ» 첨κ°νλ λ°©μμΌλ‘ AM κ³Ό Resource Server κ° μ΄λ₯Ό λμ‘°νμ¬ λμΌν μ μ κ° μμ²ν κ²μΈμ§ νμΈνλ λ°©λ²μ΄λ€.
- Scope μ κ²½μ° OIDC Provider, μ¬κΈ°μ ForgeRock AM μκ² μμ² μ, Claims λ₯Ό λ°ννλ€.
- Scope: Subscription μ΄λΌλ©΄,
- Claims: Subscription Level, Subscription Expiry, λ±λ± μ΄ λ°νλλ€.
- OIDC λ Scope: openid λ‘ μμ²νλ κ²μ΄κ³ , λ°νλλ Claims κ° sn, givenName, cn λ± μ μ μ 보λ₯Ό λ°ννκΈ° λλ¬Έμ μΈμ¦ μν μ μνν μ μλ κ²μ΄λ€.
- λͺ¨λ°μΌ μ ν리μΌμ΄μ
μ κ²½μ° ForgeRock μμ μ 곡νλ iOS, Android, JS SDKs λ€μ ν΅ν΄ AM μ μ½κ² μ°λν μ μλ€.
Realms
- AM μμ μΈμ¦ μ μ±
κ³Ό μ¬μ©μ κ·Έλ£Ήμ 격리μν€κΈ° μν 보μ λλ©μΈμ΄λ€.
/
: κΈ°λ³Έ realm
/banking
: μν μ¬μ©μμ© μΈμ¦/μΈκ° realm
/admin
: κ΄λ¦¬μ μ μ© realm
- Realm λ³λ‘ Auth Tree, OAuth2, Policy λ± λ
립μ μΈ μ€μ μ΄ κ°λ₯νλ€.
File-Based-Config, FBC
- AM μ μ€μ νκΈ° μν΄ Config Store DS 컨ν
μ΄λλ₯Ό νμ© λμμΌλ‘ λμ¨ μ€μ κ΄λ¦¬ λ°©μμΌλ‘, μ½κ² λ§ν΄ νμΌνμμΌλ‘ μ€μ κ°μ μ μ₯νμ¬ AM 컨ν
μ΄λ μ΄λ―Έμ§μ ν¬ν¨μν€λ κ²μ λ»νλ€. μ΄κ³³μ μ§μ μμ±ν Auth Tree, Auth Node λ±μ΄ JSON ννμ νμΌλ‘ μ μ₯λλ€.
- Admin UI μμ λ³κ²½ν μ€μ κ°λ€μ AM Container μ
/home/forgerock/openam/config/
μ νμΌ ννλ‘ μ μ₯λκ³ , μ΄ νμΌλ€μ λ°νμΌλ‘ 컨ν
μ΄λ μ΄λ―Έμ§λ₯Ό ꡬμ±νμ¬ μ»¨ν
μ΄λ λ°°ν¬ μ λμΌν μ€μ μ μ μ§ν μ μλ€.
Amster
- Amster λ AM μ REST API λ₯Ό λνν CLI κΈ°λ° κ΅¬μ± λꡬλ‘, JSON κΈ°λ°μ μ€μ μ Import, Export ν μ μκ³ μ΄λ₯Ό νμ©ν μ€ν¬λ¦½νΈ μλνκ° κ°λ₯νλ€.
- κ°λ¨ν λ§ν΄ Admin UI μμ ν μ μλ μμ
μ Amster λ₯Ό μ΄μ©ν΄ CLI λ‘ μ€μ ν μ μλ€.
- Realm μμ±/μμ
- μΈμ¦ λͺ¨λ ꡬμ±
- μ μ±
μ μ λ±
- Amster λ‘ Export λ μ€μ νμΌλ€μ JSON ννλ‘ μ μ₯λκ³ μ΄λ₯Ό FBC λΌκ³ λΆλ₯Έλ€. ν΄λΉ νμΌλ€μ VCS μ μ μ₯ν΄ AM Container λ₯Ό μλ‘ μ€νν λ λ§λ€ λμΌν μ€μ κ°μ μ μ§ν μ μλ€.
ForgeRock DS
- ForgeRock Directory Services λ μ¬μ©μ, κ·Έλ£Ή, ν ν° λ± λͺ¨λ μμ΄λ΄ν°ν° μ 보λ₯Ό μ μ₯νλ LDAP κΈ°λ°μ λλ ν 리 μλ²λ€.
- LDAP, Lightweight Directory Access Protocol μ λ€νΈμν¬ μμμ μ‘°μ§μ΄λ μ‘°μ§ λ΄ νμΌ, κ°μΈμ 보, λλ°μ΄μ€ μ 보 λ±μ μ°Ύμλ³Ό μ μλλ‘ νλ νλ‘ν μ½μ΄λ€.
PingDS Concepts
- Directory Service λ LDAP νΉμ HTTP ννλ‘ μ κ·Όν μ μλ λλ ν°λ¦¬ν μ μ₯μ μ λλ‘ λ³Ό μ μλ€. μ μ₯λλ λ΄μ©μ μ λ³κ²½λμ§ μλ μ μ μ 보, μ ν리μΌμ΄μ
μ 보 λ±μ΄ μ μ₯λλ€. μ μ μ 보λ κ΅¬μ‘°κ° λλΆλΆ μΌμ νκ³ μΈμ¦, κΆν, μ‘°μ§ κ΅¬μ‘° κ΄λ¦¬ λ±μ λͺ©μ μΌλ‘ μ½κΈ° μ€μ¬μ λ°μ΄ν°κ° μ μ₯λκΈ° λλ¬Έμ LDAP μ μ£Όλ‘ μ μ₯νμ¬ μ¬μ©νλ€.
- PingDS λ LDAPv3 νμ€μ κΈ°λ°μΌλ‘ Java Platform μμμ μλνλλ‘ μ€κ³λμμΌλ©°, κ³ μ±λ₯, κ³ κ°μ©μ±μ μλνλ€.
- PingDS λ ν¬κ² 3κ°μ§ μ»΄ν¬λνΈλ‘ μ΄λ£¨μ΄μ§λλ°,
- Directory Server: LDAP Client μκ² Directory λ°μ΄ν°λ₯Ό μ 곡νλ μ£Όμ²΄λ‘ LDAP Server λ₯Ό ꡬμ±νκΈ° μν΄ μ΅μ 1κ° μ΄μ νμνλ€. LDAP μΈμ HTTP μμ μ§μνλ€.
- LDAP Proxy Server: λΆμ°λ Directory Server μλ¨μμ Single Point of Access μν μ ν΄μ£Όλ Server. LDAP μ HTTP μ λ€λ₯΄κ² FTP λ SQL μ²λΌ Stateful νκΈ° λλ¬Έμ Proxy μμ LDAP μ μ© Proxy λ₯Ό μ¬μ©ν΄μΌνλ€. HTTP λ‘ νλ‘μλ₯Ό ν΅νκ³ μΆμ κ²½μ° HDAP μ ν΅ν΄ HTTP μμ²μ LDAP μΌλ‘ λ³νμμΌμ€μΌνλ€.
- Replication Server: λΆμ°λ Directory Server λ€μ λκΈ°νλ₯Ό μννλ μλ²λ€μ΄λ€.
- DS λ ν¬κ² 5κ°μ§ λ°μ΄ν°λ₯Ό μ μ₯νλλ°,
- User Data λ BerkeleyDB Java Edition Backend Database μ μ μ₯λλ©°, local λμ€ν¬μ μμΉνλ€.
- Server Config Data λ κ° μλ²μ local μ LDIF ννλ‘ μμΉνλ€.
- Schema μμ LDIF ννλ‘ μ μ₯λλ€.
- Log files λ local μ μ μ₯λκ³ ,
- Backup files λ local μ μ μ₯λλ€.
- DS μ μ μ₯λλ LDAP Data Model μ ꡬ쑰λ dn, objectClass, κ·Έλ¦¬κ³ λ
Έλμ νλ λ±μ ν¬ν¨νλ€.
- LDAP μμ² νλ¦μ, LDAP Client κ° DS μ μμ²μ 보λ΄λ©΄, DS λ΄λΆ LDAP Connection Handler κ° μμ²μ νμ λ°μλκ³ Core DS μ μμ²μ μμλλ‘ μ λ¬ν λ€, Backend Data μμ λ°μ΄ν°λ₯Ό λ°ννλ€.
- AM μ Schema μ λ°λΌ μ¬λ¬κ°μ§ DS λ₯Ό μ¬μ©νλλ°, λνμ μΌλ‘ μ μ λ°μ΄ν°λ₯Ό μ μ₯νλ Identity Store, ν ν° μ 보λ₯Ό μ μ₯νλ CTS Store, μ€μ κ°μ μ μ₯νλ Config Store λ±μ΄ μλ€.
- DS λ Replication Server μ ν¨κ» λ°°ν¬λμ΄ κ³ κ°μ©μ±μ 보μ₯νλ€. λ°μ΄ν°μ μΌκ΄μ±μ μν΄ Replication Server κ° changeLog μ κ°μ§κ³ μλ‘ λ€λ₯Έ Replication Server μκ² λ°μ΄ν°μ λ³νλ₯Ό μλ €μ€λ€. Replication Server μ Directory Server λ μλ‘ λ€λ₯Έ νΈμ€νΈμ λ°°ν¬λμ΄ μ΄μν μ μλ€.
- DS Backend λ°±μ
μ κ°λ°νκ²½μ μν local λμ€ν¬ λ°±μ
κ³Ό μ΄μνκ²½μ μν remote λ°±μ
λͺ¨λ μ§μνλ€. κΈ°λ³Έμ μΌλ‘ signed, encrypted λμ΄μμΌλ©° AWS S3 λ±μ λ°±μ
ν μ μλ€.
DS Proxy Server
- DS Proxy Server λ DS μλ¨μμ LDAP Client λ€μ μμ²μ λ°μΌλ©΄μ λ€μν μΌμ μννλ€.
- λ¨Όμ LDAP Client μ LDAP account λ‘ λ°μΈλ©λ 컀λ₯μ
μ Proxy account μμ μΆκ°μ μΌλ‘ λ°μΈλ©νμ¬ μΈκ°λ DS μ μ κ·Όνμ¬ λ§μΉ LDAP Client κ° μ§μ μ μΌλ‘ DS μ μ°κ²°λ κ² μ²λΌ μλνλ€.
- λν, λ‘λλ°Έλ°μ± μν μμ μννλλ°, μ€λμ λ°λΌ μμ²μ λΆμ°νκ³ , Failover μμ μ§μνλ€.
Using Directory Servers in PingAM Deployment
- DS λ κΈ°λ³Έμ μΌλ‘ AM κ³Ό ν¨κ» λ°°ν¬λλ©° λͺ¨λ μ μ΄λ 3κ° μ΄μμ ReplicaSet μΌλ‘ λ°°ν¬λλ€.
- IAM κΈ°λ₯μ μν PingAM 컨ν
μ΄λ
- User Data λ₯Ό μν Identity Store DS 컨ν
μ΄λ
- Session, Access Token λ±μ μν CTS Store DS 컨ν
μ΄λ
- AM μ μ€μ μ μν Config Store DS 컨ν
μ΄λ (FBC λ₯Ό νμ©νλ©΄ κ΅³μ΄ λ°°ν¬νμ§ μμλ λλ€.)
- μ λͺ¨λ 컨ν
μ΄λκ° λ°°ν¬λλ©΄ μ΅μνμ IAM μ ν리μΌμ΄μ
μ΄ μλν μ μλ€.
App Store
- PolicySet κ³Ό Application Data λ₯Ό μ μ₯νλ DS 컨ν
μ΄λ
- Policy Store λ μΈμ¦/μΈκ° μ μ±
μ 보λ₯Ό μ μ₯νκ³
- Application Store λ 리μμ€/μ ν리μΌμ΄μ
λ±μ μ 보λ₯Ό μ μ₯νλ€
- μ¦, AM μμ νμ©λλ μ μ±
, 리μμ€ μ 보λ€μ μ μ₯ν΄λλ DS λ€. Admin UI μμ μ§μ μ€μ ν μλ μμ§λ§, μ£Όλ‘ Amster λ₯Ό ν΅ν΄ μ μ±
, 리μμ€ μ 보λ₯Ό Import λλ Export νλ€.
dsconfig
dsconfig \
set-http-endpoint-prop \
--endpoint-name /api \
--set authorization-mechanism:"HTTP Basic" \
...
- Identity Store, CTS Store, App Store λ±μ DS 컨ν
μ΄λλ₯Ό μ€μ νκΈ° μν CLI ν΄λ‘ κΈ°λ³Έμ μΌλ‘ 컨ν
μ΄λμ λ΄μ₯λμ΄μλ€.
- LDAP μλ²μ schema, index, backend, replication, access control λ±μ μ€μ νλ€.
- 컨ν
μ΄λ μ€ν μ dsconfig shell script λ₯Ό ν¨κ» ν¬ν¨νμ¬ DS 컨ν
μ΄λκ° μ¬μ€νλ λ λ§λ€ μ€μ μ μλνν μ μλ€.
References