KR100968303B1 - Java에 대한 일반적인 선언적 권한부여 방법, 시스템및 컴퓨터 저장 매체 - Google Patents
Java에 대한 일반적인 선언적 권한부여 방법, 시스템및 컴퓨터 저장 매체 Download PDFInfo
- Publication number
- KR100968303B1 KR100968303B1 KR1020077001797A KR20077001797A KR100968303B1 KR 100968303 B1 KR100968303 B1 KR 100968303B1 KR 1020077001797 A KR1020077001797 A KR 1020077001797A KR 20077001797 A KR20077001797 A KR 20077001797A KR 100968303 B1 KR100968303 B1 KR 100968303B1
- Authority
- KR
- South Korea
- Prior art keywords
- software application
- authorization
- application object
- policy
- group
- Prior art date
Links
- 238000013475 authorization Methods 0.000 title claims abstract description 217
- 238000000034 method Methods 0.000 claims abstract description 110
- 230000008859 change Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims 2
- 230000009471 action Effects 0.000 description 19
- 238000011161 development Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 3
- 244000046052 Phaseolus vulgaris Species 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 1
- 235000014552 Cassia tora Nutrition 0.000 description 1
- 244000201986 Cassia tora Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008260 defense mechanism Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 소프트웨어 애플리케이션에 액세스하려는 사용자에 대한 보안과 권한부여 정책을 설정하기 위한 방법, 시스템, 그리고 프로그램 저장 장치에 관한 것으로, 이 방법은 데이터 프로세서에서 실행되고 XML 포맷을 포함하는 애플리케이션 객체 기술 문서로부터 하나 이상의 애플리케이션 객체 그룹을 생성하는 단계, 각 애플리케이션 객체에 대한 권한부여 정책을 생성하는 단계, 선택된 애플리케이션 객체 그룹을 액세스 컨트롤러에 전송하는 단계, 권한부여 정책에 기반하여, 선택된 애플리케이션 정책 그룹에 액세스하려는 사용자를 위한 소프트웨어 애플리케이션의 배치 시에 액세스 컨트롤 파라미터를 설정하는 단계를 포함한다. 이 방법은 권한부여 정책을 위한 환경 변수를 지정하는 단계, 환경 변수들의 선언적 사양들을 수정하고 애플리케이션 객체의 속성에 대해 정의된 제한을 수정함으로써 권한부여 정책을 변경하는 단계, 동일한 권한부여 정책 분류기를 사용하는 권한부여 정책의 변경된 클래스를 구현하는 단계, 그룹화 파라미터를 사용하여 애플리케이션 객체 그룹을 지정하는 단계를 더 포함한다.
Description
본 발명의 실시예는 일반적으로 소프트웨어 애플리케이션 개발, 보다 구체적으로 자바 기반(Java®-based) 보안 및 권한부여 소프트웨어 애플리케이션 개발 시스템 및 방법에 관한 것이다.
보안과 권한부여는 소프트웨어 시스템의 개발, 배치, 동작에 매우 중요한 역할을 수행한다. (미국 캘리포니아주 산타 클라라 소재의 썬 마이크로시스템스사에서 입수할 수 있는) Java®는 컴포넌트 기반 소프트웨어 및 시스템을 위한 가장 유명한 플랫폼이다. 더욱이, Java® 보안은 전자상거래 기업 시스템의 핵심 역할을 수행한다. 보안 특징부는 통상적으로 애드혹(ad-hoc) 방식으로 애플리케이션에 내장되거나, 컨테이너 관리 인가 및 권한부여(container managed authentication and authorization)를 사용하여 (미국 캘리포니아 산타 클라라 소재의 선 마이크로시스 템스사에서 입수할 수 있는) 엔터프라이즈 J2EE®(Java®2 Platform Enterprise Editioin) 애플리케이션에 집적되어 있다. 이와 같은 상황에는 여러 이유가 있다. 첫째로, 보안은 애플리케이션의 거의 모든 컴포넌트에서 다루어져야 한다. 그러나, 소프트웨어 개발에서의 통합은 집중화되어 있지 않다. 두 번째로, 입도적(granular) 보안 개발을 위한 사용하기 편한 표준 프로세스의 부재를 들 수 있다. J2EE® 시스템에서는 컨테이너가 메소드 레벨의 보안과 역할 기반 액세스 컨트롤(role-based access control)을 제공하나 여러 상황에서 충분하지는 않다. 전체적으로, 로우 레벨(low-level)의 보안 개발은 보안 구현을 융통성없게 하고 애플리케이션에 긴밀히 결합되게 한다.
JAAS(Java® Authentication and Authorization Service)는 사용자 인증과 액세스 컨트롤 기능을 제공하는 Java® 패키지이다. 다른 말로, JAAS는 후술하는 두 가지 목적을 위해 사용될 수 있는 Java® 애플리케이션 프로그램 인터페이스(APIs)이다. 첫째로 사용자의 인증을 위해, 코드가 애플리케이션, 애플릿, 빈 또는 서블릿의 형태로 구동되고 있는지 여부와 관계없이 누가 현재 Java® 코드를 실행하고 있는지를 신뢰성 있고 안전하게 파악하는 목적과, 둘째로 사용자의 권한부여를 위해, 코드가 애플리케이션, 애플릿, 빈 또는 서블릿의 형태로 구동되는지 여부와 관계없이 인증받은 사용자가 리소스(Java® 코드 또는 Java® 코드에 의해 액세스되는 객체/엔티티)에의 접근이 허용되는지 결정하는 목적이 그것이다. 일반적으로, JAAS 인증은 착탈형 방식(pluggable fashion)으로 실행된다. 이는 Java® 애플리케이션이 기초(underlying) 인증 기술들로부터 독립적으로 남을 수 있도록 해준다. 게다가, 새로운 또는 향상된 기술들은 애플리케이션 자체에 수정을 가하지 않고도 적용이 가능하다.
Java®는 세 가지 유형의 방어 메커니즘을 사용한다. 바이트 코드 검증기(byte-code verifier), 클래스 로더(class loader) 그리고 보안 관리자(security manager)이다. Java® 버전 1.0에서는 애플릿이 샌드박스(sandbox) 내에서 동작하여, 그들이 실행되고 있는 장치에 영향을 주거나 민감한 정보(sensitive information)를 얻어내는 애플릿의 능력에 제한이 있었다. 그리하여 국부적으로 액세스될 수 있는 것은 많지 않았다. 그 후의 Java® 버전에서는, 애플릿을 실행하고 있는 머신이 서명 정보(signing information)에 기초하여 허용하는 경우에는 애플릿이 샌드박스를 벗어날 수 있게 하였다. 유연하고 세분화된(fine-grained) 액세스 컨트롤을 지원하기 위해, Java® 버전 1.2는 정책 기반(policy based) 보안 아키텍처를 제공한다. 정책은 다양한 위치에 있는 코드를 위한 퍼미션(permission)의 집합 및 다양한 서명자(signers)들에 의해 정의된다. 퍼미션은 특정 리소스(resource)상의 특정 액션들에의 접근을 허용한다. 통상적으로, 리소스 이름들과 그들에 관계된 액션들은 정책 파일에 열거된다. 도 1은 Java®에서 전형적인 정책 파일을 도시한다.
Java® 버전 2에서는, 과거 SecurityManager에 의해 제공되던 두 가지 기능, 다시 설명하면 보안 정책의 설정과 보안 정책의 시행이 분리되었다. java.security.policy 추상 클래스가 보안 정책의 설정을 위하여 사용되고 AccessContorller가 보안 시행에 사용된다. 하위 호환성(backward compatibility)을 위하여, SecurityManager 클래스는 여전히 존재하나 결정을 위해 AccessController를 참조하게 된다. java.policy에서는, 퍼미션들은 코드 소스(code-source)와 연관되어 있다. 이로 인해, 사용자 또는 역할 기반 퍼미션들을 갖고 있지 않다. 도 2는 AccessController를 사용하여 Java® 메소드를 보호하는 전형적인 코드를 도시한다. 도 2에서 도시된 예는 리소스에 액세스하기 전에 AccessController를 호출함으로써 어떻게 리소스가 보호되는 지를 도시하고 있다. AccessController가 애플리케이션의 현재 권한부여 정책에 따라서 요청된 퍼미션을 확인한다. 만약 정책 파일에 정의된 퍼미션이 요청된 퍼미션을 포함하면, 단순히 메소드 "checkPermission" 커맨드가 리턴된다. 그렇지 않은 경우에는 AccessControlException이 개시된다.
상기에서 언급하였듯이, JAAS는 사용자 인증과 액세스 컨트롤 기능을 제공하는 API들의 집합이다. JAAS는 신뢰성 있고 안전하게 현재 누가 Java® 코드를 수행 하고 있는지, 그렇게 하도록 허용되어 있는지를 판단한다. 게다가, JAAS는 표준 착탈형 인증 모듈(Pluggable Authentication Module, PAM) 프레임워크의 Java® 기술 버전을 구현한다. 이는 Java® 애플리케이션이 기초 인증 메커니즘으로부터 독립적으로 남을 수 있게 해준다.
JAAS는 두 가지 주요한 컴포넌트, 인증과 권한부여를 포함한다. JAAS는 서브젝트 기반(subject based) 정책들을 Java® 버전 2 보안 모델에 더해준다. 퍼미션은 CodeSource에 기반하여 부여될 뿐만 아니라 사용자 실행 코드에 기반하여 부여되기도 한다. 이를 위해 먼저 사용자가 인증된다. JAAS 분배(JAAS distribution)는 사용자로부터 사용자 아이디와 암호를 얻어오는 다양한 LoginModules 구현부를 포함한다. LoginContext는 로그인 구성 파일을 사용하여 인증을 위해 어떠한 LoginModule을 이용하여야 할지 결정한다. Subject 클래스는 인증된 사용자의 자격 정보(credential)를 인캡슐레이트하기 위해 사용된다. 하나의 서브젝트가 주체(principal)라고 불리는 다수의 아이덴티티를 가질 수 있다. JAAS 정책 파일에서 각각의 승인 명령문(grant statement)은 주체와 연관된다. 서브젝트와 연관된 각 주체에 대해서, AccessController는 PolicyFile로부터 퍼미션들을 얻어서 요청된 퍼미션이 이에 포함되는지를 확인한다. 그렇지 않을 경우, AccessController는 AccessControlException을 개시한다. 도 3은 JAAS에서 주체 기반 권한부여를 위한 전형적인 정책을 도시한다.
J2EE® 아키텍처에서, 컨테이너는 자신이 호스트하는 컴포넌트들과 그들의 호출자들 사이에서 권한부여 경계 역할을 한다. 컨테이너는 호출 코드의 사용자의 신원을 입증한다. 호출된 컴포넌트, EJB(Enterprise JavaBeansTM ,미국 캘리포니아주 산타 클라라 소재의 선 마이크로시스템스사에서 입수할 수 있음), 웹 컴포넌트로의 액세스는 호출자들의 보안 속성과 호출된 컴포넌트에 액세스하기 위해 필요한 속성을 비교하여 결정한다. 선언적 권한부여(declarative authorization)에서, 배치자가 J2EE® 애플리케이션을 위한 컨테이너 시행 액세스 규칙(container-enforced access control rules)을 설정한다. 배치자는, 일반적으로 애플리케이션 어셈블러에 의해 제공되는, 애플리케이션 퍼미션 모델을 런타임 환경에 특정된 메카니즘과 매핑시킨다. 배치 기술자(deployment descriptor)는 보안 역할들과 그에 관계된 다양한 컴포넌트로의 액세스 권한을 정의한다. 배치자는 특정 호출자에게 보안 역할을 할당하여 런타임 환경에서 사용자의 접근 권한을 설정한다. 예를 들어, 배치자는 보안 역할을 구동 환경(operational environment)에서 주체 아이덴티티의 리스트에 매핑할 수 있다. 이러한 아이덴티티들 중 하나로 인증된 호출자들은 역할에 의해 나타나는 특권을 할당받는다. J2EE® 컨테이너는 디스패칭 메소드가 컴포넌트를 호출하기 전에 액세스 컨트롤 결정을 내린다. 그러므로, 선언적 액세스 컨트롤은 메소드의 입도(granularity)에 따라 할당된다.
J2EE® 컨테이너는 이러한 액세스 결정 과정에서 컴포넌트의 로직이나 상태 는 고려하지 않는다. 그러하기 위하여, 프로그램적 권한부여(programmatic authorization)는 코드 개발자에 의해 수행될 필요가 있다. 컴포넌트는 세분화된 액세스 컨트롤을 수행하기 위해 두 가지 방법을 사용할 수 있다. EJBContext.isCallerInRole(EJB 컴포넌트용)와 HttpServletRequest.isUserInRole (웹 컴포넌트용)이 그것이다. 컴포넌트는 호출자가 컴포넌트에 의해 선택된 특권을 부여받았는지를 호출의 파라미터, 컴포넌트의 내부 상태, 또는 런타임 파라미터와 같은 기타 요인들에 기반하여 판단한다. 그러나, 선언적 권한부여와 프로그램적 권한부여 사이에는 트레이드오프(trade-off)가 존재한다. 선언적 권한부여는 배치자에 의해 구성되는 외부 액세스 컨트롤 정책인 반면에 프로그램적 권한부여는 컴포넌트 개발자에 의해서 애플리케이션에 내장된 내부 정책을 통한다. 내부 정책이 보다 세분화된 반면에 외부 정책이 보다 유연하다. 더욱이, 외부 정책은 투명한 반면에 내부 정책은 애플리케이션 내에 은닉되어 있다. 예를 들어, "직원들은 그들 자신의 연봉 정보에만 접근할 수 있다" 라는 권한부여 정책을 제공하기 위해서는, 프로그램적 권한부여가 필요하고, 이는 장래에는 필요하다고 하더라도 변경될 수 없다.
더욱이 JAAS는, CodeSource 기반이고 평문 포맷(plaintext format)의 정책 파일 구현인 기존의 Java®의 보안 모델 상에서 구축된다. JAAS는 특정 컴포넌트에 의해 액세스되는 클래스를 기반으로 권한부여를 구현한다. 그러나, 이는 LDAP(Lightweight Directory Access Protocol)와 같은 맞춤형 보안 저장소(custom security repositories)를 JAAS와 함께 사용하고자 하는 기업 애플리케이션에는 충분하지 않을 수 있다. 또한, 기업간 전자 상거래에서는, 가격 계약(a pricing contract)이 다른 계약과는 서로 다른 액세스 컨트롤 정책들을 가질 수 있다. 셀프서비스 경매 애플리케이션에 대한 사양은 "등록된 사용자는 누구나 경매를 부칠 수 있으나, 그 경매를 부친 사람만이 경매를 수정할 수 있다"라는 요구조건을 가질 수 있다. 그러므로, 많은 Java® 애플리케이션은 권한부여 요구조건을 만족시키도록 JAAS를 확장할 필요가 있다. JAAS의 착탈형 특징으로 인해, 자신만의 다양한 인증과 권한부여 서브 모듈을 작성하여 JAAS의 초기 형태를 변경할 수 있다. 위의 예제에 기술된 권한부여 요구조건을 위하여는, 다음의 초기 구현들 중 하나 또는 그 이상을 변경해야 할 필요가 있을 수 있다.
ㆍjava.security.Permission : AccessController.checkPermission (Permission perm)은 호출자가 호출된 CodeSource의 동작을 수행할 권한을 가졌는지 여부를 판단하기 위하여 호출된다. 퍼미션 객체 perm은 리소스에 필요한 액세스를 나타낸다. 퍼미션 객체는(어떠한 액세스가 필요할지를 나타내는 리소스를 가리키는) 퍼미션의 이름, 리소스가 액세스되는 액션 등을 지정할 수 있다. 퍼미션 클래스는 AccessController에 의해 호출되는 내부 메소드를 구현하여 권한부여된 퍼미션이 요구된 퍼미션을 포함하는지를 판단한다. 클래스 인스턴스 레벨 권한부여 구현을 위해서, 객체 인스턴스를 자신의 필드의 하나로 가지는 새로운 퍼미션들의 구현이 필요하다. 그 객체는 권한부여들을 결정하기 위해서 내부 메소드에 사용될 수 있다.
ㆍjava.security.PermissionCollection : 이 추상 클래스는 퍼미션 객체들의 모음을 나타내기 위해 사용된다. 이 클래스는 권한부여된 퍼미션을 저장하는 방식과, 그들과 요청된 퍼미션을 비교하여 권한부여된 퍼미션이 요청된 퍼미션을 포함하는지 판단하는 방식을 원하는 데로 구현할 수 있다.
ㆍjava.security.Policy : 이는 Java® 애플리케이션 환경에서 보안 정책을 저장하기 위한 추상 클래스이다. AccessController가 CodeSource상의 인증된 서브젝트를 위한 퍼미션을 얻기 위하여 정책 구현부에 접촉한다. 정책 객체는 자신의 정책 사양을 참조하여 허용되는 퍼미션들을 열거하는 적절한 PermissionCollection 객체를 리턴한다. 초기값으로, sun.security.provider.PolicyFile 구현부가 정책 구현부를 위해 사용된다. 다른 구현부를 통해서, 정책이 쓰여지는 방식(예를 들어, LDAP나 소프트웨어 애플리케이션) 또는 권한부여가 의존하는 추가적인 파라미터를 변경할 수 있다.
ㆍjavax.security.auth.spi.LoginModule : LoginModule은 인증 제공자(authentication provider)에 의해 구현되는 인터페이스를 기술한다. 사용자 상호작용을 초기 설정으로 수행하는 콜백으로부터 사용자 이름과 비밀번호를 검색한다. LoginModule은 인증을 외부 어댑터로 전달하기 위해 확장될 수 있다.
ㆍjava.security.Principal : Principal 인터페이스는 개인, 조직, 그룹, 또는 로그인 아이디와 같은 엔티티를 나타내기 위하여 사용되는 추상적인 개념을 나 타낸다. Group, KerberosPrincipal 등은 Principal의 잘 알려진 구현들이다. Principal을 확장함으로써 권한부여를 위해 사용되는 맞춤형 프로퍼티(custom property)를 추가할 수 있다.
그러나, JAAS의 한계 중 하나는 클래스 인스턴스 레벨의 권한부여를 지원하지 않는다는 점이다. 즉, JAAS의 권한부여는 클래스명을 기초로 하여 실행되며 클래스의 특정 인스턴스를 기초로 하여 실행되지는 않는다. 예를 들어, 웹 기반 셀프서비스 경매 애플리케이션의 사양은 "등록된(인증된) 사용자는 누구나 경매를 부칠 수 있으나, 그 경매를 부친 사람만이 경매를 수정할 수 있다"와 같은 요구조건을 가질 수 있다. 이는 어떠한 사용자라도 경매 클래스 인스턴스를 만들기 위해 작성된 코드를 실행할 수 있으나, 그 인스턴스를 소유한 사용자만이 경매를 수정하기 위한 코드를 실행할 수 있다는 것을 의미한다. 통상적으로, 경매 인스턴스를 생성한 자가 소유자가 된다. 이것이 내포하는 바는 같은 역할의 사람들이 그들의 속성이나 그들이 과거에 행하였던 액션에 기초하여 서로 다른 액세스 권한을 가질 수 있다는 것이다. 불행하게도, 이런 종류의 권한부여는 JAAS를 사용해서는 지원될 수 없다.
JAAS 권한부여는 보안 정책을 사용하는 기존의 Java® 보안 아키텍처를 확장하여 어떠한 액세스 권한이 실행 코드에 부여되었는지를 특정할 수 있다. 이 보안 아키텍처는 Java® 버전 2 플랫폼에서 제공되듯이 코드 중심(code centric)이다. 다시 말하면, 퍼미션들은 코드 특성, 즉 코드가 어디서부터 왔는지 그리고 디지털 방 식으로 서명되었는지, 그렇다면 누구에 의하였는지에 기반하여 부여된다. JAAS가 Java® 2 SDK(Software Development Kit)에 통합됨에 따라, java.security. Policy API가 주체 기반 요청을 처리하고, 초기 정책 구현부가 주체 기반 승인 엔트리를 지원한다. 그러므로, 액세스 컨트롤은 이제 또한 누구에 의해서 코드가 실행되는지 뿐만 아니라 어떤 코드가 실행되는지에 기반할 수 있다.
JAAS는 인스턴스 레벨 JAAS를 지원하기 위한 메커니즘을 제공한다. 이는 JAAS에 의해 사용되는 일부 클래스들을 확장함으로써 이루어진다. 그러나, 이러한 접근의 주요한 결점은 확장이 불가능하다는 점과, 서로 다른 도메인에서의 서로 다른 종류의 권한부여를 제공하기 위해서는 새로운 권한부여 클래스의 생성과 엄청난 양의 재작업을 필요로 한다는 점이다. 인스턴스 레벨 권한부여를 지원하는 또 다른 방안은 애플리케이션의 부분으로 코드화되어 있는 맞춤형 권한부여 코드를 사용하는 것이다. 일반적으로, 이것이 권한부여 기술을 지원하기 위해 가장 널리 사용되는 방법이고 이러한 방법의 주요한 결점은 표준에 기초하지 않았다는 점에서 서로 다른 애플리케이션에 적용하는 것이 보다 힘들다는 점이다. 게다가, 코드가 애플리케이션의 일부이므로 유지가 어렵고, 일반적이지 않기 때문에 대게 다른 영역에서 재사용이 되지 못한다.
그러므로, 전통적인 접근방식들의 결점과 한계 때문에, 서로 다른 도메인에서 새로운 코드를 요구하지 않는 보다 보편적으로 적용가능한 JAAS 기반 권한부여 솔루션이 필요하다. 새로운 권한부여 요구조건을 위해 새로운 코드를 작성하게 되 면 배치 시에 권한부여 설정을 변경하는 것이 어려워진다. 그러므로, 선언적 권한부여의 유연성과 프로그램적 권한부여의 높은 입도를 함께 갖출 필요가 있다.
앞서 말한 관점에서, 본 발명의 실시예는 소프트웨어 객체나 애플리케이션에 의해 표현되는 리소스, 데이터, 코드에 액세스하려는 사용자에 대한 보안과 권한부여 정책을 설정하는 방법을 제공하되, 이 방법은 데이터 프로세서에서 동작하는 애플리케이션 객체 기술 문서(an application object description document)로부터 하나 이상의 애플리케이션 객체 그룹을 생성하는 단계, 애플리케이션 객체 그룹 각각에 대한 권한부여 정책을 생성하는 단계, 선택된 애플리케이션 객체를 액세스 컨트롤러로 전송하는 단계, 권한부여 정책에 기반하여, 선택된 애플리케이션 객체에 액세스하려는 사용자를 위한 소프트웨어 애플리케이션의 배치 시에 액세스 컨트롤 파라미터를 설정하는 단계를 포함하는 방법이다. 생성하는 단계에서 애플리케이션 객체 기술 문서는 XML(eXtensible Markup Language) 포맷을 포함한다. 이 방법은 권한부여 정책에 대한 환경 변수를 지정(specifying)하는 단계, 환경 변수의 선언적 사양(a declarative specification)을 수정하고 애플리케이션 객체의 속성에 대해 정의된 제약들을 수정함으로써 권한부여 정책을 변경하는 단계를 더 포함한다. 이에 더해서, 이 방법은 애플리케이션 객체와 관계된 방법이나 필드 파라미터들(그리고 이러한 방법이나 필드 파라미터 상에 대해 정의된 제한)을 사용하여 애플리케이션 객체 그룹을 지정하는 단계, 모든 애플리케이션 객체 그룹 사이에서 사전 결정된 관계를 사용하여 상기 애플리케이션 객체 그룹을 지정하는 단계, 또는 사전 결정된 그룹화 동작을 사용하여 애플리케이션 객체 그룹을 지정함으로써 애플리케이션 객체 기술 문서를 하나 이상의 애플리케이션 객체 그룹으로 나누는 단계를 더 포함한다. 더욱이, 이 방법은 동일한 권한부여 정책 분류기(authorization policy classifier)를 사용하여 권한부여 정책의 변경된 클래스를 구현하는 단계를 더 포함한다.
본 발명의 또 다른 실시예는 소프트웨어 애플리케이션에 대한 액세스를 컨트롤하는 방법을 제공하고, 이 방법은 그룹화 파라미터에 따라서 소프트웨어 애플리케이션 내의 애플리케이션 객체를 그룹화하는 단계, 애플리케이션 객체에 액세스하는 각 클래스의 사용자에 대한 사용자 프로파일을 설정하는 단계, 각 그룹화된 애플리케이션 객체들에 대한 액세스 컨트롤 파라미터를 포함하는 권한부여 정책을 지정하는 단계, 소프트웨어 애플리케이션의 배치 시에 선택된 그룹화된 애플리케이션 객체에 액세스하려는 사용자에 대한 사용자 프로파일을 권한부여 정책과 매칭하는 단계를 포함하며, 그룹화하는 단계에서 소프트웨어 애플리케이션은 애플리케이션 객체를 포함하는 애플리케이션 객체 기술 문서를 포함하고, 애플리케이션 객체 기술 문서는 XML 포맷을 포함한다. 이 방법은 권한부여 정책에 대한 환경 변수를 지정하는 단계, 환경 변수의 선언적 사양과 그룹화 제약들을 수정함으로써 권한부여 정책을 변경하는 단계를 더 포함한다. 그룹화하는 단계에서 그룹화 파라미터는 애플리케이션 객체와 관계된 방법이나 필드 파라미터들을 사용하여 애플리케이션 객체를 지정하는 단계, 소프트웨어 애플리케이션의 모든 애플리케이션 객체 사이의 사전 결정된 관계를 사용하여 애플리케이션 객체를 지정하는 단계, 또는 사전 결정된 그룹화 액션을 사용하여 애플리케이션 객체를 지정함으로써 소프트웨어 애플리케이션/객체들에 의해 표현되는 리소스, 데이터, 또는 코드를 하나 이상의 애플리케이션 객체 그룹으로 나누려는 단계를 포함한다. 이 방법은 동일한 권한부여 정책 분류기를 사용하여 권한부여 정책들의 변경된 클래스를 구현하는 단계를 더 포함한다.
본 발명의 또 다른 특징은 소프트웨어 애플리케이션에 액세스하는 사용자에 대한 보안과 권한부여 정책을 설정하는 시스템을 제공하고, 이 시스템은 데이터 프로세서에서 실행되고 있는 애플리케이션 객체 기술 문서로부터 하나 이상의 애플리케이션 객체 그룹을 생성하는 수단, 각 애플리케이션 객체 그룹에 대한 권한부여 정책을 지정하는 수단, 선택된 애플리케이션 객체 그룹을 액세스 컨트롤러로 전송하는 수단, 권한부여 정책에 기반하여, 선택된 애플리케이션 객체 그룹에 액세스를 시도하는 사용자에 대한 소프트웨어 애플리케이션의 배치 시에 액세스 컨트롤 파라미터를 설정하는 수단을 포함한다.
본 발명의 또 다른 실시예는 소프트웨어 객체에 대한 액세스를 컨트롤하는 시스템을 제공하며, 이 시스템은 하나 이상의 애플리케이션 객체 그룹을 포함하는 애플리케이션 객체 기술 문서, 각 애플리케이션 객체 그룹에 대한 권한부여 정책을 지정하기 위한 권한부여 정책 분류기, 소프트웨어 객체의 배치 시에 권한부여 정책에 기반하여, 선택된 애플리케이션 객체 그룹에 액세스하려는 사용자에 대한 액세스 컨트롤 파라미터를 설정하기 위한 액세스 컨트롤러를 포함하며, 애플리케이션 객체 기술 문서는 XML 포맷을 포함하고, 상기 권한부여 정책은 환경 변수를 포함한다. 이 시스템은 또한 환경 변수들의 선언적 사항과 그룹화 규칙들을 수정함으로써 권한부여 정책을 변경하기 위한 발생기 루틴(generator routine)을 더 포함한다. 시스템에 따르면, 애플리케이션 객체 그룹은 사용자가 선택한 애플리케이션 객체와 관계된 방법이나 필드 파라미터를 사용하여 지정되거나, 모든 애플리케이션 객체 그룹들 사이의 사전 결정된 관계를 사용하여 지정되거나, 사전 결정된 그룹화 액션을 사용하여 지정되어 애플리케이션 객체 기술 문서를 하나 이상의 애플리케이션 객체 그룹으로 나눈다. 더욱이, 권한부여 정책 분류기는 권한부여 정책의 변경된 클래스를 구현한다.
또한, 본 발명의 또 다른 특징은 컴퓨터에 의해 판독가능한 프로그램 저장 장치 - 이 저장 장치는 컴퓨터에 의해 실행가능한 명령어 프로그램을 구현하여 소프트웨어 애플리케이션에 액세스하는 사용자에 대한 보안 및 권한부여 정책을 설정하는 방법을 수행함 - 를 제공하고, 이 방법은 데이터 프로세서에서 동작하는 애플리케이션 객체 기술 문서로부터 하나 이상의 애플리케이션 객체 그룹을 생성하는 단계, 각 애플리케이션 객체 그룹에 대한 권한부여 정책을 지정하는 단계, 선택된 애플리케이션 객체를 액세스 컨트롤러로 전송하는 단계, 권한부여 정책에 기반하여, 선택된 애플리케이션 객체에 액세스를 시도하는 사용자에 대한 소프트웨어 애플리케이션의 배치 시에 액세스 컨트롤 파라미터를 설정하는 단계를 포함한다.
본 발명의 실시예에 의해 제공되는 권한부여 기술은 새로운 코드를 작성하지 않고도 권한부여 요구조건을 만족시키는 방법을 제공하며, 새로운 권한부여 시나리오는 배치 시에 선언적 설정을 변경함으로써 얻을 수 있다. 또한, 본 발명의 실시예는 XML 포맷에서 여러 가지 권한부여 요구조건을 나타내는 기법, 객체 제한 로직(object constraints logic)을 사용하여 권한부여를 위하여 객체 그룹을 분리하고 생성하는 기법, 환경 변수를 권한부여 파라미터로 추가하는 기법, 인증 주체들 사이의 관계를 정의하는 기법, 동일한 권한부여 정책 제공자를 사용하여 권한부여 정책의 변경된 클래스를 구현하는 기법, 배치 시에 액션들을 그룹화하는 기법을 제공한다.
본 발명의 실시예의 이러한 특징들과 또 다른 특징들은 명세서와 첨부된 도면과 함께 고려될 때에 더욱 잘 이해될 수 있다. 그러나, 본 발명의 바람직한 실시예들과 그에 관한 다수의 구체적인 설명을 기술하고 있는 본 명세서는 설명을 위한 것이지 제한적인 것은 아니다.
본 발명의 실시예들은 첨부된 도면과 명세서에 의해 더욱 잘 이해될 수 있다.
도 1은 Java®를 위한 전형적인 정책 파일을 도시함.
도 2는 AccessController를 사용하여 Java® 메소드를 보호하는 전형적인 코드를 도시함.
도 3은 JAAS에서 주체 기반 권한부여를 위한 전형적인 정책을 도시함.
도 4는 본 발명의 일 실시예에 따라 GenericPermission을 사용하는 보호 메소드를 위한 의사 코드(pseudocode)를 도시함.
도 5는 본 발명의 일 실시예에 따른 일반적인 권한부여에서의 권한부여 정책을 도시함.
도 6은 본 발명의 일 실시예의 바람직한 방법을 예시하는 흐름도를 도시함.
도 7(a)은 본 발명의 또 다른 일 실시예의 바람직한 방법을 예시하는 흐름도를 도시함.
도 7(b)은 본 발명의 또 다른 특징의 바람직한 방법을 예시하는 흐름도를 도시함.
도 8은 본 발명의 실시예에 따른 시스템 블록 다이어그램을 도시함.
도 9는 본 발명의 실시예에 따른 컴퓨터 시스템 다이어그램을 도시함.
본 발명의 실시예들과 다양한 특징 및 장점들은 첨부된 도면에 예시되어 있고 명세서에서 상세하게 서술되어 있는 제한적이지 않은 실시예를 참조하여 더욱 자세히 설명된다. 도면에 예시된 특징부들은 반드시 실제 축척대로 도시된 것은 아님을 유의해야 한다. 공지된 컴포넌트와 처리 기술들에 대한 서술은 본 발명의 실시예들을 불필요하게 불분명하게 하지 않기 위하여 생략되어 있다. 본 명세서의 예들은 단지 본 발명의 실시예들이 실시되는 방식의 이해를 용이하게 하고, 또한 당업자들이 본 발명의 실시예를 실시하는 것을 가능하게 하는 것을 목적으로 한다. 따라서, 본 실시예들은 본 발명의 실시예들의 범위를 제한하는 것으로 해석되면 안 된다.
언급되었듯이, 권한부여 설정에 커다란 변화를 요구하지 않으면서 서로 다른 영역에 적용할 수 있는 보다 보편적으로 적용가능한 Java® 기반 소프트웨어 애플리케이션 개발 기술의 필요가 존재한다. 본 발명의 실시예들은 일반적인, 로우 레벨의, 확장 가능한 보안을 JAAS 표준 기반의 Java® 애플리케이션에 제공하여 이와 같은 필요를 해결한다. 이제 도면을, 특히 도 4부터 도 9를 참조하면 본 발명의 바람직한 실시예가 도시되어 있다.
상기에서 서술했듯이, JAAS는 다양한 인가와 권한부여 객체들을 얻기 위해 여러 방식으로 확장된다. 그러나, 다양한 확장을 위해서 다양한 JAAS 인터페이스와 클래스들을 제각각 확장하거나 구현하는 코드를 작성해야 할 수도 있다. 이로 인해, 애플리케이션의 배치 시에 보안 설정을 변경하는 것이 어렵게 된다. 그러므로, 본 발명의 실시예에 의해 제공되는 일반적인 권한부여 기술은 프로그램적 권한부여의 높은 입도를 유지하면서도 선언적 권한부여를 사용함으로써 이러한 유연성을 얻을 수 있게 한다.
따라서, 본 발명의 실시예들에 의해 제공되는 권한부여 기술은 선언적 사양들을 사용하면서 프로그램적 권한부여의 기능을 제공한다. 보다 구체적으로, 본 발명의 실시예들은 권한부여 요구조건이 프로그램적 방식이 아닌 선언적 방식으로써 만족될 수 있도록 JAAS를 확장한다. 인가와 권한부여를 사용하여 보호되어야하는 각 메소드는 최소한 세 개의 파라미터를 가지는 GenericPermission 객체의 생성자(constructor)를 호출하는 것으로 시작한다. 이는 메소드가 속하는 클래스, 메소드가 수행하고자 하는 액션, 메소드가 호출되는 객체이다. 도 4는 상기에 서술된 본 발명의 특징에 따라서 GenericPermission을 사용하는 보호 메소드를 위한 의사 코드를 도시한다.
도 5에서 도시되었듯이, 권한부여 정책은 XML 형식으로 표현될 수 있다. 예를 들어, "등록된(인증된) 사용자는 누구나 경매를 부칠 수 있으나, 그 경매를 부친 사람만이 경매를 수정할 수 있다." 에 대한 권한부여 정책은 도 5에 도시된 것처럼 작성된다. 이와 유사하게, 서로 다른 가격 계약에 대해 서로 다른 권한부여 정책을 갖는 퍼미션들은 {idname="getContractID", idtype="method", idvalue="ibm-sun"} 파라미터를 기반으로 한다.
일반적인 권한부여를 위해, JDK는 적절한 권한부여 정책 공급자에게 적합하게 구성되어 있다. 이는 Java_home/jre/lib/secutiry 디렉토리의 Java. security 파일에 auth.policy.provider를 변경/부가하여 달성되는데, Java_home은 Java®가 시스템에 설치된 경로이다. 일반적인 권한부여가 광범위한 권한부여 정책을 포괄하기 때문에, 각자 자신의 권한부여 요구조건을 가지는 다수의 애플리케이션에 대해서 오직 하나의 권한부여 정책 공급자만이 있을 수 있다는 한계가 있기는 하지만, 각각의 애플리케이션에 대해서 별개의 코드를 작성하지 않더라도 같은 머신 상에서 실행될 수 있다.
도 6은 소프트웨어 객체나 애플리케이션에 의해 표현되는 리소스, 데이터, 코드에 액세스하려는 사용자에 대한 보안과 권한부여 정책을 설정하는 방법을 예시하는데, 이 방법은 데이터 프로세서에서 실행되는 애플리케이션 객체 기술 문서로부터 하나 이상의 애플리케이션 객체 그룹을 생성하는 단계(101), 애플리케이션 객체 그룹 각각에 대한 권한부여 정책을 생성하는 단계(103), 선택된 애플리케이션 객체를 (도 8에 도시된) 시스템(200)의 액세스 컨트롤러(208)로 전송하는 단계(105), 권한부여 정책에 기반하여, 선택된 애플리케이션 객체에 액세스를 시도하는 사용자에 대한 소프트웨어 애플리케이션의 배치 시에 액세스 컨트롤 파라미터를 설정하는 단계를 포함한다. 생성 단계(101)에서, 애플리케이션 객체 기술 문서는 XML 포맷을 포함한다. 이 방법은 권한부여 정책에 대한 환경 변수를 지정하는 단계, 환경 변수의 선언적 사양을 수정함으로써 권한부여 정책을 변경하는 단계를 더 포함한다. 이에 더해서, 이 방법은 애플리케이션 객체와 관계된 방법이나 필드 파라미터들을 사용하여 애플리케이션 객체 그룹을 지정하는 단계, 모든 애플리케이션 객체 그룹 사이의 사전 결정된 관계를 사용하여 애플리케이션 객체 그룹을 지정하는 단계, 또는 사전 결정된 그룹화 액션을 사용하여 애플리케이션 객체 그룹을 지정함으로써 애플리케이션 객체 기술 문서를 하나 이상의 애플리케이션 객체 그룹으로 나누는 단계를 더 포함한다. 더욱이, 이 방법은 동일한 권한부여 정책 분류기를 사용하여 권한부여 정책들의 변경된 클래스를 구현하는 단계를 더 포함한다.
본 발명의 또 다른 일 실시예는 도 7(a)에 도시되어 있고, 이는 소프트웨어 객체/애플리케이션에 의해 표현되는 리소스, 데이터, 또는 코드로의 액세스를 컨트 롤하는 방법을 예시하며, 이 방법은 소프트웨어 애플리케이션 내의 애플리케이션 객체를 하나 또는 그 이상의 객체 메소드 호출 결과, 객체 필드 값, 환경 변수들을 포함하는 그룹화 파라미터에 따라서 그룹화하는 단계(111), 애플리케이션 객체에 액세스하려는 각 클래스의 사용자에 대한 사용자 프로파일을 설정하는 단계(113), 각 그룹화된 애플리케이션 객체에 대한 액세스 컨트롤 파라미터를 포함하는 권한부여 정책을 지정하는 단계(115), 소프트웨어 애플리케이션의 배치 시에 선택된 그룹화된 애플리케이션 객체에 액세스를 시도하는 사용자에 대한 사용자 프로파일을 권한부여 정책과 매칭하는 단계(117)를 포함하며, 그룹화 단계(111)에서 소프트웨어 애플리케이션은 애플리케이션 객체를 포함하는 애플리케이션 객체 기술 문서를 포함하되, 애플리케이션 객체 기술 문서는 XML 포맷을 포함한다.
또한, 그룹화(111) 단계에서, 그룹화 파라미터는 애플리케이션 객체와 관계된 방법이나 필드 파라미터들을 사용하여 애플리케이션 객체를 지정하는 단계, 소프트웨어 애플리케이션의 모든 애플리케이션 객체 사이에서 사전 결정된 관계를 사용하여 애플리케이션 객체를 지정하는 단계, 또는 사전 결정된 그룹화 액션을 사용하여 애플리케이션 객체를 지정함으로써 사용자가 선택한 소프트웨어 객체를 하나 이상의 애플리케이션 객체 그룹으로 나누는 단계를 포함한다. 도 7(b)에 나타나 있듯이, 이 방법은 권한부여 정책에 대한 환경 변수를 지정하는 단계(119), 환경 변수의 선언적 사양을 수정함으로써 권한부여 정책을 변경하는 단계(121)를 더 포함한다. 이 방법은 동일한 권한부여 정책 분류기를 사용하여 권한부여 정책들의 변경된 클래스를 구현하는 단계를 더 포함한다.
권한부여 정책을 작성하는 방법에 따라서, 본 발명의 실시예들은 보안과 관계된 변수와 환경 변수에 대한 액세스를 허용하여 정책들이 이러한 변수들에 의존할 수 있게 한다. 이는 "A에게 주중에는 소프트웨어 애플리케이션에의 액세스를 허용하나 주말에는 불허한다."와 같은 정책을 갖는 것을 가능하게 한다.
도 8은 소프트웨어 애플리케이션에 대한 액세스를 컨트롤하는 시스템(200)을 예시하며, 이 시스템(200)은 하나 이상의 애플리케이션 객체 그룹(204)을 포함하는 애플리케이션 객체 기술 문서(202), 각 애플리케이션 객체 그룹(204)에 대한 권한부여 정책을 지정하기 위한 권한부여 정책 분류기(206), 소프트웨어 애플리케이션 배치 시에 권한부여 정책에 기반하여, 선택된 애플리케이션 객체 그룹(204)에 액세스를 시도하는 사용자(210)를 위한 소프트웨어 애플리케이션의 배치 시에의 액세스 컨트롤 파라미터를 설정하기 위한 액세스 컨트롤러(208)를 포함하고, 애플리케이션 객체 기술 문서(202)는 XML 포맷을 포함하며, 권한부여 정책은 환경 변수를 포함한다.
이 시스템은 환경 변수의 선언적 사양을 수정하여 권한부여 정책을 변경하기 위한 발생기 루틴(212)을 더 포함한다. 시스템(200)에 따라서, 애플리케이션 객체 그룹(204)은 애플리케이션 객체 그룹(204)과 관계된 방법이나 필드 파라미터를 사용하여 지정되거나, 모든 애플리케이션 객체 그룹들(204) 사이의 사전 결정된 관계를 사용하여 지정되거나, 또는 사전 결정된 그룹화 액션을 사용하여 지정되어 애플리케이션 객체 기술 문서(202)를 하나 이상의 애플리케이션 객체 그룹(204)으로 나눈다. 더욱이, 권한부여 정책 분류기(206)는 권한부여 정책의 변경된 클래스를 구 현한다.
본 발명의 실시예들은 (XML 파일로 작성된) 객체 제한 로직을 나누는 기법 및 권한부여를 위한 객체 그룹을 생성하는 기법을 제공한다. 일반적으로, JAAS에서는 권한부여 정책이 클래스(코드) 레벨에서 작성된다. 반대로, 본 발명의 실시예에 따르면, 권한부여 정책은 객체 그룹의 입도에 따라 작성된다. 객체 그룹은 관계된 객체의 메소드/필드를 사용하여 표현된다. 예를 들어 "contract"라는 클래스가 있다고 가정하면, JAAS에서는 모든 계약이 동일한 권한부여 정책을 가지는 반면에, 본 발명의 실시예가 제공하는 일반적인 권한부여에서는 사용자가 "Sun®"(Sun®은 미국, 캘리포니아, 산타 클라라의 선 마이크로시스템즈사의 등록 상표임)과의 계약을 갱신하는 것은 허용되지만 "Micorsoft®"(Microsoft®는 미국, 워싱턴, 레드몬드의 마이크로소프트사의 등록 상표임)와의 계약을 갱신하는 것은 허용되지 않을 수도 있다. JAAS에서는, 애플리케이션 객체 상의 권한부여는 그 애플리케이션 객체의 특성에 의존하지 않는다. 그러므로, 모든 애플리케이션 객체는 동일한 권한부여 규칙을 갖는다. 이를 피하기 위해, 일반적으로 맞춤형 권한부여가 통상적인 방식으로 수행된다. 이와 반대로, 본 발명의 실시예들은 개인이 JAAS를 사용하여 인스턴스 레벨의 권한부여(즉, 데이터 객체의 특성에 의존하는 권한부여)를 수행할 수 있는 기술을 제공한다.
본 발명에 의해 제공되는 방법은 인증된 주체들 사이의 관계를 정의한다. 대게, JAAS에서는 사용자가 인증될 때, 사용자는 "Subject" 타입의 객체로 표현된다. 각 서브젝트는 자신과 관계된 다수의 주체를 갖는다. 이러한 주체들은 그 사람이 갖는 서로 다른 아이덴티티를 나타낸다. 그러므로, 사람은 (하나의 주체인) 이름 또는 (또 다른 주체인) 사회 보장 번호로서 고유하게 식별된다. 그러나 본 발명의 실시예에서 제공되는 XML 기반의 표현을 사용하면, "만약 사용자(인증된 주체)가 객체의 소유자의 관리자이면 (객체가 종료 애플리케이션에 관한 것일 수 있다), 그는 승인 메소드(approval method)를 호출할 수 있다"와 같은 정책이 정의될 수 있다. 다시 한번, 이는 본 발명의 실시예가 개인이 JAAS를 사용하여 인스턴스 레벨의 권한부여(즉, 데이터 객체의 특성에 의존하는 권한부여)를 수행할 수 있다는 점에서 이점이다. 또한, 이는 프로그램적 권한부여보다 유연성을 지닌 선언적 권한부여의 방식으로 수행된다. 게다가, 이런 설정을 사용하면, 서브젝트 간의 동적 관계가 권한부여를 위해 사용될 수 있다. 이 예에서, 정책은 인증된 주체 사이의 관계(관리자)에 입각하여 정의될 수 있다.
다음으로, 본 발명의 실시예는 권한부여 정책의 변경된 클래스들이 동일한 권한부여 정책 제공자를 사용하여 구현될 수 있는 방법을 제공한다. 권한부여 제공자는 java_home/jre/lib/security의 java.security 파일에 구성되어 있다. Java® Virtual Machine(JVM)의 경우, java.security 파일의 auth.policy.provider 프로퍼티를 변경함으로써 구성된다. 일반적인 권한부여가 광범위한 권한부여 정책을 포괄하므로, 오직 하나의 권한부여 정책 제공자만 있어야 한다는 한계가 있기는 하지만, 각각 자신의 권한부여 요구조건을 가지는 다양한 애플리케이션들이 같은 JVM에 서 실행될 수 있다. 본 발명의 실시예가 하나의 XML 권한부여 파일을 가지므로, 이 파일은 서로 다른 애플리케이션에 대해서 서로 다른 권한부여 규칙을 가질 수 있다. 각 권한부여 규칙은 그 애플리케이션에 특정된 애플리케이션 객체에 입각하여 정의될 것이다. 게다가, 권한부여 기반 구조는 그 하나의 권한부여 파일을 사용한다. 그러므로, 권한부여 정책의 변경된 클래스는 동일한 권한부여 정책 제공자를 사용하여 구현될 수 있다.
본 발명의 실시예는 추가적으로 배치 시에 액션들을 그룹화하는 방법을 제공한다. 액션들은 서로 다른 그룹의 액션들에 대해 서로 다른 권한부여 요구조건들을 제공하도록 그룹화될 수 있다. 동일한 권한부여가 예를 들어서 'read' 와 'search' 액션에 대해서 사용되도록 배치 시에 결정될 수 있다. 이는 권한부여 정책이 권한부여 XML 파일에 저장됨으로써 달성될 수 있다. 배치 시에, 단순히 XML을 변경함으로써 전술한 액션들의 그룹화가 달성될 수 있다.
다음으로, 본 발명의 실시예는 어떠한 새로운 코드도 작성하지 않고 권한부여 요구조건을 충족할 수 있는 방법을 제공한다. 새로운 권한부여 시나리오는 선언적 설정을 변경함으로써 배치 시에 획득될 수 있다. 이는 위에서 언급되었듯이 단순히 XML을 변경함으로써 달성된다. 이로 인해 본 발명의 실시예가 새로운 정책을 제공하고, 이는 코드의 변경을 요하지 않는다. 권한부여 요구조건이 애플리케이션에 포함되어 있지 않고 XML로 표현되기 때문에, 권한부여 설정은 (코드를 변경하기 대신에) 단순히 XML을 변경함으로써 변경될 수 있다. 본 발명의 실시예가 제공하는 XML 기반 정책 파일에서는, 만약 Java® 객체가 getOwner, getManager 등과 같은 특정의 Java® bean과 유사한 메소드의 리턴 값을 사용하여 표현되는 특정 특징들을 가진다면, 사용자 주체의 특정 Java® 객체에 대한 액세스가 허용된다.
본 발명의 실시예는 추가적으로 여러 가지 권한부여 요구조건을 XML 포맷으로 나타내는 방법을 포함한다. 이 포맷은 Java® 객체를 호출하는 필드나 메소드를 사용하여 객체를 지정하고, 관계들을 사용하여 주체를 지정하고, 액션들을 그룹화한다. 본 발명의 실시예는 또한 시간, 날짜들과 같은 환경 변수를 XML 포맷으로 나타내고, 이러한 변수 상의 권한부여 정책을 정의한다. 이는 XML 포맷에서 객체를 식별하는 다양한 방법을 포함함으로써, 본 발명의 실시예가 권한부여 설정에 대한 다양한 옵션을 만들어 낼 수 있기 때문에 특히 유용하다. 이러한 옵션은 특히 Java® 객체에 대한 필드 값과 메소드 리턴값, 그들 사이의 주체와 관계들, 환경 변수들을 포함한다. 그러므로, 본 발명의 실시예는 배치 시에 권한부여 정책을 변경할 수 있고, JAAS 표준의 사용이 가능하다. 다시 말해서, 프로그램적 권한부여의 사용이 없이도 인스턴스 레벨 권한부여를 통해서 JAAS의 이점들을 얻을 수 있다.
더욱이, 본 발명의 실시예는 권한부여가 확인되는 객체 및/또는 액세스 요구를 만드는 객체의 전달을 허용하는 생성자를 가지는 일반적인 퍼미션 클래스를 제공한다. 대게, JAAS에서는 Permission 객체가 액세스 컨트롤러를 사용하는 퍼미션의 확인을 위해 필요하다. 이와 반대로, 본 발명의 실시예가 제공하는 방법에 따르 면, Permission 클래스는 GenericPermission을 사용하여 확장되어서 퍼미션이 요청되는 객체가 액세스 컨트롤러(208)에 전달되는 Permission 객체의 파라미터가 된다. 그러므로, 액세스 컨트롤러(208) 자신에게 전달된 객체에 기반하여 권한부여를 결정할 수 있다. 이러한 특징은 권한부여 판단이 이루어지는 애플리케이션 객체의 특정 인스턴스의 특징에 기반한 권한부여 규칙을 제공하는데 사용된다. 앞서 언급되었듯이, JAAS에서는 권한부여 정책이 애플리케이션 객체의 인스턴스에 독립적이고 정책은 같은 카테고리의 애플리케이션 객체의 모든 인스턴스에 대해서 동일하다. 객체 인스턴스를 파라미터로 받아들이는 일반적인 퍼미션 클래스를 사용하는 상기 기술을 사용하면, 본 발명의 실시예는 인스턴스 레벨의 권한부여를 제공한다.
다음으로, 본 발명의 실시예는 환경 변수의 사용을 허용하고, 리플렉션(reflection)을 사용하는 동적 메소드 호출의 표현을 허용하며, 식(expression), 술어 논리(predicated logic)등의 표현을 허용하는 일반적인 정책 파일을 제공한다. 예를 들어, 본 발명의 실시예는 권한부여 요구조건을 작성하는 포맷을 제공한다. 그러한 포맷은 Java® 객체를 호출하는 필드나 메소드를 사용하여 객체를 지정하고, 관계들을 사용하여 주체를 지정하며, 액션들을 그룹화한다. 본 발명의 실시예는 또한 시간, 날짜 등과 같은 환경 변수를 XML 형식으로 나타내고 이러한 변수 상의 권한부여 정책을 정의한다.
추가적으로, 본 발명의 실시예는 일반적인 정책 파일을 분리하고, Generic Policy File의 구문을 이해하며, GenericPermissionCollection을 과거 사용자 객 체, 사용자 주체/사용자 서브젝트, 그리고 사용자 코드에 기반하여 Generic Policy File로부터 생성해내는 Policy File 구현을 제공한다. 이는 새로운 타입의 GenericPermission 클래스를 사용함으로써 달성되어, 서로 다른 타입의 정책 파일 구현이 사용된다. 따라서, 본 발명의 실시예들은 Generic Policy File의 일반적인 포맷을 이해하나, 정책 파일에 지정되어 있는 객체 제한 로직을 이해할 필요는 없다. 그러나, 구현은 정책 파일을 사용하여 GenericPermission 클래스를 생성해낸다. 이로 인해, GenericPermission 클래스는, 전술한 바와 같이, 정책 파일에 지정되어 있는 객체 제한 로직을 이해한다.
그러므로, 본 발명의 실시예들은, 정책 파일을 사용하고, 정책 언어의 선언적 사양을 이해하며, 환경 변수의 값들을 얻어내고 식과 술어 논리를 평가할 수 있고, 런타임 파라미터 값들을 얻기 위해 Java® 리플렉션을 사용하는 GenericPermission 클래스를 사용한다. 다시 말해서, 본 발명의 실시예는 일반적인 XML 기반 정책 파일로 작성된 로직을 이해한다.
나아가, 본 발명의 실시예는 GenericPermission의 집합을 저장하고 GenericPermission의 내부 메소드를 호출하는 GenericPermission Collection 클래스를 제공하는데, GenericPermission은 Generic Policy File을 이해할 수 있다. 일반적으로, 본 발명의 실시예들은 객체를 하나의 파라미터로 받아들이는 퍼미션들의 일반적인 집합을 정의하는데, 이는 JAAS 사양에 따라서 JAAS 환경에서 동작한다. 보다 구체적으로, 본 발명의 실시예들은 액세스 컨트롤이나 XML 포맷으로 정의된 권한부여를 제공하는 Java® 기반 정책을 제공한다. 환경 변수는 Java®에 대한 권한부여 정책의 권한부여 파라미터를 정의하기 위하여 XML 포맷으로 선언적으로 지정된다. XML은 애플리케이션에 독립적이며, 선언적 변수의 사용은 XML 내의 클래스, 메소드, 객체의 Java® 파라미터를 정의하여 일반적인 권한부여를 허용한다. 여러 다른 정책들이 XML에 기술되어 있고 정책들은 환경 변수로 선언되어 있다. 권한부여 정책을 변경하기 위해서는, 환경 변수의 선언이 수정되어야 한다. 게다가, 각 애플리케이션은 서로 다른 정책을 가질 수 있고 사용자가 특정 사용자 이름과 비밀번호를 가지고 로그인할 때에 XML 포맷으로 선언적으로 지정될 수 있다.
본 발명의 실시예의 실시를 위한 대표적인 하드웨어 환경이 도 9에 묘사되어 있다. 이 개략적인 도면은 본 발명의 실시예에 따른 정보 처리/컴퓨터 시스템의 하드웨어 구성을 예시하고 있다. 시스템은 하나 이상의 프로세서 또는 중앙 처리 장치(central processing unit, CPU)(10)를 포함한다. CPU(10)들은 시스템 버스(12)를 통해서 랜덤 액세스 메모리(RAM)(14), 리드 온리 메모리(ROM)(16), 입/출력(I/O) 어댑터(18)와 같은 다양한 장치와 연결된다. I/O 어댑터(18)는 디스크 유닛(11), 테이프 드라이버(13) 또는 시스템에 의해 판독될 수 있는 프로그램 저장 장치와 같은 주변 장치들에 연결될 수 있다. 시스템은 프로그램 저장 장치상의 본 발명에 따른 명령을 판독할 수 있고 이러한 명령에 따라서 본 발명의 실시예들에 따른 방법을 수행한다. 시스템은 또한 키보드(15), 마우스(17), 스피커(24), 마이크로폰(22) 및/또는 터치 스크린 장치(도시되어 있지 않음)와 같은 다른 사용자 인 터페이서 장치들을 버스(12)에 연결하여 사용자 입력을 수집하는 인터페이스 어댑터(19)를 포함한다. 추가적으로, 통신 어댑터(20)는 버스(12)와 데이터 프로세싱 네트워크(25)를 연결시키고, 디스플레이 어댑터(21)는 버스(12)와 모니터, 프린터, 송신기 등과 같은 출력 장치로서 내장되어 있을 수 있는 디스플레이 장치(23)를 연결한다.
본 발명의 실시예에 의해 제공되는 권한부여 기술은 새로운 코드를 작성하지 않고 권한부여 요구조건을 만족시키는 방법을 제공하고, 새로운 권한부여 시나리오는 선언적 설정을 변경함으로써 배치 시에 얻어지게 된다. 추가적으로, 본 발명의 실시예는 다양한 권한부여 요구 조건을 XML 포맷으로 나타내는 기법, 객체 제한 로직을 사용하여 권한부여를 위하여 객체 그룹을 분배하고 생성하는 기법, 환경 변수를 권한부여 파라미터로 부가하는 기법, 인증된 주체들 사이의 관계를 정의하는 기법, 동일한 권한부여 정책 제공자를 사용하여 권한부여 정책들의 변경된 클래스를 구현하는 기법, 배치 시에 액션들을 그룹화하는 기법을 제공한다. 본 발명의 실시예들은 J2EE®/J2EE®가 아닌 환경에서의 모든 Java® 애플리케이션에서 유용하다. 게다가 여기에 서술된 환경들은 J2EE®/J2EE®가 아닌 애플리케이션 모두에 적용된다.
Claims (10)
- 권한부여 정책(authorization policy)을 이용하여 객체 지향 구조형 명령 프로그래밍 언어(an object-oriented, structured, imperative programming language)로 작성된 소프트웨어 애플리케이션의 일부분인 소프트웨어 애플리케이션 객체를 액세스하고, 상기 소프트웨어 애플리케이션 객체를 변경하는 컴퓨터로 구현된 방법으로서,데이터 프로세서에서 실행되는 소프트웨어 애플리케이션 객체 기술 문서(a software application object description document)로부터, 다수의 소프트웨어 애플리케이션 객체를 포함하는 소프트웨어 애플리케이션 객체 그룹을 생성하는 단계와,지정된 객체 메소드 호출 결과 및 지정된 객체 필드 값의 임의의 인스턴스(instance)에 의해 상기 소프트웨어 애플리케이션 객체 그룹을 선택하는 단계와,단일의 범용 권한부여 파일 내에, 상기 소프트웨어 애플리케이션 객체 그룹 각각에 대한 상기 권한부여 정책을 생성하는 단계-상기 단일의 범용 권한부여 파일은 상이한 소프트웨어 애플리케이션 객체에 대해 상이한 권한부여 규칙을 가짐-와,상기 선택된 소프트웨어 애플리케이션 객체 그룹을 액세스 컨트롤러에 전송하는 단계와,상기 권한부여 정책에 기반하여 상기 선택된 소프트웨어 애플리케이션 객체 그룹에 액세스하는 사용자에 대해, 상기 지정된 객체 메소드 호출 결과 및 상기 지정된 객체 필드 값의 상기 임의의 인스턴스를 이용하여 액세스 컨트롤 파라미터를 설정하는 단계와,상기 사용자에 의해, 상기 권한부여 정책의 환경 변수의 선언 사양을 변경하고, 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 소프트웨어 애플리케이션 객체의 속성에 대해 정의된 제약을 변경함으로써, 상기 권한부여 정책을 변경하는 단계와,상기 사용자에 의해, 상기 소프트웨어 애플리케이션의 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 상기 소프트웨어 애플리케이션 객체를 변경하는 단계를 포함하는컴퓨터로 구현된 방법.
- 제 1 항에 있어서,상기 권한부여 정책은 XML(eXtensible Markup Language) 포맷을 포함하는컴퓨터로 구현된 방법.
- 삭제
- 제 1 항에 있어서,모든 소프트웨어 애플리케이션 객체 그룹 사이의 사전 결정된 관계를 이용하여 상기 소프트웨어 애플리케이션 객체 그룹을 지정하는 단계를 더 포함하는컴퓨터로 구현된 방법.
- 삭제
- 제 1 항에 있어서,상기 소프트웨어 애플리케이션 객체 기술 문서를 상기 적어도 하나의 소프트웨어 애플리케이션 객체 그룹으로 파싱(parse)하도록 사전 결정된 그룹화 동작을 이용하여 상기 소프트웨어 애플리케이션 객체 그룹을 지정하는 단계를 더 포함하는컴퓨터로 구현된 방법.
- 제 1 항에 있어서,동일한 권한부여 정책 분류자를 이용하여 권한부여 정책의 다양한 클래스를 구현하는 단계를 더 포함하는컴퓨터로 구현된 방법.
- 소프트웨어 애플리케이션 객체를 변경하도록 하는 권한부여 정책에 의해 객체 지향 구조형 명령 프로그래밍 언어로 작성된 소프트웨어 애플리케이션의 상기 소프트웨어 애플리케이션 객체에 대한 액세스를 제어하는, 컴퓨터로 구현된 방법으로서,그룹화 파라미터에 따라 상기 소프트웨어 애플리케이션 내의 소프트웨어 애플리케이션 객체를 그룹화하는 단계-상기 그룹화 파라미터는 지정된 객체 메소드 호출 결과 및 지정된 객체 필드 값의 임의의 인스턴스에 의해 소프트웨어 애플리케이션 객체 그룹을 선택함-와,상기 소프트웨어 애플리케이션 객체에 액세스하는 각 클래스의 사용자에 대해 사용자 프로파일을 설정하는 단계와,단일의 범용 권한부여 파일 내에 그룹화된 소프트웨어 애플리케이션 객체 각각에 대한 액세스 컨트롤 파라미터를 포함하는 권한부여 정책을 지정하는 단계-상기 단일의 범용 권한부여 파일은 상이한 소프트웨어 애플리케이션 객체에 대해 상이한 권한부여 규칙을 가짐-와,상기 지정된 객체 메소드 호출 결과 및 상기 지정된 객체 필드 값의 상기 임의의 인스턴스에 의해 식별된 상기 선택된 소프트웨어 애플리케이션 객체 그룹에 대한 사용자 액세스에 대해 상기 사용자 프로파일을 상기 권한부여 정책과 매칭하는 단계와,상기 사용자에 의해, 상기 매칭된 권한부여 정책의 환경 변수의 선언 사양을 변경하고, 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 소프트웨어 애플리케이션 객체의 속성에 대해 정의된 제약을 변경함으로써, 상기 매칭된 권한부여 정책을 변경하는 단계와,상기 사용자에 의해, 상기 소프트웨어 애플리케이션의 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 상기 소프트웨어 애플리케이션 객체를 변경하는 단계를 포함하는컴퓨터로 구현된 방법.
- 권한부여 정책을 이용하여 객체 지향 구조형 명령 프로그래밍 언어로 작성된 소프트웨어 애플리케이션의 일부분인 소프트웨어 애플리케이션 객체에 액세스하고, 상기 소프트웨어 애플리케이션 객체를 변경하는 컴퓨터 시스템으로서,상기 소프트웨어 애플리케이션을 저장하는 메모리와,프로세서를 포함하며,상기 프로세서는상기 프로세서에서 실행되는 소프트웨어 애플리케이션 객체 기술 문서로부터, 다수의 소프트웨어 애플리케이션 객체를 포함하는 소프트웨어 애플리케이션 객체 그룹을 생성하고,지정된 객체 메소드 호출 결과 및 지정된 객체 필드 값의 임의의 인스턴스에 의해 상기 소프트웨어 애플리케이션 객체 그룹을 선택하며,단일의 범용 권한부여 파일 내에, 상기 소프트웨어 애플리케이션 객체 그룹 각각에 대한 상기 권한부여 정책을 생성하고-상기 단일의 범용 권한부여 파일은 상이한 소프트웨어 애플리케이션 객체에 대해 상이한 권한부여 규칙을 가짐-,상기 선택된 소프트웨어 애플리케이션 객체 그룹을 액세스 컨트롤러에 전송하며,상기 권한부여 정책에 기반하여 상기 선택된 소프트웨어 애플리케이션 객체 그룹에 액세스하는 사용자에 대해, 상기 지정된 객체 메소드 호출 결과 및 상기 지정된 객체 필드 값의 상기 임의의 인스턴스를 이용하여 액세스 컨트롤 파라미터를 설정하고,상기 사용자에 의해, 상기 권한부여 정책의 환경 변수의 선언 사양을 변경하고, 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 소프트웨어 애플리케이션 객체의 속성에 대해 정의된 제약을 변경함으로써, 상기 권한부여 정책을 변경하며,상기 사용자에 의해, 상기 소프트웨어 애플리케이션의 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 상기 소프트웨어 애플리케이션 객체를 변경하는컴퓨터 시스템.
- 권한부여 정책을 이용하여, 객체 지향 구조형 명령 프로그래밍 언어로 작성된 소프트웨어 애플리케이션의 일부분인 소프트웨어 애플리케이션 객체에 액세스하고, 상기 소프트웨어 애플리케이션 객체를 변경하는 컴퓨터로 구현된 방법을 수행하도록 컴퓨터에 의해 실행 가능한 인스트럭션의 컴퓨터 프로그램을 유형적으로 구현하는 상기 컴퓨터에 의해 판독 가능한 컴퓨터 프로그램 저장 디바이스로서,데이터 프로세서에서 실행되는 소프트웨어 애플리케이션 객체 기술 문서로부터, 다수의 소프트웨어 애플리케이션 객체를 포함하는 소프트웨어 애플리케이션 객체 그룹을 생성하는 단계와,지정된 객체 메소드 호출 결과 및 지정된 객체 필드 값의 임의의 인스턴스에 의해 상기 소프트웨어 애플리케이션 객체 그룹을 선택하는 단계와,단일의 범용 권한부여 파일 내에, 상기 소프트웨어 애플리케이션 객체 그룹 각각에 대한 상기 권한부여 정책을 생성하는 단계-상기 단일의 범용 권한부여 파일은 상이한 소프트웨어 애플리케이션 객체에 대해 상이한 권한부여 규칙을 가짐-와,상기 선택된 소프트웨어 애플리케이션 객체 그룹을 액세스 컨트롤러에 전송하는 단계와,상기 권한부여 정책에 기반하여 상기 선택된 소프트웨어 애플리케이션 객체 그룹에 액세스하는 사용자에 대해, 상기 지정된 객체 메소드 호출 결과 및 상기 지정된 객체 필드 값의 상기 임의의 인스턴스를 이용하여 액세스 컨트롤 파라미터를 설정하는 단계와,상기 사용자에 의해, 상기 권한부여 정책의 환경 변수의 선언 사양을 변경하고, 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 소프트웨어 애플리케이션 객체의 속성에 대해 정의된 제약을 변경함으로써, 상기 권한부여 정책을 변경하는 단계와,상기 사용자에 의해, 상기 소프트웨어 애플리케이션의 상기 선택된 소프트웨어 애플리케이션 객체 그룹 내에 코드를 포함하는 상기 소프트웨어 애플리케이션 객체를 변경하는 단계를 포함하는컴퓨터에 판독 가능한 컴퓨터 프로그램 저장 디바이스.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/909,107 US7669226B2 (en) | 2004-07-30 | 2004-07-30 | Generic declarative authorization scheme for Java |
US10/909,107 | 2004-07-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070040376A KR20070040376A (ko) | 2007-04-16 |
KR100968303B1 true KR100968303B1 (ko) | 2010-07-08 |
Family
ID=35160040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077001797A KR100968303B1 (ko) | 2004-07-30 | 2005-07-13 | Java에 대한 일반적인 선언적 권한부여 방법, 시스템및 컴퓨터 저장 매체 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7669226B2 (ko) |
EP (1) | EP1774422A1 (ko) |
JP (1) | JP2008508583A (ko) |
KR (1) | KR100968303B1 (ko) |
CN (1) | CN1989472A (ko) |
WO (1) | WO2006010707A1 (ko) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040268139A1 (en) * | 2003-06-25 | 2004-12-30 | Microsoft Corporation | Systems and methods for declarative client input security screening |
US7657746B2 (en) * | 2005-04-22 | 2010-02-02 | Microsoft Corporation | Supporting statements for credential based access control |
US8078740B2 (en) * | 2005-06-03 | 2011-12-13 | Microsoft Corporation | Running internet applications with low rights |
US7945960B2 (en) | 2005-12-06 | 2011-05-17 | Oracle International Corporation | Dynamic conditional security policy extensions |
US8635660B2 (en) * | 2005-12-06 | 2014-01-21 | Oracle International Corporation | Dynamic constraints for query operations |
US20070240194A1 (en) * | 2006-03-28 | 2007-10-11 | Hargrave Bentley J | Scoped permissions for software application deployment |
US20070288989A1 (en) * | 2006-06-09 | 2007-12-13 | Nokia Corporation | Method, electronic device, apparatus, system and computer program product for updating an electronic device security policy |
US8185737B2 (en) | 2006-06-23 | 2012-05-22 | Microsoft Corporation | Communication across domains |
US8201215B2 (en) * | 2006-09-08 | 2012-06-12 | Microsoft Corporation | Controlling the delegation of rights |
US20080066158A1 (en) * | 2006-09-08 | 2008-03-13 | Microsoft Corporation | Authorization Decisions with Principal Attributes |
US8060931B2 (en) | 2006-09-08 | 2011-11-15 | Microsoft Corporation | Security authorization queries |
US20080065899A1 (en) * | 2006-09-08 | 2008-03-13 | Microsoft Corporation | Variable Expressions in Security Assertions |
US7814534B2 (en) * | 2006-09-08 | 2010-10-12 | Microsoft Corporation | Auditing authorization decisions |
US8095969B2 (en) | 2006-09-08 | 2012-01-10 | Microsoft Corporation | Security assertion revocation |
US8656503B2 (en) * | 2006-09-11 | 2014-02-18 | Microsoft Corporation | Security language translations with logic resolution |
US8938783B2 (en) | 2006-09-11 | 2015-01-20 | Microsoft Corporation | Security language expressions for logic resolution |
JP2008165456A (ja) * | 2006-12-28 | 2008-07-17 | Hitachi Ltd | Icカードシステムおよびその方法 |
US7877812B2 (en) * | 2007-01-04 | 2011-01-25 | International Business Machines Corporation | Method, system and computer program product for enforcing privacy policies |
US20080256030A1 (en) * | 2007-04-12 | 2008-10-16 | Massachusetts General Hospital | Fine-grained authorization framework |
US10019570B2 (en) | 2007-06-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Protection and communication abstractions for web browsers |
KR100938559B1 (ko) | 2007-11-20 | 2010-01-22 | 고려대학교 산학협력단 | Xml 노드에 대한 접근 제어 시스템 및 그 방법 |
JP2009187542A (ja) * | 2008-01-10 | 2009-08-20 | Nec Corp | 要求処理システム、要求処理方法、および要求処理プログラム |
US8850409B2 (en) * | 2008-05-21 | 2014-09-30 | Optumsoft, Inc. | Notification-based constraint set translation to imperative execution |
US9524344B2 (en) * | 2008-06-03 | 2016-12-20 | Microsoft Corporation | User interface for online ads |
US20090299862A1 (en) * | 2008-06-03 | 2009-12-03 | Microsoft Corporation | Online ad serving |
US20090327869A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Online ad serving |
US8181230B2 (en) * | 2008-06-30 | 2012-05-15 | International Business Machines Corporation | System and method for adaptive approximating of a user for role authorization in a hierarchical inter-organizational model |
US20100043049A1 (en) * | 2008-08-15 | 2010-02-18 | Carter Stephen R | Identity and policy enabled collaboration |
US8381279B2 (en) * | 2009-02-13 | 2013-02-19 | Microsoft Corporation | Constraining a login to a subset of access rights |
US8762505B2 (en) | 2010-06-14 | 2014-06-24 | Microsoft Corporation | Definition configuration and administration of distributed server systems through structured data model |
US9582407B2 (en) * | 2011-02-25 | 2017-02-28 | International Business Machines Corporation | Security role testing using an embeddable container and properties object |
US8732811B2 (en) * | 2011-03-28 | 2014-05-20 | Canon Kabushiki Kaisha | Systems and methods for implementing security services |
US9215235B1 (en) | 2011-05-23 | 2015-12-15 | Palo Alto Networks, Inc. | Using events to identify a user and enforce policies |
US10560478B1 (en) | 2011-05-23 | 2020-02-11 | Palo Alto Networks, Inc. | Using log event messages to identify a user and enforce policies |
US9660992B1 (en) | 2011-05-23 | 2017-05-23 | Palo Alto Networks, Inc. | User-ID information propagation among appliances |
US8677447B1 (en) * | 2011-05-25 | 2014-03-18 | Palo Alto Networks, Inc. | Identifying user names and enforcing policies |
US8650550B2 (en) | 2011-06-07 | 2014-02-11 | Blackberry Limited | Methods and devices for controlling access to computing resources |
US8763080B2 (en) | 2011-06-07 | 2014-06-24 | Blackberry Limited | Method and devices for managing permission requests to allow access to a computing resource |
US9053337B2 (en) | 2011-06-07 | 2015-06-09 | Blackberry Limited | Methods and devices for controlling access to a computing resource by applications executable on a computing device |
US9009473B2 (en) | 2011-10-13 | 2015-04-14 | International Business Machines Corporation | Providing consistent cryptographic operations across several applications |
US9009472B2 (en) | 2011-10-13 | 2015-04-14 | International Business Machines Corporation | Providing consistent cryptographic operations |
WO2014004154A1 (en) | 2012-06-24 | 2014-01-03 | Bharatia Veeral | Systems and methods for declarative applications |
US9098269B2 (en) * | 2013-01-04 | 2015-08-04 | Microsoft Technology Licensing, Llc | System and method to ensure resource access safety with immutable object types |
US10749690B2 (en) | 2017-03-10 | 2020-08-18 | Samsung Electronics Co., Ltd. | System and method for certificate authority for certifying accessors |
CN110140124B (zh) * | 2017-12-29 | 2021-04-20 | 华为技术有限公司 | 分组应用使用同一密钥共享数据 |
US10992680B2 (en) * | 2018-06-29 | 2021-04-27 | Sap Se | Authorization client management in a distributed computing environment |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6202066B1 (en) * | 1997-11-19 | 2001-03-13 | The United States Of America As Represented By The Secretary Of Commerce | Implementation of role/group permission association using object access type |
JP3546787B2 (ja) * | 1999-12-16 | 2004-07-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アクセス制御システム、アクセス制御方法、及び記憶媒体 |
CA2306933A1 (en) | 2000-04-28 | 2001-10-28 | Ibm Canada Limited-Ibm Canada Limitee | Method for data access code generation |
US7089584B1 (en) * | 2000-05-24 | 2006-08-08 | Sun Microsystems, Inc. | Security architecture for integration of enterprise information system with J2EE platform |
WO2002046893A1 (en) * | 2000-12-04 | 2002-06-13 | Kent Ridge Digital Labs | A method and apparatus for providing xml document encryption |
US7392546B2 (en) * | 2001-06-11 | 2008-06-24 | Bea Systems, Inc. | System and method for server security and entitlement processing |
US20030130953A1 (en) * | 2002-01-09 | 2003-07-10 | Innerpresence Networks, Inc. | Systems and methods for monitoring the presence of assets within a system and enforcing policies governing assets |
US7240365B2 (en) * | 2002-09-13 | 2007-07-03 | Sun Microsystems, Inc. | Repositing for digital content access control |
US7546633B2 (en) * | 2002-10-25 | 2009-06-09 | Microsoft Corporation | Role-based authorization management framework |
US7461395B2 (en) * | 2003-05-06 | 2008-12-02 | Oracle International Corporation | Distributed capability-based authorization architecture using roles |
US7788489B2 (en) * | 2003-05-06 | 2010-08-31 | Oracle International Corporation | System and method for permission administration using meta-permissions |
US7404203B2 (en) * | 2003-05-06 | 2008-07-22 | Oracle International Corporation | Distributed capability-based authorization architecture |
-
2004
- 2004-07-30 US US10/909,107 patent/US7669226B2/en not_active Expired - Fee Related
-
2005
- 2005-07-13 EP EP05758441A patent/EP1774422A1/en not_active Withdrawn
- 2005-07-13 CN CNA2005800251456A patent/CN1989472A/zh active Pending
- 2005-07-13 JP JP2007523057A patent/JP2008508583A/ja active Pending
- 2005-07-13 WO PCT/EP2005/053347 patent/WO2006010707A1/en active Application Filing
- 2005-07-13 KR KR1020077001797A patent/KR100968303B1/ko not_active IP Right Cessation
Non-Patent Citations (1)
Title |
---|
Hashii B. et al, "Supporting reconfigurable security policies for mobile programs", Computer networks, Elsevier science, vol.33. pp 77~93.(2000.06.) |
Also Published As
Publication number | Publication date |
---|---|
WO2006010707A1 (en) | 2006-02-02 |
CN1989472A (zh) | 2007-06-27 |
EP1774422A1 (en) | 2007-04-18 |
US20060026667A1 (en) | 2006-02-02 |
US7669226B2 (en) | 2010-02-23 |
KR20070040376A (ko) | 2007-04-16 |
JP2008508583A (ja) | 2008-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100968303B1 (ko) | Java에 대한 일반적인 선언적 권한부여 방법, 시스템및 컴퓨터 저장 매체 | |
US6941471B2 (en) | Security policy applied to common data security architecture | |
Wonohoesodo et al. | A role based access control for web services | |
US6138238A (en) | Stack-based access control using code and executor identifiers | |
US7823189B2 (en) | System and method for dynamic role association | |
AU2001244194B2 (en) | Mobile code and method for resource management for mobile code | |
EP1988486B1 (en) | Virtualized federated role provisioning | |
US20070006325A1 (en) | Method, system and computer program for controlling access to resources in web applications | |
JP5564521B2 (ja) | クライアント側におけるウェブ・アプリケーションの集約のセキュリティ保護 | |
US20090205018A1 (en) | Method and system for the specification and enforcement of arbitrary attribute-based access control policies | |
US20070186102A1 (en) | Method and apparatus for facilitating fine-grain permission management | |
Nauman et al. | Design and implementation of a fine-grained resource usage model for the android platform. | |
CN116633636A (zh) | 一种企业信息系统中的分级访问控制方法 | |
Burt et al. | Model driven security: unification of authorization models for fine-grain access control | |
Lorch et al. | The PRIMA grid authorization system | |
Jaeger et al. | A role-based access control model for protection domain derivation and management | |
Abi Haidar et al. | XeNA: an access negotiation framework using XACML | |
López et al. | XML-based distributed access control system | |
Anderson | Java™ access control mechanisms | |
Nagaratnam et al. | Role-based Protection and Delegation for Mobile Object Environments | |
Brose | Raccoon—An infrastructure for managing access control in CORBA | |
KR20100024781A (ko) | 퍼베이시브 환경에서의 데이터 접근제어 아키텍처 및 방법 | |
Ivan et al. | Using views for customizing reusable components in component-based frameworks | |
Hagimont et al. | A Protection Scheme for a CORBA Environmen | |
Rissanen | Server based application level authorisation for Rotor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |