1.Anyframe IAM Overview

Anyframe IAM은 Java EE 기반의 엔터프라이즈 어플리케이션을 위한 보안 솔루션(사용자 인증 및 권한관리)을 제공하는 Identity & Access Management Framework 이다. Java EE 기반의 엔터프라이즈 어플리케이션은 사용자 인증 및 권한관리에 대한 다양한 요구사항을 가지고 있으며, 각각의 엔터프라이즈 어플리케이션에 대하여 이러한 기능들을 매번 새로이 개발하는 것은 많은 추가 비용과 리소스를 부담하게 한다. Anyframe IAM은 Spring Security 를 기반으로 하여 Anyframe 또는 Spring Framework 기반으로 작성된 엔터프라이즈 어플리케이션을 위한 인증 및 권한관리 기능을 제공함으로써, 개발 생산성을 향상시키고 사용자 인증 및 권한관리에 능동적이고 유연한 형태의 어플리케이션을 개발할 수 있도록 지원하는 프레임워크이다.

1.1.What is Security ?

  • IT 영역에서의 보안이란 정보 자산(시스템 / 프로그램 / 데이터..) 에 대한 허가되지 않은 접근을 막는 것을 말한다.

  • 일반적으로 인증 (Authentication) , 권한 처리(Authorization) 라는 두 주요 기능을 포함한다.

1.2.What is Spring Security ?

  • 엔터프라이즈 어플리케이션을 위한 강력하고 유연한 보안 솔루션으로, 특히 Spring 기반의 어플리케이션에 강점을 가지고 있다. 기존 Servlet 스펙 Security 는 컨테이너 별 설정 및 이식성 문제와 웹 요청(request) 에 제한된 보안만 고려하는 한계가 있는데 비하여, Spring Security 는 서비스 레이어 및 도메인 객체 수준의 보안을 제공하며 설정에 기반한 유연한 보안 적용을 기반으로 보안 레이어 컴포넌트의 재사용성이 높은 오픈 소스 보안 프레임워크이다. 다양한 환경의 많은 사이트를 통해 검증되었으며 가장 활발한 커뮤니티와 빠른 기능 개선이 이루어지는 대표적인 Spring 의 서브프로젝트이기도 하다.

1.3.Anyframe IAM의 특징

  • Spring Security 기반 IAM Core: 엔터프라이즈 어플리케이션에 설치되어 사용자 인증 및 권한관리를 제어하는 IAM Core 는 Spring Security 기반으로 작성되어 있으며, 일반적으로 DB 기반으로 구축된다. Anyframe 또는 Spring 기반의 어플리케이션에 적용시 기존 어플리케이션의 변경 영향을 최소할 수 있다.

  • 독립적인 형태의 IAM Admin Console: IAM Core 의 동작은 DB의 데이타를 기반으로 하여 구성되며, 이때 DB의 내용을 관리하기 위한 툴이 IAM Admin Console이다. 기존 엔터프라이즈 어플리케이션과 별도로 동작하므로 어플리케이션과의 독립적인 형태로 관리 기능을 구성할 수 있다.

  • Spring Security 의 강력한 기능을 그대로 계승: Spring Security 의 강력한 기능을 계승하고 확장하였으며, 유연하고 확장성 있는 형태의 사용자 인증 및 권한관리 기능을 제공하여 준다.

1.4.Why Anyframe IAM ?

  • Spring Security 는 XML 기반의 설정만 지원하므로 (2.0.X 부터는 Namespace 를 통한 간소한 설정이 가능하지만 마찬가지로 XML 설정임)사용자, 역할, 보호자원, 권한맵핑 등에 대한 관리가 어려운 기능 취약점이 존재한다.

  • 우리나라 SI 실정에 맞는 best practice 인증/권한 처리와 관리 기능의 요구사항을 표준화 / 기능 확장 / 정제하여 Web UI 화면 기반으로 일반 사용자 조작을 통해 관리가 가능토록 Spring Security 강점과 SI 프로젝트 활용성을 두루 갖춘 유연하고 강력한 IAM 프레임워크 확보가 필요하였다.

1.5.Anyframe IAM의 주요기능

1.5.1.IAM Core

Anyframe IAM의 Core 는 Spring Security 을 기반으로 하고 있으며, Anyframe 또는 Spring 기반의 비지니스 어플리케이션에 설치되어 기존 업무 코드의 변경을 최소화 화면서 사용자 인증 및 권한관리 기능을 추가할 수 있다. 특히 DB 기반으로 확장된 설정 정보를 바탕으로 동작한다는 점에서, 기존의 XML 방식으로 설정 정보를 저장하는 Spring Security 와 차이점을 지니고 있다.

  • Service Layer 및 사용자 정의 리소스 접근 제어(ACL)

    일반적으로 권한 체크는 웹 요청(request)에 대한 제어를 의미한다. Spring Security 에 기반한 IAM Core 는 웹 요청에 대한 제어 뿐만 아니라 서비스 레이어 및 도메인 객체 에 대한 권한 제어를 통해 보안을 처리할 수 있다. 또한 현장에서 요구가 많은 화면에 대한 permission 체크 기능을 제공하는 view resource 접근과 관련한 Tag 및 API 를 제공하고 있다.

  • 관심 영역의 분리

    Servlet Filter 와 Java AOP를 통한 가로채기(Interception)을 사용하여 보안을 부여하며, Spring 의 Ioc와 Lifecycle서비스 기반으로 동작하여 일반적인 업무 코드 영역과 분리되어 동작한다.

  • Database 기반의 설정

    IAM Core 의 기반이 되는 Spring Security 는 기본적으로 XML 기반의 설정을 통해 보안 설정을 통제한다. Anyframe의 IAM Core 는 일반적으로 널리 사용되는 DB 기반의 설정을 지원함으로써 XML 방식보다 보편적이며, 간단하고 유연한 방식으로 보안 관련 설정을 제어할 수 있다.

1.5.2.IAM Admin

Anyframe 은 IAM Core 동작의 기반이 되는 Database 설정을 관리하기 위한 IAM Admin 웹 어플리케이션을 제공한다. IAM Admin은 jQuery, SpringMVC, HibernateJPA 등의 기술 요소를 기반으로 하여 구축되어 있으며, 관리자 권한을 가진 사용자는 IAM Admin 의 UI 에서 제공되는 기능들을 통하여 DB 기반의 보안 설정을 조작하고 제어할 수 있다.

  • Cross Browser를 지원하는 RIA 기반의 UI

    jQuery 를 사용하여 화면 Refresh가 최소화된 동적인 UI를 제공하며 , Internet Explorer 를 포함한 Cross Browser 환경을 지원한다.

  • 타겟 어플리케이션 권한 리로드

    명시적인 권한 리로드 기능을 통하여 변경된 권한정보를 타겟 어플리케이션에 반영할 수 있으며, 클러스터링 환경에서의 권한 리로드를 지원한다.

  • 타겟 어플리케이션 정보 수집

    관리 대상 어플리케이션의 자원 정보를 수집하는 기능을 제공하여 자원 등록을 손쉽게 할 수 있도록 지원한다.

  • 시간 제한 설정 기반의 권한 관리

    특정 리소스나 역할에 대한 시간 범위를 설정하여 접근을 제어할 수 있으며, 이에 대한 예외 규칙도 설정이 가능하다.

  • Auto Complete 지원을 통한 손쉬운 자원 등록

    타켓 어플리케이션의 수집된 자원 정보를 바탕으로 보호된 자원 등록시 사용자에게 동적인 UI 기반의 가이드를 제공한다.

1.6.참조 오픈소스

Anyframe IAM에서 사용하고 있는 주요 오픈소스는 다음과 같다.