계정관리(IM, Identity Management) 분야에 있어서의 핵심은 사용자 계정의 생명주기(life-cycle)를 관리하여 사용자가 사용하는 리소스로의 계정을 생성하고 삭제하는 작업을 자동화하는 데 있다. 계정의 관리는, 사용자 또는 그룹에 설정된 리소스 사용 여부에 따라 리소스에 계정을 생성하거나 리소스에서 계정을 삭제한다.
이러한 사용자 계정은 국내 조직 관리 개념에 연계하여 사용할 때 일반적인 권한이라는 개념과는 다른 방식으로 사용된다. 즉, 조직 관리에 있어서 권한은 특정 사용자가 특정 애플리케이션 또는 시스템에 대하여 어떠한 권한을 갖는지를 설 정하는데, 이러한 리소스 권한에 따라 리소스 계정 프로비저닝 기능이 요구된다.
우선, 본 명세서에서 사용된 용어에 대해 정의한다.
리소스 - 사용자가 사용하는 애플리케이션 시스템 또는 UNIX와 같은 운영 체제를 나타내며, 프로비저닝의 대상이 되는 시스템을 말한다. 애플리케이션의 경우는 애플리케이션 내 각종 기능 및 역할 등과 같은 권한을 가질 수 있고 운영 체제인 경우는 OS 권한을 가질 수 있지만, 일반적으로는 계정 자체에 대한 프로비저닝만 수행한다.
계정 - UNIX 어카운트(account), 윈도우즈 사용자, 그룹웨어 로그인 ID 등과 같이 리소스별 사용자를 나타내는 아이덴티티(Identity), 즉 ID를 의미한다.
프로비저닝 - 사용자의 리소스 사용 여부에 따라 대상 리소스에 계정을 생성 또는 삭제함으로써 사용자의 생명주기에 따른 리소스별 계정에 대한 생명주기를 자동화하는 것
권한 - 애플리케이션 내 또는 운영 체제 안의 자격을 나타내는 집합으로, 기능 또는 기능 집합인 역할의 형태로 운영된다.
종래의 리소스 계정 프로비저닝 방법에 대해 설명하면 다음과 같다. 기존 IM(계정관리) 제품의 리소스 할당은 직접 할당 또는 역할을 통한 할당 방법을 사용한다. 직접 할당은 사용자 또는 사용자 소속 조직/그룹과 리소스 간의 일대일 매핑을 의미하고, 역할을 통한 할당은 사용자 또는 사용자 소속 조직/그룹과 역할 간의 일대일 매핑을 의미한다.
할당에는 두 가지 방법이 사용되기도 한다. 즉, 사용자 또는 조직/그룹에 사용할 리소스 및 역할 할당과, 리소스 및 역할에 사용할 사용자 또는 조직/그룹을 필터 형식으로 할당하는 방식이 사용될 수 있다. 그러나 후자의 경우에는 사용자 또는 조직 기반으로 사용중인 리소스 정보를 구할 수 없는 문제점이 있다.
이러한 기존의 리소스 계정 프로비저닝에 있어서는, 리소스 자체 사용 여부는 설정할 수 있지만, 리소스 내부 권한을 이용한 사용 여부 설정은 불가능하다. 즉, 리소스의 세부 기능 사용 여부에 따른 리소스 사용 여부 설정이 불가능하고, 역할을 리소스 집합으로 정의하기 때문에, 리소스 내의 역할을 표현할 수 없다.
또한, 기존의 리소스 계정 프로비저닝에 있어서는, 리소스 계정 프로비저닝은 가능하지만 리소스 내의 권한 프로비저닝은 불가능하다.
상술한 종래의 리소스 계정 프로비저닝의 문제점을 극복하기 위하여 창안된 본 발명은 리소스 내의 기능과 기능 집합인 역할과, 리소스 독립적인 역할과, 리소스를 권한으로 관리하여 권한에 기반하여 리소스 계정 뿐만 아니라, 리소스 권한까지도 프로비저닝하는 장치를 제공함을 목적으로 갖는다. 구체적으로, 본 발명의 목적은, 리소스 프로비저닝에 있어서 권한 상속 및 거부 등의 관리 방법을 제공하여 최적의 권한 설정에 따른 리소스 프로비저닝이 가능한 장치를 제공하는 것이다.
상기 과제를 해결하기 위하여 본 발명은, 조직/사용자별 권한 설정을 수행하는 관리 애플리케이션과, 상기 관리 애플리케이션에서 설정한 권한 정보를 이용하여 리소스별 사용자를 계산하여 리소스별 사용자 프로비전 정보를 생성하는 프로비저닝 컴포넌트와, 생성된 리소스별 사용자 프로비전 정보를 각 리소스별로 병렬처리하여 사용자별로 리소스내 권한을 계산하는 리소스 권한 컴포넌트와, 계산된 사용자별 리소스내 권한정보로부터 계정작업을 수행하되, 이 계정작업에는 사용자계정 생성, 계정 변경, 계정 삭제 작업을 의미하며, 모든 사용자 계정 작업이 각 리소스별로 진행되도록 하는 리소스 어댑터를 포함하는, 통합 계정관리를 위한 권한기반 리소스 계정 및 권한의 프로비저닝 장치를 제공한다.
여기서 상기 관리 애플리케이션에서 설정하는 권한 정보는 사용자에 대한 "권한허가", 조직에 대한 "권한허가 상속" 및 "권한거부 상속"인 것을 특징으로 하 는데, 이 관리 애플리케이션은, 조직/사용자별 권한 설정을 위해 권한종류(역할, 리소스, 메뉴), 선택한 권한 표시, 리소스 선택창을 포함하는 권한설정 UI를 포함한다.
또한, 상기 프로비저닝 컴포넌트는 리소스별 사용자를 계산하여 리소스별 사용자 프로비전 정보를 생성하기 위하여 역할/리소스/기능정보 데이터를 사용하는 것을 특징으로 하는데, 이 프로비저닝 컴포넌트는 "조직/사용자/권한에 대한 관리 작업"을 "리소스별 계정 및 권한 프로비저닝 작업"으로 변환하는 역할을 하는 것으로서, 권한 정보로부터 사용자의 프로비저닝 대상 리소스 정보를 구하여 리소스별 작업 정보를 리소스 권한 컴포넌트에 전달하는 것을 특징으로 하는 것이다. 상기 프로비저닝 컴포넌트에서의 리소스 계산 방법은 아래와 같다.
프로비전 대상 리소스 = 허용 리소스 전체 - 거부 리소스 전체 허용 리소스 전체 = 허용 리소스 ∪ 허용 역할 내 리소스 ∪ 허용 역할 내 기능 소속 리소스 ∪ 허용 기능 소속 리소스 거부 리소스 전체 = 거부 리소스 ∪ 거부 역할 내 리소스 ∪ 거부 역할 내 기능 소속 리소스 ∪ 거부 기능 소속 리소스 |
한편, 상기 리소스별 사용자 계산은
권한변경 대상 소속 리소스별 사용자 정보를 조회하여 A집합으로 설정하는 수단과, 여기서 조직과 사용자의 권한을 변경하는 수단과, 권한변경 대상 소속 리소스별 사용자 정보를 조회하여 B집합으로 설정하는 수단과, A-B 집합 소속 사용자를 계정에서 삭제하고 이를 리스트에 추가하고, B-A 집합 소속 사용자를 계정에 추가하고 이를 리스트에 추가하고, A∩B 집합 소속 사용자를 계산하는 수단과, 개별 사용자 정보를 조회하여 사용자별 작업 계산이 완료되었는지 평가하는 수단과, 작업계산이 완료되지 않았다면 사용자 소속 집합을 판단하여, B-A 집합 소속인지, A, B집합 모두의 소속인지, A-B 집합 소속인지에 따라 각각 리소스계정 생성 및 리스트 추가, 리소스 계정 갱신 및 리스트 추가, 리소스 계정 삭제 및 리스트 추가를 시행하는 수단을 포함하는 것이 바람직하다.
여기서, 상기 리소스별 사용자 정보는, 소스를 키로하고 작업(사용자 추가/수정/삭제)별로 대상이 되는 사용자 정보 목록으로 구성된 Hashtable로 구성되는 것을 특징으로 한다.
한편, 본 발명의 통합 계정관리를 위한 권한기반 리소스 계정 및 권한의 프로비저닝 장치에 있어서, 상기 리소스 권한 컴포넌트는, 소정의 리소스 권한 계산 방법에 따라 리소스 내의 사용자에 대한 권한 정보를 구하고, 사용자 계정 및 권한(역할/기능)정보를 리소스 어댑터에 전달하는 역할을 하는 것으로, 상기 리소스 권한 계산 방법은 아래와 같다.
리소스 역할 = 허용 리소스 내 허용 역할 전체 - 허용 리소스 내 거부 역할 전체 기능 = 허용 리소스 내 허용 기능 전체 - 허용 리소스 내 거부 기능 전체 허용 기능 전체 = 허용 기능 ∪ 허용 역할 내 기능 거부 기능 전체 = 거부 기능 ∪ 거부 역할 내 기능 |
상기 리소스 어댑터는, 상기 프로비저닝 컴포넌트가 구한 리소스에 대한 계정관리 작업과 리소스 권한 컴포넌트가 구한 리소스의 계정 및 권한 정보를 이용하여 대상 시스템에서 계정을 생성, 변경, 삭제 및 권한 동기화를 수행하는 것을 특징으로 한다.
통합 계정관리 마켓에서 고객은 계정 뿐만 아니라 대상 리소스의 권한도 통합 관리하기를 원한다. 본 발명에 따른 방법을 이용하면 고객은 다음과 같은 이득을 얻을 수 있게 될 것이다. 1) 리소스 내부의 기능 및 역할을 정의할 수 있다. 2) 리소스를 포괄하는 역할을 공유 역할로서 정의할 수 있다. 3) 조직 및 사용자에게 권한(역할, 리소스, 기능)을 허용 또는 거부 형태로 할당할 수 있다. 이를 통해 최종 사용자에게 할당된 권한을 편리하게 조회할 수 있다. 4) 프로비저닝 시스템은 최종 사용자에게 할당된 리소스별로 계정을 프로비저닝 하며, 또한 리소스 내 권한(기능 및 역할) 프로비저닝을 할 수 있으므로, 중앙에서 계정 및 권한의 통합 관리를 실현할 수 있다.
<발명의 전제가 되는 권한 설정 및 할당 등에 관한 설명>
우선, 본 발명의 대상이 되는 "권한"에 대해서 정의한다. 권한은 역할, 리소스, 리소스 내 기능으로 구성한다. 역할은 리소스 내의 기능 집합인 리소스 역할과 리소스 및 기능을 포괄하는 공유 역할로 구성한다.
권한은 다음과 같은 방법의 조합으로 설정한다.
1) 권한 상속: 권한을 조직에 상속하도록 설정하면 하위 조직 및 소속 사용자는 이를 상속받는다.
2) 권한 허가 및 거부
권한을 조직/사용자에게 허가하면 상속 결과를 포함하여 최종적으로 사용자는 권한 구성요소에 대한 사용권을 갖는다. 조직/사용자에 대해 권한을 거부하면 상속 결과를 포함하여 최종적으로 사용자는 권한 구성요소에 대한 사용권을 갖지 못한다. 만일 동일한 역할, 리소스, 기능에 대하여 허가와 거부가 동시에 설정되면 거부가 우선한다.
상기 권한의 할당은 그룹에 대한 권한 할당과 사용자에 대한 권한 할당으로 이루어진다.
1) 그룹에의 권한 할당
그룹은 계층구조(hierarchical structure) 또는 수평구조(flat structure)로 관리된다. 조직은 계층 구조의 그룹과 동일하며, 사용자를 생성할 수 있다. 그리고 조직이 아닌 그룹은 사용자의 소속 관계만 가질 수 있다.
그룹에는 다음과 같은 방법으로 권한을 할당한다. ㄱ) 권한 허가: 할당한 그룹에서만 권한을 갖는다. ㄴ) 권한 허가 상속: 할당한 그룹 및 하위 그룹에서 권한을 갖는다. ㄷ) 권한 거부: 할당한 그룹에서 권한을 갖지 못한다. ㄹ) 권한 거부 상속: 할당한 그룹 및 하위 그룹에서 권한을 갖지 못한다.
최종적인 권한은 그룹 소속 사용자가 갖는데, 그룹에 동일한 권한이 허가와 거부 형태로 할당 또는 상속되는 경우는 거부가 우선하게 되어 권한을 갖지 않게 된다.
2) 사용자에의 권한 할당
사용자는 조직 구조상 말단 객체이며 조직에 직속하고, 여러 조직에 소속되거나(겸직) 여러 그룹에 속할 수 있다. 사용자에게는 다음과 같은 방법으로 권한을 할당한다. ㄱ) 권한 허가: 할당한 그룹에서만 권한을 갖는다. ㄴ) 권한 거부: 할당 한 그룹에서 권한을 갖지 못한다.
사용자는 모든 조직 및 그룹에 할당된 권한을 상속받고, 직접 할당된 권한을 갖는다. 사용자에게 동일한 권한이 허가와 거부 형태로 할당 또는 상속되는 경우는 거부가 우선하게 되어 권한을 갖지 않게 된다.
권한의 구조는, 조직 구조(계층적 구조 및 다중 그룹 소속 관계 모델 사용), 권한 구조(역할, 리소스, 기능 엔티티 및 이들 간의 멤버 관계 사용), 권한 할당 구조(그룹 및 사용자 별 권한에 대한 설정(허가/거부) 및 상속 여부 사용)로 구분된다. 도 1에 이러한 권한 구조의 ER다이어그램을 도시하였다.
<프로비저닝 흐름>
도 2는 본 발명에 따른 프로비저닝 방법 및 장치의 개념을 설명한다. 도 2를 참조하면, 관리 애플리케이션(100)에서 설정한 권한 정보를 이용하여 프로비저닝 시스템(200)의 세 가지 컴포넌트(프로비저닝 컴포넌트(210), 리소스 권한 컴포넌트(240), 리소스 어댑터(270))가 리소스(300)별로 계정/권한 정보를 프로비저닝 한다.
도 2에서 관리 애플리케이션에서 설정한 권한 정보에 대해 예시하면, 사용자(140)에 "권한허가"를 설정하고, 제1단계의 부서(110)에는 "권한허가 상속"을, 제3단계 부서(130)에는 "권한거부 상속"을 설정한다. 프로비저닝 시스템(200)의 프로비저닝 프로세스에 대해서는 도 3의 흐름도를 참조하여 설명한다.
도 3에서, 프로비저닝이 시작되면, 관리 애플리케이션(100)에서 조직/사용자별 권한 설정을 한다(401). 상기 관리 애플리케이션(100)에서의 조직/사용자별 권한 설정 단계(401)에 필요한 권한설정 화면의 예시를 도 3a에 나타내었다. 도 3a에서 권한종류(역할, 리소스, 메뉴), 선택한 권한 표시, 리소스 선택창을 포함하는 권한설정 UI를 볼 수 있다.
다음에 프로비저닝 컴포넌트(210)는 리소스별 사용자를 계산하여 리소스별 사용자 프로비전 정보를 생성한다(403). 이때에는 역할/리소스/기능정보 데이터가 소요된다(402). 생성된 리소스별 사용자 프로비전 정보(404)는 각 리소스별로 병렬처리되어 리소스 권한 컴포넌트(240)에 의해 사용자별로 리소스내 권한을 계산한다(405).
계산된 사용자별 리소스내 권한정보는 리소스 어댑터(270)에 의해 계정작업에 들어간다(407). 계정작업에는 사용자계정 생성(409), 계정 변경(411), 계정 삭제(413)의 세 가지가 있는데, 모든 사용자 계정 작업이 각 리소스별로 완료되면 프로비저닝이 종료된다. 사용자 별 리소스 내 권한 정보에 있어서, 리소스 내의 권한은 리소스 소속 기능, 리소스 소속 기능으로 구성된 집합인 역할을 의미한다. 허가, 거부, 상속 등의 권한 부여에 따른 최종적으로 계산된 허가된 권한 정보만 구한다. 예를 들어, 사용자가 '관리자', '감사자' 권한을 상속받았는데, 감사자 권한이 거부로 지정되었다면 거부가 우선하므로 최종적으로는 관리자 권한만을 갖는다. 또한, 사용자 권한 갱신 작업에서의 사용자 권한은 리소스 소속 기능 및 역할 중에서 최종적으로 계산된 허가된 기능 및 역할을 의미한다.
다시 도 2를 참조하여 설명하면, 프로비저닝 컴포넌트(210)는 "조직/사용자/권한에 대한 관리 작업"을 "리소스별 계정 및 권한 프로비저닝 작업"으로 변환하는 역할을 한다. 리소스 계산 방법에 따라 권한 정보로부터 사용자의 프로비저닝 대상 리소스(300) 정보를 구하여 리소스별 작업 정보를 리소스 권한 컴포넌트(240)에 전달한다. 리소스 계산 방법은 아래와 같다. 이 방법에 의함으로써, 기능만 할당한 경우에도 대상 리소스를 구할 수 있고, 기능이 정의되지 않은 리소스도 할당할 수 있다.
프로비전 대상 리소스 = 허용 리소스 전체 - 거부 리소스 전체 허용 리소스 전체 = 허용 리소스 ∪ 허용 역할 내 리소스 ∪ 허용 역할 내 기능 소속 리소스 ∪ 허용 기능 소속 리소스 거부 리소스 전체 = 거부 리소스 ∪ 거부 역할 내 리소스 ∪ 거부 역할 내 기능 소속 리소스 ∪ 거부 기능 소속 리소스 |
권한 정보 변경에 따라 계정을 생성하거나 삭제해야 하는 리소스를 구분한다. 예를 들어, 시스템 S1, S2, S3에 대하여 사용자가 기존 권한에 따라 시스템 S1, S2를 사용 중이었다고 가정할 때, 사용자의 권한이 변경되어 시스템 S2, S3을 사용하는 것으로 계산되면, 시스템 S1에는 계정 삭제가, 신규 시스템인 S3에는 계정 생성 작업이 진행되며 계속 사용하는 시스템 S2는 시스템 S2에 대한 권한이 변경된 경우에 권한 변경 작업만 수행한다.
한편, 리소스별 사용자 계산 알고리즘은 도 3b의 흐름도로 나타내었다. 도 3b에서 권한변경 대상 소속 리소스별 사용자 정보를 조회하여 A집합으로 설정하고(501), 다시 여기서 조직과 사용자의 권한을 변경(503)한 다음에 권한변경 대상 소속 리소스별 사용자 정보를 조회하여 B집합으로 설정한다(505). 한편, 리소스별 사용자 프로비전 정보는 도 3c와 같이 구성할 수 있다. 즉, 단계 501과 단계 505에서 리소스별 사용자 프로비전 정보는 리소스를 키로하고 작업(사용자 추가/수정/삭제)별로 대상이 되는 사용자 정보 목록으로 구성된 Hashtable로 구성할 수 있다. 그리고 이들 두 단계에서 권한 변경 대상은 권한을 부여하는 조직 또는 사용자를 의미한다. 다음에 A-B 집합 소속 사용자를 계정에서 삭제하고 이를 리스트에 추가하고(507)하고, B-A 집합 소속 사용자를 계정에 추가하고 이를 리스트에 추가하고, A∩B 집합 소속 사용자를 계산한다(511). 다음에 개별 사용자 정보를 조회하여(513) 사용자별 작업 계산이 완료되었는지 평가한다(515). 작업계산이 완료되지 않았다면 사용자 소속 집합을 판단하여(517), B-A 집합 소속인지(520), A, B집합 모두의 소속인지(530), A-B 집합 소속인지(540)에 따라 각각 리소스계정 생성 및 리스트 추가(521), 리소스 계정 갱신 및 리스트 추가(522), 리소스 계정 삭제 및 리스트 추가(525)를 시행한다.
리소스 권한 컴포넌트(240)는 리소스 권한 계산 방법에 따라 리소스(300) 내의 사용자에 대한 권한 정보를 구하고, 사용자 계정 및 권한(역할/기능)정보를 리소스 어댑터에 전달한다. 리소스 권한 계산 방법은 아래와 같다.
리소스 역할 = 허용 리소스 내 허용 역할 전체 - 허용 리소스 내 거부 역할 전체 기능 = 허용 리소스 내 허용 기능 전체 - 허용 리소스 내 거부 기능 전체 허용 기능 전체 = 허용 기능 ∪ 허용 역할 내 기능 거부 기능 전체 = 거부 기능 ∪ 거부 역할 내 기능 |
리소스 어댑터(270)는 프로비저닝 컴포넌트(210)가 구한 리소스(300)에 대한 계정관리 작업과 리소스 권한 컴포넌트(240)가 구한 리소스의 계정 및 권한 정보를 이용하여 대상 시스템에서 계정을 생성, 변경, 삭제 및 권한 동기화를 수행한다.
계정관리 작업별 리소스 프로비저닝 방법에 대해 설명한다. 그룹, 사용자에 대한 관리 작업에 따라 권한 상속을 고려하여 리소스별로 아래 표와 같은 작업이 발생한다.
본 발명에 따른 리소스 프로비저닝 프로세스에 있어서의 데이터모델에 대해 설명하면 다음과 같다.
도 4는 본 발명의 리소스 프로비저닝의 일실시예에 사용된 초기데이터를 나 타내는 것으로서, 일단 그 전제 구성을 설명하면 다음과 같다.
총무팀은 총무부의 하위 부서이다. 홍길동은 총무팀 소속 사용자이다. KM사용자는 KM 리소스를 사용하는데, KM 리소스에는 지식조회 기능이 있다. GW사용자는 GW 리소스를 사용하는데, GW 리소스에는 메일 발송, 결제 기능 이 있다. 총무부는 KM사용자 역할을 상속한다. → 홍길동은 KM 리소스를 사용하며, 지식 조회 권한이 있다. |
따라서 최종적으로 홍길동은 KM 리소스에 계정과 권한이 있다.
도 5는 역할허용 작업 후의 데이터모델을 나타낸다. 본 실시예에서, 홍길동에게 GW 관리자 역할을 허용한 후에 홍길동은 GW사용자 권한을 갖게 된다. 도 5의 데이터모델을 이용하여 수행되는 프로비저닝 과정을 설명하면 다음과 같다.
프로비저닝 컴포넌트는 GW 리소스에 대해 홍길동을, KM 리소스에 대해 홍길동이 사용중임을 계산한다. - KM 리소스는 이미 사용중이었기 때문에 KM 리소스에 대해서는 필요에 따른 권한 갱신 작업을 구한다. - GW 리소스는 신규 할당된 것이므로, GW 리소스에 홍길동 계정을 생성하는 작업을 구한다. |
리소스 권한 컴포넌트는 - KM 리소스에 대해 홍길동의 지식 조회 권한을 구한다. - GW 리소스에 대해 홍길동의 메일 발송, 결제 권한을 구한다. |
리소스 어댑터는 - GW 리소스에 대해 홀길동의 계정을 생성하고, 메일 발송, 결제 권한을 등록한다. |
최종적으로 홍길동은 KM 리소스와 GW 리소스에 대한 계정과 권한을 갖게 된다.
도 6은 기능거부 작업 후의 데이터모델을 예시한다.
우선, 홍길동에게 지식 조회기능을 거부 한 후에는, 홍길동은 KM 사용자 권한에 의해 지식 조회 권한을 갖지만, 지식 조회 권한을 거부하도록 추가 설정되어 최종적으로 지식 조회 권한을 갖지 않는다. 지식 조회 권한은 KM 리소스의 권한인데, 현재 KM 리소스의 권한을 하나도 갖지 않으므로 KM 리소스에 계정을 갖지 않는 것이다.
도 6의 데이터모델을 이용하여 수행되는 프로비저닝 과정을 설명하면 다음과 같다.
프로비저닝 컴포넌트는 GW 리소스에 대해 홍길동이 사용중임을 계산한다. - KM 리소스를 사용하지 않으므로, KM 리소스에 홍길동 계정을 삭제하는 작업을 구한다. - GW 리소스는 이미 사용중이었기 때문에 GW 리소스에 대해서는 필요에 따른 권한 갱신 작업을 구한다. |
리소스 권한 컴포넌트는 GW 리소스에 대해 홍길동의 메일 발송, 결제 권한을 구한다. |
리소스 어댑터는 KM 리소스에 대해 홀길동의 계정을 삭제한다. |
최종적으로 홍길동은 GW 리소스에 대한 계정과 권한을 갖게 된다.
한편, 지금까지 설명한, 본 발명의 장치는 실제로 컴퓨터 프로그램에 의해 구현될 수 있고, 이 프로그램은 컴퓨터 기록 매체에 저장될 수 있다. 컴퓨터 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 기록매체를 포함한다. 그 예로는, ROM, RAM, CD, DVD-ROM, 자기테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송의 형태로 구현되는 것도 여기에 포함된다. 즉, 이러한 기록매체는 네트웍으로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.