KR20080024513A - 비관리형 네트워크에서의 공통 id를 위한 계정 동기화 - Google Patents

비관리형 네트워크에서의 공통 id를 위한 계정 동기화 Download PDF

Info

Publication number
KR20080024513A
KR20080024513A KR1020087000237A KR20087000237A KR20080024513A KR 20080024513 A KR20080024513 A KR 20080024513A KR 1020087000237 A KR1020087000237 A KR 1020087000237A KR 20087000237 A KR20087000237 A KR 20087000237A KR 20080024513 A KR20080024513 A KR 20080024513A
Authority
KR
South Korea
Prior art keywords
computer
unmanaged
workgroup
secure
user
Prior art date
Application number
KR1020087000237A
Other languages
English (en)
Inventor
모하메드 샘지
존 브리자크
크리스 구자크
길레스 에드워드 밴 더 보거트
니콜라스 존 토마셀리
아닐 쿠마르 야다브
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080024513A publication Critical patent/KR20080024513A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

플랫폼은, 서버 없이, 그룹 내의 컴퓨터들 간의 공통 사용자 액세스(common user access) 및 보안 자원 공유(secure resource sharing)를 위한 비관리형 보안 작업그룹(unmanaged secured workgroup)을 지원한다. 비관리형 보안 작업그룹의 각각의 컴퓨터에서 사용자 계정들을 복제 및 수정함으로써 그 계정들이 동기화된다. 컴퓨터는 비관리형 보안 작업그룹 내의 다른 컴퓨터들에 계정 정보의 변경을 광고(advertise)한다. 비관리형 보안 작업그룹 내의 컴퓨터들 중 하나가 그 변경이 현재의 계정 정보에 반영되어 있지 않은 것으로 판정하는 경우, 컴퓨터들은 광고측 컴퓨터(advertising computer)에 갱신된 계정 정보를 요청한다. 비관리형 보안 작업그룹에서 사용자 계정을 동기화하기 이전에 서로 다른 컴퓨터에 있는 사용자 계정들 간의 어떤 충돌도 해결된다. 또한, 애플리케이션 프로그램 인터페이스(API)는 애플리케이션이 네트워크화된 컴퓨터 시스템 및 비관리형 보안 작업그룹의 속성들을 쿼리하고 비관리형 보안 작업그룹에 가입할 수 있게 해준다.
비관리형 네트워크, 계정 동기화, 작업그룹, 인터페이스

Description

비관리형 네트워크에서의 공통 ID를 위한 계정 동기화{ACCOUNT SYNCHRONIZATION FOR COMMON IDENTITY IN AN UNMANAGED NETWORK}
컴퓨터 네트워크 기술의 진보에 따라, 대규모 컴퓨터 네트워크가 네트워크의 사용자 액세스 및 보안을 관리하는 고도의 운영 방식으로 아주 복잡하게 되었다. 예를 들어, 대규모 컴퓨터 네트워크는 일반적으로 다수의 도메인을 가지며, 그 각각은 사용자 이름, 패스워드, 및 그 도메인 내의 기계들에 대한 퍼미션(permission)의 데이터베이스를 포함하는 주 도메인 컨트롤러(primary domain controller)를 갖는다.
이와 달리, 홈 네트워크 및 소기업 네트워크 등의 소규모 로컬 네트워크는 여전히 꽤 간단하고 복잡하지 않다. 대부분의 소규모 네트워크는 중앙 집중 방식으로 계정 정보를 처리하는, 대규모 네트워크에서의 도메인 컨트롤러 등의, 전용 개체가 없다는 점에서 비관리형(unmanaged)이다. 이러한 비관리형 네트워크 내의 기계들은 일반적으로 동일한 네트워크 허브에 연결되어 있고 사용자가 작업그룹 내의 프린터 및 공유 폴더 등의 것들을 찾는 데 도움을 주기 위한 것일 뿐인 느슨한 피어-투-피어 그룹(loose peer-to-peer group)(때때로 "작업그룹"이라고 함)으로서 동작한다. 그렇지 않은 경우, 그 기계들은 독립형 기계(stand-alone machine)처럼 동작한다. 그 결과, 비관리형 네트워크는 사용자에게 부가적 가치를 거의 제공하 지 않는다.
효과적인 보안 관리(security administration)가 없으며, 네트워크 액세스 및 자원 공유를 용이하게 해주기 위해 기계들이 잘 통합되어 있지 않다. 로컬 계정(local account)이 모든 기계 상에서 수동으로 생성되어야만 하며, 작업그룹 내의 서로 다른 기계들 상의 계정들 간에 아무런 관계가 없다. 따라서, 사용자는 한 기계에 로그할 수 있지만 동일한 네트워크 내의 다른 기계에는 로그할 수 없는데, 그 이유는 사용자의 계정이 다른쪽 기계 상에 설정되어 있지 않기 때문이다. 네트워크 내의 컴퓨터들을 열거할 신뢰할 만한 메카니즘이 없다. 또한, 기계들 상의 자원의 공유를 구현 및 유지하는 것이 어려울 수 있으며 보안을 제공하기 위해 그 공유를 관리하는 것이 어려울 수 있다.
네트워크화된 컴퓨터 시스템은 종종 한 컴퓨터에서 다른 컴퓨터로 이동(migrate)할지도 모를 사용자를 지원한다. 이상의 것을 고려하여, 본 발명은 서버 없이 비관리형 보안 작업그룹 내에 컴퓨터 네트워크 상의 다수의 컴퓨터들을 구성하는 플랫폼을 제공한다. 비관리형 보안 작업그룹은 그룹 내의 컴퓨터들 간의 공통 사용자 액세스(common user access) 및 보안 자원 공유(secure resource sharing)를 제공한다. 본 발명의 한 측면에 따르면, 비관리형 보안 작업그룹의 컴퓨터들 중 하나에서 사용자 계정 정보가 수정 또는 추가되는 경우 비관리형 보안 작업그룹의 각각의 컴퓨터에서 사용자 계정들이 동기화된다. 사용자 계정은 비관리형 보안 작업그룹 내의 계정 정보를 동기화하기 위해 복제 또는 수정될 수 있다.
본 발명의 다른 측면에서, 컴퓨터는 비관리형 보안 작업그룹 내의 다른 컴퓨터들에 계정 정보의 변경을 광고(advertise)한다. 비관리형 보안 작업그룹 내의 컴퓨터들 중 하나가 그 변경이 현재의 계정 정보에 반영되어 있지 않은 것으로 판정하는 경우, 컴퓨터들은 광고측 컴퓨터(advertising computer)에 갱신된 계정 정보를 요청할 수 있다.
본 발명의 다른 측면에서, 본 발명은 비관리형 보안 작업그룹에서 갱신된 사용자 계정을 동기화하기 이전에 사용자 계정에 어떤 충돌이 존재하는지 여부를 판정한다. 충돌이 해결될 때, 변경된 사용자 계정이 비관리형 보안 작업그룹의 컴퓨터들에 복제된다.
본 발명의 다른 측면에서, 애플리케이션 프로그램 인터페이스(API)는 애플리케이션이 네트워크화된 컴퓨터 시스템 및 비관리형 보안 작업그룹의 속성들을 쿼리할 수 있게 해준다. 본 발명의 예시적인 실시예에서, API는 컴퓨터 네트워크 내의 비관리형 보안 작업그룹의 리스트를 제공하고, 지정된 비관리형 보안 작업그룹에 관한 정보를 제공하며, 비관리형 보안 작업그룹 내의 지정된 컴퓨터에 관한 정보를 제공하고, 새로운 비관리형 보안 작업그룹을 생성하며, 컴퓨터가 비관리형 보안 작업그룹에 가입(join)하거나 그로부터 탈퇴(leave)할 수 있게 해준다.
본 발명의 다른 측면에서, 요청측 컴퓨터는 비관리형 보안 작업그룹 내의 멤버 컴퓨터와 신뢰를 구축함으로써 비관리형 보안 작업그룹에 가입한다. 멤버 컴퓨터는 요청측 컴퓨터를 인증한다. 요청측 컴퓨터는 자체-서명 인증서(self-signed certificate)를 사용하여 멤버 컴퓨터에 관한 계정을 설정한다. 요청측 컴퓨터는 이어서 비관리형 보안 작업그룹에 관한 정보를 저장하고 그 자체를 비관리형 보안 작업그룹의 멤버로서 공표한다.
이하에서 실시예에 대한 설명 섹션에서 더 기술되는 일련의 개념들을 간단화된 형태로 소개하기 위해 이 요약이 제공된다. 이 요약은 청구된 발명의 주요 특징 또는 필수적인 특징을 확인하기 위한 것도 아니고 청구된 발명의 범위를 정하는 데 보조 수단으로서 사용하기 위한 것도 아니다.
도 1은 본 발명의 예시적인 실시예에 따른, 소규모 비관리형 보안 작업그룹에서 사용될 수 있는 예시적인 컴퓨터 시스템을 전체적으로 나타낸 블록도.
도 2는 본 발명의 예시적인 실시예에 따른, 적은 수의 컴퓨터가 비관리형 보안 작업그룹으로 형성되어 있는 로컬 컴퓨터 네트워크를 나타낸 개략도.
도 3은 본 발명의 예시적인 실시예에 따른, 비관리형 보안 작업그룹 내의 2개의 컴퓨터 간의 신뢰의 구축과 사용자 계정 및 사용자 프로파일의 복제를 나타낸 개략도.
도 4는 본 발명의 예시적인 실시예에 따른, 컴퓨터가 비관리형 보안 작업그룹에 가입하는 프로세스를 나타낸 플로우차트.
도 5는 본 발명의 예시적인 실시예에 따른, 비관리형 보안 작업그룹에 가입하거나 그를 생성하는 옵션을 제공하는 예시적인 사용자 인터페이스 창을 나타낸 도면.
도 6은 본 발명의 예시적인 실시예에 따른, 컴퓨터를 비관리형 보안 작업그 룹에 가입시키는 시나리오를 나타낸 도면.
도 7은 본 발명의 예시적인 실시예에 따른, 한 컴퓨터로부터의 갱신된 계정 정보를 비관리형 보안 작업그룹 내의 다른 컴퓨터에 제공하는 흐름도를 나타낸 도면.
도 8은 본 발명의 예시적인 실시예에 따른, 비관리형 보안 작업그룹 내의 컴퓨터로부터 갱신된 계정 정보를 획득하는 흐름도를 나타낸 도면.
도 9는 본 발명의 예시적인 실시예에 따른, 비관리형 보안 작업그룹에서 애플리케이션 프로그래밍 인터페이스(API)를 지원하는 아키텍처를 나타낸 도면.
도 10a 및 도 10b는 본 발명의 예시적인 실시예에 따른 일반 프로그래밍 인터페이스(generic programming interface)를 나타낸 도면.
도 11a 및 도 11b는 본 발명의 예시적인 실시예에 따른 분해된 프로그래밍 인터페이스(factored programming interface)를 나타낸 도면.
도 12a 및 도 12b는 본 발명의 예시적인 실시예에 따른 재정의된 프로그래밍 인터페이스(redefined programming interface)를 나타낸 도면.
도 13a 및 도 13b는 본 발명의 예시적인 실시예에 따른 병합된 기능(merged functionality)을 갖는 프로그래밍 인터페이스를 나타낸 도면.
도 14a 및 도 14b는 본 발명의 예시적인 실시예에 따른 분리된 기능(divorced functionality)을 갖는 프로그래밍 인터페이스를 나타낸 도면.
도 15a 및 도 15b는 본 발명의 예시적인 실시예에 따른 인터페이스 기능을 대체할 코드를 동적으로 재작성함으로써 인터페이스를 프로그래밍하는 것을 나타낸 도면.
본 발명에 대한 이상의 요약은 물론 본 발명의 예시적인 실시예에 대한 이하의 상세한 설명은 청구된 발명에 관하여 제한이 아닌 예로서 포함되어 있는 첨부 도면과 관련하여 읽어보면 잘 이해된다.
유사한 참조 번호가 유사한 요소를 나타내고 있는 도면을 참조하면, 본 발명이 적당한 컴퓨팅 환경에서 구현되는 것으로 도시되어 있다. 꼭 그럴 필요는 없지만, 본 발명은 일반적으로 퍼스널 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 게다가, 당업자라면 본 발명이 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 기타 등등을 비롯한 다른 컴퓨터 시스템 구성에서 실시될 수 있다는 것을 잘 알 것이다. 본 발명은 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 컴퓨터 저장 장치 둘다에 위치할 수 있다.
상세한 설명의 이해를 돕기 위해 이하의 용어들에 대한 정의가 포함되어 있다.
Figure 112008000699275-PCT00001
도메인 - 도메인 컨트롤러(예를 들어, 서버)에 의해 중앙 집중식으로 관 리되는 네트워크화된 컴퓨터 그룹. 도메인 컨트롤러는 도메인에 대한 사용자 액세스 및 보안을 관리한다. 도메인 컨트롤러는 일반적으로 사용자 이름, 패스워드, 및 도메인 내의 컴퓨터들(기계들)에 대한 퍼미션의 데이터베이스를 포함한다.
Figure 112008000699275-PCT00002
비관리형 보안 작업그룹 - 서버 없이 사용자 액세스 및 보안이 제공되는 네트워크화된 컴퓨터들의 피어-투-피어 그룹. 일반적으로, 피어-투-피어 그룹 내의 각각의 컴퓨터(기계)에 계정 데이터 구조가 유지된다. 비관리형 보안 작업그룹은 개념적으로 로컬 네트워크에 존재하는 보안된 컴퓨터 그룹으로 볼 수 있으며, 여기서 컴퓨터들은 외부에 있는 사용자 및 기계에 의한 있을 수 있는 침입으로부터 그 자신을 보호하기 위해 다함께 동작하는 반면, 보안된 그룹 내의 사용자들은 그룹의 기계들 및 자원들에 액세스하는 데 높은 정도의 자유 및 협력을 제공받는다.
본 발명의 예시적인 측면에 따라 소규모 비관리형 보안 작업그룹에서 사용될 수 있는 범용 컴퓨팅 장치에 대해 이하에서 기술한다. 이제 도 1을 참조하면, 범용 컴퓨팅 장치는 처리 장치(21), 시스템 메모리(22), 및 시스템 메모리를 비롯한 다양한 시스템 컴포넌트를 처리 장치(21)에 연결시키는 시스템 버스(23)를 포함하는 종래의 퍼스널 컴퓨터(20)의 형태로 도시되어 있다. 시스템 버스(23)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25를 포함한다. 시동 중과 같은 때에, 퍼스널 컴퓨터(20) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 ROM(24)에 저장되어 있다. 하드 디스크(60)에 기록을 하고 그로부터 판독을 하는 하드 디스크 드라이브(27), 이동식 자기 디스크(29)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(28), 및 CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(31)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(30)를 포함한다.
하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 각각 접속된다. 드라이브들 및 이들과 관련된 컴퓨터 판독가능 매체는, 퍼스널 컴퓨터(20)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경이 하드 디스크(60), 이동식 자기 디스크(29), 및 이동식 광 디스크(31)를 이용하지만, 당업자라면 자기 카세트, 플래쉬 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지, 랜덤 액세스 메모리, 판독 전용 메모리, SAN(storage area network), 기타 등등의, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 기타 유형의 컴퓨터 판독가능 매체도 역시 예시적인 운영 환경에서 사용될 수 있다는 것을 잘 알 것이다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램(36), 기타 프로그램 모듈(37) 및 프로그램 데이터(38)를 비롯한 다수의 프로그램 모듈이 하드 디스크(60), 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25) 상에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42) 등의 입력 장치를 통해 퍼스널 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 기타 등등을 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 연결된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 연결되어 있지만, 병렬 포트, 게임 포트, USB(universal serial bus) 또는 네트워크 인터페이스 카드 등의 기타 인터페이스에 의해 연결될 수 있다. 모니터(47) 또는 기타 유형의 디스플레이 장치도 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 연결되어 있다. 모니터에 부가하여, 퍼스널 컴퓨터는 일반적으로 스피커 및 프린터 등의 기타 주변 출력 장치(도시 생략)를 포함한다.
퍼스널 컴퓨터(20)는 원격 컴퓨터(49) 등의 하나 이상의 원격 컴퓨터에의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 또하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있으며, 일반적으로 퍼스널 컴퓨터(20)와 관련하여 상기한 요소들 중 다수 또는 그 전부를 포함하지만, 메모리 저장 장치(50)만이 도 1에 도시되어 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN)(51) 및 원거리 통신망(WAN)(52)을 포함한다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 로컬 네트워크(51)에 연결되어 있다. WAN 네트워킹 환 경에서 사용될 때, 퍼스널 컴퓨터(20)는 일반적으로 WAN(52)을 통해 통신을 설정하는 모뎀(54) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 연결된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(20) 또는 그의 일부분과 관련하여 도시된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들 간에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다.
이하의 설명에서, 본 발명은, 달리 언급하지 않는 한, 하나 이상의 컴퓨터에 의해 수행되는 동작들의 심볼 표현 및 작용을 참조하여 기술된다. 그 자체로서, 때로는 컴퓨터-실행되는 것으로 말해지는 이러한 작용 및 동작이 데이터를 구조화된 형태로 표현하는 전기 신호의 컴퓨터의 처리 장치에 의한 조작을 포함한다는 것을 잘 알 것이다. 이 조작은 데이터를 변환하거나 그 데이터를 컴퓨터의 메모리 시스템 내의 장소들에 유지하며, 이는 당업자라면 잘 이해하는 방식으로 컴퓨터의 동작을 재구성하거나 다른 방식으로 변경한다. 데이터가 유지되어 있는 데이터 구조는 데이터의 형식에 의해 정의되는 특정의 속성들을 갖는 메모리의 물리적 장소들이다. 그렇지만, 본 발명이 상기와 같이 기술되어 있지만, 이는 제한하려는 것이 아닌데, 그 이유는 당업자라면 이후에 기술되는 작용들 및 동작들이 하드웨어로도 구현될 수 있다는 것을 잘 알 것이기 때문이다.
이제 도 2를 참조하면, 본 발명의 예시적인 실시예는, 중앙 집중식 관리 컴포넌트를 사용할 필요없이, 사용자 액세스 및 자원 공유에 대한 그룹-전반적인 제 어를 제공하기 위해 비관리형 로컬 네트워크(200) 상의 적은 수의 컴퓨터, 예를 들어, 10개 이하의 멤버 컴퓨터가 비관리형 보안 작업그룹을 형성하는 플랫폼에 관한 것이다. 예시적인 실시예에서, 비관리형 로컬 네트워크(200)는 피어-투-피어 연관관계(peer-to-peer association)로 구성되어 있다. 비관리형 로컬 네트워크(200)는 비관리형(unmanaged)으로서 분류되는데, 그 이유는 중앙 서버가 사용자 계정 정보를 관리 및 저장하지 않기 때문이다. 비관리형 보안 작업그룹에서, 사용자별로 그룹 내의 자원의 공유를 허용하면서 그룹 내에 있지 않은 컴퓨터 또는 사용자에 의한 자원의 불법 액세스 및 사용을 방지하기 위해 보안 정책 및 액세스 제어가 그룹-전반적으로 구현된다.
본 발명의 예시적인 실시예에서, 도 2는 홈 네트워크 및 소기업 네트워크를 나타내는 소규모 로컬 네트워크(70)를 나타낸 것이다. 이 로컬 네트워크는 도메인 컨트롤러, 기타 등등의 중앙 집중식 관리 컴포넌트를 갖지 않는다는 점에서 비관리형이다. 도 2에 도시한 바와 같이, 로컬 네트워크는 네트워크 허브 또는 스위치(72) 및 그에 연결된 복수의 컴퓨터(또는 컴퓨팅 장치)를 갖는다. 컴퓨터들 간의 연결은 무선일 수 있다. 예를 들어, 장치(76)는 액세스 포인트(access point)(78)를 통해 네트워크와 통신을 하는 무선 장치이다.
본 발명의 예시적인 측면들에 따르면, 로컬 네트워크(70) 상의 컴퓨터들 중 몇몇은 비관리형 보안 작업그룹을 형성할 수 있다. 비관리형 보안 작업그룹이 네트워크의 특정의 토폴로지에 의존하지 않는다는 것을 잘 알 것이다. 예를 들어, 비관리형 보안 작업그룹은 무선 장치에 의해 형성되는 애드혹 네트워크(ad hoc network)에 구축될 수 있다. 관리 걱정 및 데이터를 복제할 필요성으로 인해, 비관리형 보안 작업그룹 플랫폼은 그룹 내의 컴퓨터의 수가 작게 유지될 때 더 효과적으로 동작한다. 예를 들어, 주어진 비관리형 보안 작업그룹에 가입할 수 있는 컴퓨터의 수는 미리 정해진 최대 수의 컴퓨터(예를 들어, 비관리형 보안 작업그룹 내의 10개의 멤버)로 제한될 수 있다.
예로서, 도 2에 나타낸 바와 같이, 컴퓨터(90, 92, 94, 96)는 사용자에게 친숙한 이름 "TobyClub"을 갖는 비관리형 보안 작업그룹(100)(컴퓨터를 연결하는 점선으로 개략적으로 표시됨)을 형성하고 있다. 가입할 기존의 그룹이 없는 경우 또는 컴퓨터의 사용자가 기존의 어떤 그룹에도 가입하고 싶지 않는 경우, 새로운 비관리형 보안 작업그룹이 생성될 수 있다. 이 점에서, 본 발명의 예시적인 실시예에서, 각각의 컴퓨터는 단지 하나의 비관리형 보안 작업그룹에만 속할 수 있다. 이하에서 더 상세히 기술하는 바와 같이, 비관리형 보안 작업그룹 내의 컴퓨터들은 서로 간에 신뢰를 구축하고 그 그룹 내에서 사용자 계정 데이터 및 사용자 프로파일 데이터 등의 정보를 공유한다. 컴퓨터(102) 등의 새로운 컴퓨터는 비관리형 보안 작업그룹에 가입할 수 있으며, 그 그룹 내의 컴퓨터들은 이 보안 작업그룹을 탈퇴할 수 있고, 특별한 경우에 그 그룹으로부터 축출될 수 있다.
비관리형 로컬 네트워크 상에 소규모의 비관리형 보안 작업그룹을 형성하는 것의 바탕을 이루는 개념이 도 3에 도시되어 있다. 컴퓨터(102)가 다른 컴퓨터(96)에 가입하여 비관리형 보안 작업그룹을 형성하기 위해서는, 컴퓨터(102)는 먼저 제2 컴퓨터(96)와 신뢰를 구축해야 한다. 이것은 컴퓨터(96)가 속해 있는 기 존의 보안 작업그룹에 컴퓨터(102)가 가입하고자 할 때 또는 컴퓨터(102)가 컴퓨터(96)로부터의 초대에 응답하여 새로운 그룹을 형성할 때 일어난다. 2개의 컴퓨터 간에 신뢰를 구축하는 많은 서로 다른 방법이 있다. 일반적으로, 신뢰를 구축하는 일은 하나의 컴퓨터가 상대편 컴퓨터가 알고 있는 어떤 비밀을 알고 있음을 보여줌으로써 하나의 컴퓨터가 상대편 컴퓨터에 대해 인증받을 것을 필요로 한다. 본 발명의 예시적인 실시예에서, 이 비밀은 상대편 컴퓨터가 받는 그룹 관리자(group administrator)의 사용자 이름 및 패스워드이다. 다른 예시적인 실시예에서, 이 비밀은 상대편 컴퓨터에 의해 발생되는 랜덤한 PIN(personal identification number)이다. 어떤 구현에서, 2대의 컴퓨터 간의 상호 인증이 필요할 수 있다. 2대의 컴퓨터 간에 신뢰를 구축하는 특정의 방법이 본 발명에 중요하지 않다는 것을 잘 알 것이다.
컴퓨터(96)와 컴퓨터(102) 간의 신뢰가 구축된 후에, 이들 컴퓨터는 비관리형 보안 작업그룹을 형성하거나, 컴퓨터(96)가 기존의 비관리형 보안 작업그룹에 속해 있는 경우, 컴퓨터(102)가 그 그룹에 받아들여진다. 그를 위해, 예시적인 실시예에서, 각각의 비관리형 보안 작업그룹 및 이 보안 작업그룹 내의 각각의 노드는 고유의 식별자인 GUID(Globally Unique Identifier)를 할당받는다. 컴퓨터가 (새로운 그룹을 생성하거나 기존의 그룹에 가입함으로써) 비관리형 보안 작업그룹의 멤버가 될 때, 기계의 GUID 및 그 기계 상에서의 사용자 계정의 GUID가 네트워크 그룹의 권한(authority)/ID(identity)를 반영하기 위해 그룹의 GUID로 변경 또는 재생성된다.
비관리형 보안 작업그룹의 형성 이후에, 사용자 계정 데이터 및 사용자 프로파일은 그룹 내의 각각의 컴퓨터로 복제된다. 도 3에 나타낸 바와 같이, 컴퓨터(96) 상의 사용자 계정 데이터(110)는 컴퓨터(102)로 복제되고, 그 역도 마찬가지이다. 사용자 계정이 복제된 후에, 사용자 계정과 연관된 사용자 프로파일(112)이 나머지 컴퓨터들로 복제된다. 용어 "사용자 프로파일"은 본 명세서에서 특정의 사용자에 관계된 데이터를 의미하기 위해 사용된다. 예를 들어, 사용자 프로파일은 그 사용자에 대한 레지스트리 설정(registry setting), 사용자의 선택된 문서, 보안 정책, 사용자 타일(user tile)(즉, 사용자의 아이콘 표현), 및 사용자 세션을 개인화하는 설정, 구성 및 파일, 기타 등등을 포함할 수 있다. 사용자 프로파일의 특정의 내용은 구현에 의존한다. 보안 작업그룹의 관리자는 사용자 계정을 생성하고 그룹 내의 한 컴퓨터에 관한 보안 정책을 설정할 수 있으며, 계정 및 보안 정책은 보안 작업그룹 내의 모든 기계들로 복제된다. 그룹 내의 각각의 컴퓨터가 사용자 계정들 및 사용자 프로파일들 전부를 가지고 있기 때문에, 유효한 계정을 갖는 사용자는 그의 사용자 이름 및 패스워드를 사용하여 그룹 내의 임의의 컴퓨터에 로그온할 수 있다. 사용자 타일 및 개인화된 사용자 세션에 대한 설정, 구성 및 파일 등의 데이터를 복제하는 일은 또한 사용자가 비관리형 보안 작업그룹 내의 컴퓨터들에 걸쳐 균일한 사용자 경험을 가질 수 있게 해준다. 본 발명의 일 실시예에서, 계정 데이터 및 사용자 프로파일의 서브셋은 문자그대로 동기화되기 보다는 실질적으로 통합될 수 있다. 본 발명의 일 실시예는 사용자가 비관리형 보안 작업그룹의 멤버 상에 애플리케이션을 설치하는 애플리케이션 가상화(virtualization)/동 기화(synchronization)를 지원하고, 상대편 멤버 상에 소프트웨어를 설치하지 않고 비관리형 보안 작업그룹의 임의의 다른 멤버로부터의 애플리케이션을 사용할 수 있다.
도 2로 돌아가면, 본 발명의 예시적인 실시예에서, 비관리형 보안 작업그룹에 참여할 수 있는 컴퓨터(96)는 비관리형 보안 작업그룹의 생성, 가입 및 동작을 처리하는 보안 그룹 서비스 모듈(secured group service module)(116)을 구비하고 있다. 컴퓨터(96)는 또한 LSA(local security authority, 로컬 보안 권한)(118) 및 SAM(security account manager, 보안 계정 관리자)(120)를 갖는다. LSA(118)는 로컬 시스템 보안 정책, 사용자 인증, 및 보안 메시지를 운영 체제의 이벤트 로그(event log)로 전송하는 일을 책임지고 있는 사용자 모드 프로세스(user mode process)이다. 보안 정책은, 예를 들어, 어느 사용자가 기계에 로그온할 수 있는지, 패스워드 정책, 사용자 및 그룹에 부여된 권한(privilege), 및 시스템 보안 감사 설정, 기타 등등을 지정한다. 보안 계정 관리자(120)는 기계에 액세스할 수 있는 사용자 및 그룹을 식별해주는 데이터를, 그들의 패스워드 및 기타 속성과 함께, 포함하고 있는 컴퓨터의 시스템 레지스트리에 저장되어 있는 데이터베이스를 관리한다. 컴퓨터는 또한 선택된 인증 프로토콜에 따라 인증 동작을 수행하는 Windows NT
Figure 112008000699275-PCT00003
LAN Manager(NTLM) 모듈(122) 또는 Kerberos 모듈(126) 등의 하나 이상의 인증 모듈을 포함한다. 게다가, 사용자 계정 및 프로파일을 비롯한 데이터 및 파일을 비관리형 보안 작업그룹 내의 다른 컴퓨터들로 복제하기 위해 FRS(File Replication Server, 파일 복제 서버)(128)가 사용된다.
도 2에 도시된 실시예에서, 애플리케이션(121)은 API 계층 모듈(119)을 통해 비관리형 보안 작업그룹의 생성, 가입 및 동작을 처리하기 위해 보안 그룹 서비스 모듈(secured group service module)(116)과 인터페이스한다. 설명하게 되는 바와 같이, API 계층 모듈(119)은 비관리형 보안 작업그룹에 관한 정보를 획득하고 비관리형 보안 작업그룹을 생성하며 비관리형 보안 작업그룹에 가입하고 비관리형 보안 작업그룹을 탈퇴하기 위한 애플리케이션 프로그램 인터페이스(API)를 지원한다.
이제부터 도 2 및 도 4 둘다를 참조하면, 본 발명의 예시적인 실시예에서, 독립형 컴퓨터(102)가 로컬 네트워크(70)에 연결되어 켜질 때(단계 170), 그의 운영 체제는 자동적으로 로컬 네트워크 상에 비관리형 보안 작업그룹이 존재하는지 여부를 발견한다(단계 172). 그를 위해, 컴퓨터(102)는 로컬 네트워크에 연결된 다른 기계들을 검출하기 위해 SSDP(Simple Service Discovery Protocol)에 따라 발견 요청(discovery request)(136)을 브로드캐스트한다. 이 점에서, 보안 작업그룹에 속하는 컴퓨터(96) 상의 보안 그룹 서비스 모듈(116)은 보안 작업그룹의 친숙한 이름 및 GUID를 컴퓨터의 SSDP 서비스(138)에 이미 등록하였다. SSDP 요청에 응답하여, 로컬 네트워크(70) 상의 각각의 컴퓨터는 응답을 반환한다. 이 응답은 응답하는 컴퓨터, 이 컴퓨터가 비관리형 보안 작업그룹의 일부인지 여부, 그리고 일부인 경우, 그 그룹에 관한 정보를 확인해준다. 예를 들어, 컴퓨터(96)로부터의 응답(150)은 그 컴퓨터가 "TobyClub"이라고 하는 비관리형 보안 작업그룹의 멤버임을 나타내는 그룹 이름(152)을 포함한다.
본 발명의 실시예에서, 컴퓨터(102)가 로컬 네트워크 상의 하나 이상의 기존 의 비관리형 보안 작업그룹을 검출하는 경우(단계 176), 그의 사용자(158)(도 2에서 "Patrick")가 로그인할 때, 사용자 인터페이스 창이 팝업(pop up)하여, 컴퓨터가 기존의 비관리형 보안 작업그룹 중 임의의 것에 가입하기를 사용자가 바라는지 여부를 질문한다(단계 178). 사용자 인터페이스 창의 일례가 도 5에 도시되어 있다. 사용자 인터페이스 창(160)은 컴퓨터가 검출한 로컬 네트워크 상의 기존의 비관리형 보안 작업그룹의 리스트(162)를 제공하고, 사용자는 그룹의 이름을 클릭함으로써 가입할 작업그룹을 선택할 수 있다. 로컬 네트워크의 기존의 비관리형 보안 작업그룹이 검출되지 않은 경우, 이 리스트가 비어 있다. 사용자 인터페이스는 또한 새로운 비관리형 보안 작업그룹을 생성하는 옵션을 사용자에게 제공하는 쿼리(166)를 포함한다. 따라서, 기존의 비관리형 보안 작업그룹이 없는 경우, 사용자는 새로운 작업그룹을 생성하기로 선택할 수 있다(단계 180). 비관리형 보안 작업그룹이 로컬 네트워크에 존재하더라도, 사용자는 여전히 임의의 기존의 그룹에 가입하지 않고 새로운 작업그룹을 생성하기로 선택할 수 있다. 예를 들어, 로컬 네트워크 상의 컴퓨터(88)가 임의의 보안 작업그룹의 멤버가 아니라는 것을(즉, 컴퓨터(88)가 "독립형" 기계라는 것을) 컴퓨터(102)가 검출하는 경우, 사용자(158)는 새로운 보안 작업그룹(보안 작업그룹 1)을 생성(단계 184)하고 이 그룹에 가입하도록 컴퓨터(88)에 요청(단계 186)하기로 결정할 수 있다.
사용자(158)("Patrick")가 새로운 비관리형 보안 작업그룹을 생성하는 옵션을 선택하면(단계 180), 보안 그룹 서비스 모듈(116)은 새로운 그룹의 새로운 GUID를 생성하고 컴퓨터의 계정 도메인 GUID를 그룹의 새로운 GUID로 변경한다. 보안 그룹 서비스 모듈(116)은 이어서 그 비관리형 보안 작업그룹 내의 컴퓨터들을 나타내는 컴퓨터 계정을 포함하는 로컬 보안 그룹(local security group)인 "Secured Group Nodes" 그룹을 생성한다. ("Secured Group Nodes"는 그룹 이름의 일례이다. 이 실시예는 다른 그룹 이름들도 지원한다.) Secured Group Nodes 그룹 내에 열거된 컴퓨터들만이 그룹 내의 다른 컴퓨터들과 복제를 수행할 수 있다. 강력하고 랜덤한 패스워드를 갖는 계정이 생성될 수 있다.
보안 그룹 서비스(168)는 또한 새로운 비관리형 보안 작업그룹의 관리자(들)의 자격증명(credentials)을 보유하기 위한 "Secured Group Administrators" 그룹을 생성한다. Secured Group Administrators 그룹에서 확인되는 관리자만이 보안 그룹에 노드를 추가 또는 제거할 수 있다. "Secured Group Admin" 계정이 생성되고, 사용자(158)는 양호한(비공백(non-blank)) 패스워드를 입력하도록 요청받는다. ("Secured Group Administrators"는 그룹 이름의 일례이다. (기술하는 바와 같이, 본 발명의 실시예들은 패스워드에 대한 대안으로서 또는 그에 부가하여 사용될 수 있는 PIN(personal identification number)를 지원한다.) 이 실시예는 다른 그룹 이름들도 지원한다.) 사용자가 패스워드를 입력한 후에, Secured Group Admin 계정이 Secured Group Administrators 그룹에 추가된다.
반면에, 사용자(158)가 컴퓨터(102)에 의해 검출된 기존의 비관리형 보안 작업그룹에 가입하기로 선택하면(단계 178), SSDP 요청에 응답한 그 그룹 내의 노드들 중 하나가 선택되고, 그 선택된 노드의 보안 그룹 서비스의 RPC(remote procedure call, 원격 절차 호출) 인터페이스에의 연결이 설정된다. 도 2에 도시 한 예에서, 컴퓨터(102)는 컴퓨터(96)와 대화하기로 선택하였다. 컴퓨터(96)는 이어서 컴퓨터(102)에 대해 인증을 받으라는 요청을 발행한다. 적절히 인증을 받음으로써, 컴퓨터(102)는 컴퓨터(96)와 신뢰를 구축한다(단계 182). 그렇게 하는 중에, 컴퓨터(102)는 또한 그 그룹(100)의 나머지 노드들과 신뢰를 구축하는데, 그 이유는 이들이 컴퓨터(96)를 신뢰하고 컴퓨터(96)에 의해 신뢰되는 어떤 컴퓨터라도 신뢰하기로 되어 있기 때문이다. 그렇지만, 대안의 실시예에서, 비관리형 보안 작업그룹에 가입하고자 하는 컴퓨터는 그 그룹 내의 컴퓨터들 각각과 개별적으로 신뢰를 구축할 필요가 있을 수 있다.
상기한 바와 같이, 신뢰를 구축하는 통상적인 방법은 컴퓨터가 상대편 컴퓨터에게 알려져 있는 비밀을 제공하는 것이다. 본 발명의 일 실시예에서, 피어들 간의 상호 인증을 위한 자체-서명 인증서가 이용된다. 대상 노드(target node)의 인증서가 다시 인증된 가입측 컴퓨터로 전달될 수 있다. 본 발명의 예시적인 실시예에서, 비밀은 대상 노드 컴퓨터(96)의 Secured Group Administrators 그룹에 등록되어 있는 그룹 관리자의 이름 및 패스워드이다. 대상 노드 컴퓨터(96)로부터의 요구에 응답하여, 컴퓨터(102)는 유효한 관리자 이름 및 패스워드를 입력하도록 사용자(158)에 프롬프트한다. 한 예시적인 실시예에서, 관리자(196)(도 2에서 "Toby"로 나타내어져 있음)는 단지 비관리형 보안 작업그룹에 가입하고자 하는 컴퓨터(102)로 가서 그의 사용자 이름 및 패스워드를 입력할 수 있다. 컴퓨터(102)는 입력된 관리자 이름 및 패스워드를 대상 노드 컴퓨터(96)로 전송한다. 대상 노드 컴퓨터(96)는 컴퓨터(102)에 의해 반환된 관리자 이름 및 패스워드를 점검한다. 이들이 유효하고 Secured Group Administrators 그룹에서 발견되는 관리자 계정에 대응하는 경우, 컴퓨터(102)는 비관리형 보안 작업그룹(100)의 멤버가 된다. 대상 노드 컴퓨터(96)는 가입측 컴퓨터(102)에 대한 컴퓨터 계정을 생성하고 대상 노드 컴퓨터의 비밀을 다시 가입측 컴퓨터(102)로 전달한다. 가입측 컴퓨터(102)는 이어서 대상 노드 컴퓨터의 비밀을 저장한다. 이 시점에서, 가입측 컴퓨터(102)는 대상 노드 컴퓨터(96)와의 "동기(sync)" 동작을 시작한다. 동기 동작의 완료 후에, 완전한 신뢰가 구축된다.
그 후에, 비관리형 보안 작업그룹의 멤버들 간에 변경이 있을 시에 사용자 계정 및 사용자 프로파일이 복제된다(단계 188). 한 예시적인 구현에서, 비관리형 보안 작업그룹의 멤버인 컴퓨터는 그룹 내의 모든 다른 노드들에 주기적으로(예를 들어, 매 4분마다) "헬로우" 메시지를 전송한다. 헬로우 메시지는 그룹 GUID, 노드의 현재 시스템 시간, 및 복제의 마지막 갱신 카운트를 포함한다. 다른 그룹 멤버들은 응답할 필요가 없지만, 그에 따라 그들의 그룹 멤버 테이블을 갱신하고 그 멤버로부터 마지막으로 "헬로우"가 수신된 때를 기록한다. SAM 변경이 LSA로부터 수신될 때, 컴퓨터 상의 보안 그룹 서비스는 보안 작업그룹 내의 모든 노드들에 "Notify" 메시지를 전송한다. 그룹 노드가 Notify 메시지를 수신할 때, 그 노드는 메시지 내의 UpdateCount를 그의 현재 UpdateCount와 비교한다. 수신된 UpdateCount가 현재 UpdateCount보다 더 새로운 경우, 수신자는 특정의 변경 리스트를 얻기 위해 송신자에게 콜백(call back)하고 그 변경들을 로컬적으로 적용한다.
대안의 예시적인 실시예에서, 비밀로서 관리자 이름 및 패스워드를 사용하지 않고, 대상 노드 컴퓨터(96)는 비밀로서 랜덤한 PIN(personal identification number)을 사용한다. 대상 노드 컴퓨터(96)의 사용자(196)("Toby")는 그룹에 가입하고자 하는 컴퓨터(102)의 사용자(158)("Patrick")에게 비밀 PIN을 제공한다. 사용자(158)는 이어서 프롬프트에 응답하여 컴퓨터(102)에 PIN을 입력하고, 이 PIN은 신뢰를 구축하기 위해 네트워크 접속을 통해 대상 노드(96)로 전달된다.
도 6은 본 발명의 일 실시예에 따른, 컴퓨터 시스템(KitchenPC)(601)이 비관리형 보안 작업그룹(603)에 가입하는 예시적인 시나리오를 나타낸 것이다. (본 발명의 다른 실시예들은 비관리형 보안 작업그룹(603)에 가입하고자 하는 기계들의 인증을 제공하는 데 다른 기술들을 이용할 수 있다.) 예시적인 시나리오에서, 컴퓨터 시스템(DenPC)(605)은 이미 비관리형 보안 작업그룹(603)의 멤버이다. 가입(join)은 그 비관리형 보안 작업그룹에서 멤버쉽을 획득하기 위해 미가입 기계(unjoined machine)가 기존의 비관리형 보안 작업그룹의 멤버와 조정을 하는 프로세스이다. 이 예시적인 구현에서, 10개의 주요 단계가 있다.
1) KitchenPC(601)는 HouseCastle_Kpublic으로 DenPC(605)에 요구함으로써 DenPC(605)를 비관리형 보안 작업그룹(603)의 멤버로서 인증한다. DenPC(605)가 올바르게 응답하면, 이는 DenPC(605)가 공유 비밀을 알고 있음을 증명한다.
2) KitchenPC(601)는 공개/비밀키 쌍을 발생하고 자체-서명 인증서 KitchenPC_Cert를 발생한다.
3) KitchenPC(601)는 자신에 대한 KitchenPC 계정을 생성하고 KitchenPC_Cert를 그 계정과 연관시킨다.
4) KitchenPC(601)는 가입을 주도하는 사용자에 의해 제공되는 관리자의 기지의 계정 및 관리자의 패스워드를 사용하여 DenPC(605)에 로그인한다. KitchenPC(601)는 그의 인증서를 DenPC(605)로 전달한다.
5) DenPC(605)는 KitchenPC의 인증서를 설치한다.
6) DenPC(605)는 KitchenPC(601)에 대한 기계 계정을 생성하고, 이 계정을 KitchenPC_Cert와 연관시키며, 이어서 이 인증서를 비관리형 보안 작업그룹(603)에 입력한다.
7) DenPC(605)는 그 자신의 인증서 및 공유 비밀을,
a. DenPC_Cert를 설치하는
b. 공유 비밀을 저장하는
c. 비밀키로부터 HouseCastle_Cert의 복사본을 발생하고 이 복사본을 설치하는
KitchenPC(601)으로 반환한다.
8) KitchenPC(601)는 DenPC(605)에 대한 기계 계정을 생성하고 이 계정을 DenPC_Cert와 연관시킨다.
9) KitchenPC(601)는 Function Discovery(607)를 통해 그 자신을 비관리형 보안 작업그룹의 멤버로서 공표(브로드캐스트)한다.
10) KitchenPC(601)는 DenPC(605)와 동기화 동작을 시작한다. (이전의 단계 들에서, KitchenPC(601) 및 DenPC(605)는 단지 상호 신뢰만을 구축한다. 이들이 상호 신뢰를 가지면, 동기화 동작은 각각의 컴퓨터를 상대편 컴퓨터로부터의 인증서, 계정 및 그룹의 전체 세트로 채운다.)
신뢰를 구축하는 단계 동안의 통신 및 그룹의 동작들과 관련하여 사용자 계정, 사용자 프로파일 및 기타 데이터를 복제하기 위한 그룹 멤버들 간의 차후의 통신이 데이터의 무결성(integrity) 및 비밀성(confidentiality)을 보호하는 디지털 서명 및 암호화에 의해 적절히 보호되어야만 한다는 것을 잘 알 것이다. (본 발명의 일 실시예에서, 공개/비밀키 기반 인증 메카니즘(PK/SChannel 인증)이 사용된다. 공개키는 비밀키의 보유자의 ID를 확인하기 위해 나중에 사용되는 자체-서명 인증서에 위치한다.) 그를 위해, 이 통신은 NTLM 또는 Kerberos 등의 적당한 인증 프로토콜을 따를 수 있다. 한 예시적인 구현에서, 비관리형 보안 작업그룹의 노드들은 NTLM 인증 메카니즘을 이용하는 (DCE) RPC를 사용하여 복제를 한다. 이 채널은 호출-레벨 인증(call-level authentication) 및 프라이버시(privacy)로 보호되고, 액세스 제어는 호출자가 비관리형 보안 작업그룹의 멤버인지에 대한 서버-기반 점검에 기초한다. 인증 대책의 사용은 로컬 네트워크 상의 다른 컴퓨터들이 비관리형 보안 작업그룹 내의 노드들 간의 통신을 도청 및 위조하는 것을 방지한다.
비관리형 보안 작업그룹(100)에 가입한 후에, 컴퓨터(102)는 자발적으로 그룹을 탈퇴할 수 있다. 그렇게 하기 위해, 사용자(158)는 비관리형 보안 작업그룹으로부터 제거되기 위해 기계(102)에 로그온하고 적절한 사용자 인터페이스 창을 통해 그룹을 탈퇴하기로 선택한다. 한 예시적인 구현에서, 컴퓨터가 비관리형 보 안 작업그룹을 탈퇴할 때, 컴퓨터는 Secured Group Nodes 그룹으로부터 제거되고, 그의 대응하는 컴퓨터 계정이 삭제된다. 이 동작은 계정을 복제하는 데 사용된 신뢰를 훼손시킨다. 컴퓨터가 그룹을 탈퇴하면, Secured Group Administrators 및 Secured Group Nodes 그룹이 모든 컴퓨터 계정과 함께 삭제된다. 그렇지만, 컴퓨터 GUID는 그룹에 가입되어 있는 동안에 가졌던 것과 동일한 채로 있다. 그룹으로부터 제거된 후에, 컴퓨터(102)는 작업그룹(100)이 1의 비관리형 보안 작업그룹이 되도록 로컬 네트워크 상의 독립형 컴퓨터가 된다. (그렇지만, 컴퓨터들은 이어서 1의 비관리형 보안 작업그룹이 된 후에 작업그룹(100)에 가입할 수 있다.) 그 컴퓨터는 더 이상 신뢰되지 않으며 사용자 계정 및 프로파일의 어떤 추가의 갱신도 수신하지 않는다.
어떤 특수한 상황에서, 컴퓨터는 비관리형 보안 작업그룹으로부터 "축출"될 수 있다. 예를 들어, 그룹 내의 컴퓨터가 도난된 경우, 누군가가 그룹의 데이터 및 자원에 액세스하기 위해 나중에 그 컴퓨터를 사용할 수 없도록 하기 위해 그 컴퓨터를 그룹으로부터 축출할 필요가 있을 수 있다. 축출된 컴퓨터는 Secured Group Nodes 그룹으로부터 제거되고, 그룹에서의 그의 계정이 삭제된다. 이것은 장래에 계정 정보의 축출된 컴퓨터로의 복제를 방지한다. 그럼에도 불구하고, 축출된 컴퓨터를 그룹으로부터 완전히 단절시키기 위해 다른 대책들이 사용될 수 있다. 축출된 컴퓨터가 (패스워드를 포함한) 계정 데이터베이스의 완전한 복사본을 가지고 있기 때문에, 축출된 컴퓨터는 임의의 다른 사용자(또는 컴퓨터)로서 인증받아 여전히 보안 작업그룹에 액세스하려고 시도할 수 있다. 그 자체로서, 축출된 컴퓨터가 통신을 도청하고 패스워드를 볼 수 없이 나머지 비밀들이 변경될 수 있도록 대책들이 취해져야만 한다. 축출 프로세스의 일부로서, 컴퓨터의 비밀은 어떤 사용자 비밀도 변경되기 이전에 오프라인으로 변경될 수 있다. 컴퓨터의 비밀의 변경은 플로피 디스크를 사용하여 비밀을 전달하는 등에 의해 사적 채널(private channel)을 통해 "대역외(out-of-band)"에서 행해질 수 있다. 한 구현에서, 컴퓨터를 축출한 후에, 비관리형 보안 작업그룹의 관리자(196)는 컴퓨터가 축출되지 않고 그룹을 재생성해야만 한다. 복구 프로세스의 일부로서, 그룹에 남아 있는 한 컴퓨터("복구 컴퓨터")가 고립되고(즉, 네트워크로부터 제거되고) 그룹 복구를 계획하는 데 사용된다. 그룹 내에 남아 있는 각각의 컴퓨터에 대해 새로운 랜덤한 LSA 비밀이 발생되고 컴퓨터에 대한 새로운 컴퓨터 패스워드로서 복구 컴퓨터의 로컬 계정 데이터베이스에 저장된다. 그렇지만, 이 새로운 비밀은 축출될 기계가 갱신을 수신할 수 있는 위험이 있기 때문에 네트워크를 통해 다른 컴퓨터들로 전송될 수 없다. 이 문제를 처리하기 위해, 관리자(196)는 보안 작업그룹 내의 각각의 남아 있는 컴퓨터에 대해 그 컴퓨터에 대한 새로운 LSA 비밀을 포함하는 "축출" 플로피 디스크(또는 CD-ROM 등의 임의의 다른 휴대용 매체)를 생성한다. 관리자는 그의 관리자 계정으로 비관리형 보안 작업그룹에 유지하고자 하는 각각의 컴퓨터에 로그온하고 그 컴퓨터의 패스워드를 변경하기 위해 컴퓨터 상에서 축출 디스크를 실행한다. 그룹에 남아 있는 기계들 상에서 축출 디스크가 실행되면, 모든 사용자는 그룹 내의 컴퓨터들에 로그온할 때 그의 패스워드를 변경해야만 하는데, 그 이유는 축출된 컴퓨터가 사용자들의 기존의 패스워드(또는 적어도 도출된 키) 전부를 가지고 있기 때문이다.
본 발명의 적어도 어떤 측면에 따른 비관리형 보안 작업그룹의 한 이점은 기계간 통신(machine to machine communications)을 안전하게 해준다는 것이다. 본 발명의 한 측면에 따르면, 멤버 기계와 비관리형 보안 작업그룹에 가입하려고 요청을 하는 기계 사이에서 자체-서명 인증서가 사용될 수 있다. 또한, 상기한 바와 같이, 모든 기계 계정들이 본질적으로 동시에 새로운 랜덤한 패스워드로 리셋되는 축출 플로피 디스크의 생성이 배포될 수 있다. 패스워드의 리셋으로, 멤버 기계들은 통신할 수 없게 되지만, 축출 플로피 디스크가 순회를 할 때 기계들이 통신을 할 수 있게 된다. 축출 플로피 디스크를 결코 획득하지 않는 기계들(예를 들어, 축출된 기계들)은 이전의 패스워드만을 가지고 있으며, 비관리형 보안 작업그룹과 통신을 할 수 없다. 본 발명의 적어도 몇몇 측면들에 따른 비관리형 보안 작업그룹의 다른 이점은 사용자 계정을 통한 불법 액세스를 방지하는 것이다. 본 발명의 한 측면에 따르면, 모든 사용자 계정이 변경된다. 본 발명의 다른 측면에 따르면, 패스워드가 그 다음 로그인 시에 만료되도록 설정될 수 있다.
본 발명의 적어도 몇몇 측면들에 따른 비관리형 보안 작업그룹의 한가지 이점은 각각의 사용자가 그룹 내의 모든 컴퓨터에 알려져 있는 ID(identity)를 갖는다는 것이다. 그 결과, 사용자는 동일한 사용자 이름 및 패스워드로 보안 작업그룹 내의 임의의 컴퓨터에 로그온할 수 있다. 예를 들어, 소기업 환경에서, 직원이 각각의 컴퓨터에서 사용자 계정을 개별적으로 설정하지 않고 동일한 사용자 이름 및 패스워드로 보안 작업그룹을 형성하는 로컬 사무실 네트워크 상의 임의의 컴퓨 터에 로그인할 수 있다. 또한, 사용자가 그룹 내의 컴퓨터들 중 하나에서 그의 패스워드를 변경할 때, 그 변경이 다른 컴퓨터들로 복제된다. 따라서, 비관리형 보안 작업그룹은 사용자 계정의 생성 및 수정을 상당히 간소화할 수 있고 허가된 사용자의 그룹 내의 컴퓨터들에 대한 접근성(accessibility)이 훨씬 더 좋아질 수 있다.
비관리형 보안 작업그룹 내의 컴퓨터들의 개선된 네트워크 통합은 또한 사용자가 컴퓨터 네트워킹의 이점을 누릴 수 있게 해준다. 그룹 내의 컴퓨터들 중 임의의 것에 로그인한 후에, 사용자는, 문서 및 설정이 실제로 어디에 저장되어 있는지에 상관없이, 사용자 자신의 설정을 사용하여 사용자의 문서 모두에 액세스할 수 있다. 다시 말하면, 이것이 가능하게 되는 이유는 사용자의 문서들 전부가 모든 컴퓨터에 의해 인지되는 단일의 사용자 ID와 연관되어 있기 때문이다. 따라서, 주어진 사용자의 모든 문서 및 설정을 확인하기 위해 쿼리가 행해질 수 있다. 이것에 의해 사용자는 보안 작업그룹 전체에 걸친 그의 문서 및 설정 전부의 "통합된" 뷰를 가질 수 있다.
상기한 바와 같이, 보안 작업그룹 내의 컴퓨터들 간에 복제된 사용자 프로파일이 사용자들의 문서를 포함할 수 있다. 한 예시적인 실시예에서, 주어진 사용자의 사전 선택된 일련의 문서, 예를 들어, 사용자의 "내문서" 폴더 내의 문서들이 보안 작업그룹 내의 각각의 컴퓨터로 자동적으로 복제된다. 사용자가 그 문서들 중 하나를 수정하였을 때, 문서 개정이 검출되고, 수정된 문서가 FRS(file replication service)에 의해 그룹 내의 다른 컴퓨터들로 복제된다. 본 발명의 예 시적인 실시예에서, 복제된 문서들을 저장하기 위해 컴퓨터들에 의해 사용되는 메모리의 양을 감소시키기 위해, 임계 사이즈를 초과하는 파일들은 복제되지 않는다. 그 대신에, 파일이 임계 사이즈를 초과하는 경우, 파일을 저장하는 컴퓨터 상의 파일로의 링크만이 다른 컴퓨터들로 복제된다.
비관리형 보안 작업그룹은 또한 그룹의 사용자들 간의 파일의 보안 공유를 가능하게 해준다. 사용자의 문서를 제2 사용자와 공유하고자 하는 사용자는 제2 사용자가 그 문서에 액세스하도록 허용되어 있음을 나타내기 위해 문서의 속성들을 수정할 수 있다. 제2 사용자가 문서에 액세스하기 위해 애플리케이션을 사용할 때, 제2 사용자가 문서에 대한 액세스 권한을 부여받았는지를 확인하기 위해 문서 속성들이 점검된다. 한 예시적인 구현에서, 소기업 네트워크에서의 보안 작업그룹의 사용자는 한명의 다른 사용자하고만 문서를 공유할 수 있다. 대안의 예시적인 실시예에서, 비관리형 보안 작업그룹의 사용자는 사용자의 파일을 그룹의 모든 사용자와 공유할 수 있다. 이 구현은 홈 네트워크 환경에서 적용가능할 수 있다.
비관리형 보안 작업그룹은 그룹에 가입하지 않은 컴퓨터들이 그룹에의 제한된 액세스 권한을 가질 수 있게 해준다. 예를 들어, 사용자는 그의 랩톱을 회사로부터 가져와서 이를 그의 홈 네트워크에 연결할 수 있지만 홈 네트워크 상의 보안 작업그룹에 가입하지 않도록 선택할 수 있다. 이러한 경우에, 비멤버 컴퓨터는 게스트 상태(guest status)를 부여받으며 사전 선택된 일련의 자원에 액세스하도록 허용될 수 있다. 이와 유사하게, 레거시 컴퓨터(즉, 비관리형 보안 작업그룹에 관련된 동작들을 위한 소프트웨어를 갖지 않는 컴퓨터)는 여전히 종래의 작업그룹에 서와 동일한 방식으로 비관리형 보안 작업그룹 내의 컴퓨터들과 통신을 할 수 있다.
컴퓨터들(기계들)이 비관리형 보안 작업그룹의 일부가 되면, 비관리형 보안 작업그룹의 임의의 멤버에 대한 변경이 행해질 때 사용자 계정 및 사용자 그룹이 멤버 컴퓨터들 간에 복제 및 동기화된다. (변경은 사용자 계정 정보가 수정되는 것 또는 사용자 계정 정보가 추가되는 것에 대응할 수 있다.) 비관리형 보안 작업그룹에 참여하는 컴퓨터들은 지정된 마스터 컴퓨터를 갖지 않는 피어들이다. 비관리형 보안 작업그룹 내의 컴퓨터들은 네트워크를 통해 변경을 광고할 수 있다. 이 동작은 멤버 컴퓨터들이 복제를 시작하고 따라서 서로 동기된 채로 있을 수 있게 해준다.
복제에 참여하는 컴퓨터들은 컴퓨터들이 복제하는 데이터의 상태를 유지한다. 컴퓨터들은 이하의 것들을 유지한다.
Figure 112008000699275-PCT00004
컴퓨터 버전 번호: 이 번호는 컴퓨터 상의 임의의 계정이 변경될 때마다 갱신된다. 이 버전 번호는 상위 레벨에서 동기화 동작이 언제 필요한지를 결정한다.
Figure 112008000699275-PCT00005
계정 버전 번호: 이 번호는 컴퓨터 상의 특정의 계정이 변경될 때마다 갱신된다. 이 버전 번호는 동기화 동작이 필요할 때 어느 계정을 동기화해야만 하는지를 결정하는 데 사용되고 계정마다 추적된다.
복제는 각각의 컴퓨터가 그의 컴퓨터 버전 번호가 변경될 때 그 번호를 광고하는 풀-지향 복제(pull-oriented replication)일 수 있다. 비관리형 보안 작업그 룹의 멤버가 다른 멤버가 새로운 버전 번호를 광고한 것을 검출할 때, 이 멤버는 그 버전 번호를 그 컴퓨터에 대해 그의 레코드에 가지고 있는 버전 번호와 대조한다. 더 새로운 데이터가 다른 컴퓨터에 의해 게시된 것으로 멤버가 판정하면, 그 멤버는 복제를 시작한다.
예시적인 실시예에서, 모든 사용자 계정이 복제된다. 모든 계정 그룹이 복제되며, 따라서 한 컴퓨터에서 관리자인 사용자는 다른 컴퓨터들 상에 관리자로서 복제된다. 이하의 데이터가 복제된다.
Figure 112008000699275-PCT00006
사용자 이름
Figure 112008000699275-PCT00007
사용자 패스워드
Figure 112008000699275-PCT00008
사용자 타일
Figure 112008000699275-PCT00009
계정 버전 번호: 이 데이터는 멤버들이 그의 로컬 데이터를 갱신해야만 할 때를 멤버들에게 알려주기 위해 비관리형 보안 작업그룹에 의해 사용된다.
Figure 112008000699275-PCT00010
사용자 그룹 이름
Figure 112008000699275-PCT00011
사용자 그룹 멤버 리스트
Figure 112008000699275-PCT00012
컴퓨터 버전 번호: 이 데이터는 다른 컴퓨터와 동기화 동작을 시작해야 하는지를 결정하기 위해 비관리형 보안 작업그룹에 의해 사용된다.
Figure 112008000699275-PCT00013
비관리형 보안 작업그룹 비밀: 이 데이터는 비관리형 보안 작업그룹의 기계들 간에 신뢰를 구축하는 기계간 비밀(machine-to-machine secret)이다.
도 7은 본 발명의 예시적인 실시예에 따라 비관리형 보안 작업그룹에서 멤버 컴퓨터로부터 다른 컴퓨터로 갱신된 계정 정보를 제공하는 흐름도(700)를 나타낸 것이다. 단계(701)에서, 멤버 컴퓨터는 멤버 컴퓨터에 저장된 계정 정보에 변경이 있는지를 판정한다. 변경이 없는 경우, 프로세스가 종료된다. 변경이 있는 경우, 컴퓨터는 단계(703)에서 Function Discovery 메시지를 사용하여 연관된 컴퓨터 버전 번호를 공표함으로써 변경을 광고한다. 본 발명의 실시예들은 연관된 컴퓨터 버전 번호를 공표하기 위해, 이전에 기술한 SSDP 등의 다른 공표 프로토콜(publication protocol)을 사용할 수 있다. 단계(705)에서, 멤버 컴퓨터는 사용자 계정의 리스트에 대한 다른 컴퓨터로부터의 요청이 수신되었는지를 판정한다. 수신되지 않은 경우, 프로세스가 종료된다. 수신된 경우, 단계(707)에서 멤버 컴퓨터는 그 리스트를 상대편 컴퓨터로 전송한다. 멤버 컴퓨터에서 대응하는 계정 정보가 갱신 또는 추가된 경우, 상대편 컴퓨터는 추가적으로 특정의 계정 정보를 요청할 수 있다. 단계(709)에서, 이러한 요청이 수신되었는지가 판정된다. 추가적인 요청이 수신되지 않은 경우, 프로세스가 종료된다. 추가적인 요청이 수신된 경우, 단계(711)에서 멤버 컴퓨터는 지정된 계정 정보를 상대편 컴퓨터로 전송한다.
도 8은 본 발명의 예시적인 실시예에 따라 비관리형 보안 작업그룹에서 멤버 컴퓨터로부터 갱신된 계정 정보를 획득하는 흐름도(800)를 나타낸 것이다. (흐름도(800)는 도 7에 나타낸 바와 같이 상대편 컴퓨터에서 실행되는 프로세스에 대응한다.) 단계(801)에서, 상대편 컴퓨터는 멤버 컴퓨터가 계정 정보를 변경했다는 광고가 수신되었는지를 판정한다. 수신되지 않은 경우, 프로세스가 종료된다. 광고가 수신된 경우, 단계(803)에서, 상대편 컴퓨터는 광고된 버전 번호를 멤버 컴퓨 터에 대한 공식 버전과 비교한다. 그렇지 않은 경우, 프로세스가 종료된다. 광고된 버전이 더 새로운 것인 경우, 단계(805)에서 상대편 컴퓨터는 멤버 컴퓨터로부터 사용자 계정의 리스트를 요청한다. 단계(807)에서, 상대편 컴퓨터는 갱신된 또는 새로운 계정 정보를 요청한다. 단계(809)에서, 상대편 컴퓨터는 충돌 해결(이하에서 기술함) 이후에 상대편 컴퓨터에 저장되어 있는 계정 정보를 갱신한다.
갱신된 계정 정보가 흐름도(700)에 따라 획득될 수 있지만, 본 발명의 실시예들은 다른 계정 갱신 프로세스를 지원한다. 본 발명의 일 실시예에서, 제1 멤버 컴퓨터는 계정 정보에 변경이 행해졌음을 나타내는 갱신된 버전 번호를 갖는 광고를 브로드캐스트한다. 비관리형 보안 작업그룹의 제2 멤버는, 멤버 컴퓨터로부터의 광고에 응답하여, 계정 버전 정보를 제1 멤버 컴퓨터로 전송한다. 그 결과, 제1 멤버 컴퓨터는 더 새로운 사용자 계정의 리스트를 제2 멤버 컴퓨터로 반환한다.
새로운 컴퓨터가 비관리형 보안 작업그룹에 가입할 때, 그 컴퓨터는 비관리형 보안 작업그룹에 관련된 계정 데이터를 갖지 않는다. 그 때, 그 컴퓨터는 비관리형 보안 작업그룹 데이터로 그 자신을 갱신한다. 비관리형 보안 작업그룹의 임의의 참여 멤버들에서 임의의 사용자 계정 또는 그룹이 변경될 때마다, 그 변경은 Function Discovery(또는 다른 공표 메카니즘, 예를 들어, SSDP)를 통해 광고될 수 있다. 이 광고는 비관리형 보안 작업그룹의 멤버들 간의 복제 시퀀스를 트리거한다. 비관리형 보안 작업그룹 내의 컴퓨터들은 Function Discovery를 통해 그의 컴퓨터 버전 번호를 공표함으로써 그의 변경들을 다른 컴퓨터들에 광고한다.
멤버가 비관리형 보안 작업그룹을 탈퇴할 때, 사용자는 그 컴퓨터로부터 어 떤 계정들을 삭제하기로 결정할 수 있다. 이 변경은 물론 비관리형 보안 작업그룹의 갱신된 멤버쉽이 나머지 멤버들로 복제될 수 있다. 멤버가 축출될 때, 비관리형 보안 작업그룹의 비밀이 변경된다. 비밀의 변경이 비관리형 보안 작업그룹 내의 다른 멤버들로 전파된다.
기계가 처음으로 비관리형 보안 작업그룹에 가입할 때, 관리자가 패스워드로 로그온함으로써 기계들 간의 초기 신뢰가 구축된다. 신뢰가 구축되었으면, 기계들은 자체-서명 인증서를 교환할 수 있고, 인증서 기반 상호 인증에 의해 인증이 수행된다. (앞서 논의한 바와 같이, 다른 인증 메카니즘이 사용될 수 있다.) 컴퓨터가 다른 컴퓨터와 인증을 하였으면, 그 컴퓨터는 계정 정보를 복제할 수 있다.
본 발명의 예시적인 실시예에서, 새로운 속성들을 보조 속성 파일에 저장함으로써 SAM(security account manager, 보안 계정 관리자) 데이터베이스가 확장된다. (보안 계정 관리자 데이터베이스는 대응하는 패스워드 및 기타 속성과 함께 정의된 사용자 및 그룹을 포함한다.) 계정이 복제될 때 보조 속성 파일(로컬적으로 저장되어 있는 데이터에 대응함)이 복제된다. 게다가, 보조 속성 파일은 부가적인 속성들, 예를 들어, 사용자 타일, 패스워드 힌트, 계정 GUID, 및 계정 인증서를 포함하도록 확장될 수 있다.
비관리형 보안 작업그룹은 서로에 대해 피어인 다수의 기계들을 포함한다. 이것은 동일한 객체에 대한 변경이 적절한 권한을 갖는 사람에 의해 참여 기계들 중 임의의 것에 대해 행해질 수 있다는 것을 의미한다. 멤버 기계들이 "온-라인"일 때는 물론 기계들이 "오프-라인"일 때도 변경이 행해질 수 있다. 기계들이 오 프-라인일 때 기계들에 행해진 변경의 결과, 이하에 더 상세히 기술되는 사용자 계정 또는 계정 그룹과 충돌하는 변경이 생길 수 있다. 비관리형 보안 작업그룹 특징은 충돌을 검출하는 메카니즘을 이용할 수 있다. 이어서, 이 충돌은 자동적으로 해결되거나 허가된 사용자의 도움을 받아 해결될 수 있다.
계정에 대한 "변경"은 그 계정의 임의의 속성에 대한 변경으로서 정의된다. 충돌 해결 및 검출은 "전체 계정 레벨(whole account level)"에서 수행될 수 있다. (그에 부가하여, 충돌 해결 및 검출은 속성별 레벨(per-property level)에서 수행될 수 있다.) 예로서, 한 기계 상에서 계정에 대해 타일을 변경하고 다른 기계 상에서 동일한 계정의 패스워드를 변경하면, 양 계정이 변경된 것으로 간주되며, 따라서 속성 레벨에서 그 변경이 중복되지는 않지만, 충돌 해결이 필요하게 된다.
2개의 멤버 기계 간의 동기화는 그 기계들이 동기를 벗어나 있던 시간 지속기간에 의해 영향을 받는다. 기계들이 긴 지속기간 동안 떨어져 있었다면, 기계들 간의 차이가 충돌로 간주된다. 예시적인 실시예에서, 이 차이는 관리 사용자 인터페이스(UI)를 사용하여 수동적 개입(manual intervention)에 의해 해결된다. 예시적인 긴 지속기간은 기계들 간의 마지막 갱신된 타임스탬프 차이가 적어도 30일인 때이며, 예시적인 짧은 지속기간은 기계들 간의 "마지막 갱신된" 타임스탬프가 30일보다 작을 때 2개의 멤버 기계 간의 분리(disconnect)이다. 예시적인 30일 임계값은 대부분의 통상적인 오프-라인 시나리오, 예를 들어, 기계가 매일 정지되는 것이 충돌 해결을 위해 자동적으로 처리될 수 있도록 설정된다. 사용자 계정 및 그룹이 아주 빈번하게 변할 수 없기 때문에, 상기 기준은 또한 컴퓨터가 백업으로부 터 복구될 때 어떻게 동기화가 행해지는지를 판정하는 데 사용된다.
긴 지속기간 동기화는 기계들이 상기 정의된 긴 지속기간 등의 상당한 기간 동안 분리되어 있을 때 일어나며, 기계들 간에 변경이 발생한다. 동기화 블로킹 에러(synchronization blocking error)가 이전의 기계의 Sync Handler로 포스팅(post)된다. 비관리형 보안 작업그룹의 나머지와 충돌하지 않는 계정을 갖는 이전의 기계 상의 사용자는 기계를 정상적으로 사용할 수 있다. 본 발명의 예시적인 실시예에서, 동기화 블로킹 에러는 그 기계에 대한 관리자가 이하의 선택을 제공함으로써 동기화를 해결할 수 있게 해준다.
Figure 112008000699275-PCT00014
이전의 기계로부터 모든 변경을 폐기하고 최신의 변경을 택한다. 이 선택은 이전의 기계가 처음으로 비관리형 보안 작업그룹에 가입하는 것과 동등하다.
Figure 112008000699275-PCT00015
이전의 기계로부터의 변경을 동기화한다. 본 발명의 일 실시예에서, 사용자가 이 선택을 고르면, 기계들 간의 동기화는 기계들이 짧은 지속기간 동안 떨어져 있었던 것처럼 행해진다. 본 발명의 다른 실시예들은 모든 충돌이 짧은 지속기간 충돌로서 취급되도록 긴 지속기간 충돌과 짧은 지속기간 충돌을 구분하지 않는다.
기계들이 기계들 간의 마지막 변경 발생으로부터 짧은 지속기간 동안 떨어져 있었을 때 짧은 지속기간 동기화가 행해진다. 짧은 지속기간 동기화의 처리는 동기화될 변경의 성질에 의존한다. 본 발명의 예시적인 실시예는 연관된 해결을 갖는 이하의 변경을 지원한다.
- 비충돌 변경(non-conflicting change):
Figure 112008000699275-PCT00016
한 기계에서 계정이 추가된다: 상대편 기계에 동일한 계정을 생성함으로서 해결됨.
Figure 112008000699275-PCT00017
한 기계에서 사용자 계정이 삭제된다: 상대편 기계에서 동일한 계정을 삭제함으로써 해결됨. 기계가 멤버인 경우, 이전의 기계에서 계정을 삭제할 때, 그 기계에서의 관리자는 나머지 멤버들에 대한 이러한 삭제의 영향에 관하여 경고를 받는다.
Figure 112008000699275-PCT00018
한 기계에서 계정의 속성이 변경된다: 상대편 기계에서 동일한 계정의 동일한 속성을 변경함으로써 해결됨.
Figure 112008000699275-PCT00019
한 기계에서 사용자 그룹이 추가된다: 상대편 기계에서 동일한 사용자 그룹을 생성함으로써 해결됨.
Figure 112008000699275-PCT00020
한 기계에서 사용자 그룹이 삭제된다: 상대편 기계에서 동일한 사용자 그룹을 삭제함으로써 해결됨. 기계가 멤버이면, 이전의 기계에서 사용자 그룹을 삭제할 때, 그 기계에서의 관리자는 나머지 멤버들에 대한 이러한 삭제의 영향에 관하여 경고를 받는다.
Figure 112008000699275-PCT00021
한 기계에서 사용자 그룹의 멤버쉽이 변경된다: 상대편 기계에서 동일한 그룹의 멤버쉽을 변경함으로써 해결됨.
Figure 112008000699275-PCT00022
2명의 사용자의 디스플레이 이름을 스왑(swap)한다: 상대편 기계에서 이름들을 스왑함으로써 해결됨. 유의할 점은 이 결과 기계 상에 중복된 디스플레이 이름이 있을 수 있다는 것이다. 그렇지만, 사용자 계정이 GUID(Globally Unique Identifier)로 식별되기 때문에, 이 변경은 비충돌 변경(non-conflicting change)이다.
- 충돌 변경(conflicting change):
Figure 112008000699275-PCT00023
2개의 서로 다른 기계에서 동일한 사용자 계정이 변경된다: 동기화 블로킹 에러를 포스팅하고 사용자 또는 관리자가 충돌을 해결할 때까지 그 사용자를 이전의 기계에서 비관리형 보안 작업그룹에 참여하지 못하도록 배제함으로써 해결됨.
본 발명의 일 실시예에서, 모든 충돌이 균일하게 취급된다. 긴 지속기간 충돌과 짧은 지속기간 충돌 간의 구분이 없다. 모든 충돌이 짧은 지속기간 충돌로 취급된다.
본 발명의 일 실시예에서, 새로운 계정이 GUID가 어떤 로컬 계정과도 일치하지 않고 로컬 계정과 동일한 이름을 갖는 경우 충돌이 발생된다.
비관리형 보안 작업그룹의 계정들에서의 충돌은 충돌 관리 사용자 인터페이스와의 통합을 통해 제공된다. 개개의 사용자는, 현재의 기계 상에 있는 경우, 사용자의 계정이 충돌하고 있을 때 충돌에 관하여 통지를 받는다. 임의의 멤버 기계에서의 관리자는 관리자가 로그인되어 있는 기계에서 볼 때의 비관리형 보안 작업그룹 내의 모든 계정 충돌을 통지받는다. 환언하면, 비관리형 보안 작업그룹 내의 서로 다른 기계들이 다른 기계 상에서 충돌하는 다른 계정들을 갖는 경우, 관점(view)이 각각의 기계에서 서로 다르다.
계정 변경의 결과 선택이 모든 멤버 기계들로 복제되는 경우 충돌의 해결이 수렴한 것으로 간주된다. 개개의 기계에서 계정 충돌이 해결될 때, 대응하는 변경들이 다른 기계에 복제된다. 해결된 충돌의 성질에 따라, 현재의 기계에서의 충돌이 해결될 때 다른 기계에서의 어떤 기존의 충돌이 해결될 수 있다.
비관리형 보안 작업그룹은 다수의 기계들이 네트워크를 통해 통신을 할 수 있는지 및 멤버 기계들에 대한 변경에 응답하여 그의 상태를 변경할 수 있는지에 의존한다. 네트워크 및 참여 기계들은 다수의 방법으로 고장날 수 있다. 따라서, 멤버 기계 및 비관리형 보안 작업그룹이 전체로서 에러 및 고장을 예측가능하게 처리하고 클린업(cleanup)을 행하여 이러한 에러 및 고장으로부터 복구할 수 있는 방식으로 비관리형 보안 작업그룹이 기능하게 할 필요가 있다. 비관리형 보안 작업그룹은 원자적 트랜잭션(atomic transaction)을 시작하기 이전에 마커 플래그(marker flag)를 이용함으로써 일반적인 에러 및 고장을 처리할 수 있다. 트랜잭션이 어떤 이유로 실패하는 경우, 플래그가 표시되고 그 다음에 서비스가 시작될 때 클린업이 수행된다. 복제 동작은 기계가 이용가능하게 될 때 자동적으로 재개하도록 설계되어 있으며, 따라서 복제 동안의 고장이 자동적으로 처리된다. 기계에서의 기능 설치(feature installation)가 어떤 방식으로 손상되는 경우, 그 기계에서 서비스가 중단되고 그 기계는 비관리형 보안 작업그룹에 더 이상 참여하지 않는다.
본 발명의 측면들에 따르면, 비관리형 보안 작업그룹은 수많은 사용자 시나리오를 지원한다. 예로서, 한 사용자 시나리오는 홈 네트워크에서의 "로밍 부모 통제(roaming parental control)"를 포함한다. 부모는 아이가 컴퓨터를 사용할 수 있는 방법을 제한하는 부모 통제 제한(parental control restriction)을 생성할 수 있다. 부모 통제 제한은 그룹 내의 모든 컴퓨터들로 복제된다. 따라서, 아이가 그룹 내의 컴퓨터들 중 임의의 컴퓨터에 로그온할 때, 부모 통제 제한은 아이가 어느 컴퓨터를 사용하고 있는지에 상관없이 아이를 "따라간다". 그에 부가하여, 아이의 감사 보고서는 그룹 내의 각각의 컴퓨터 상에서의 모든 아이 활동으로 갱신된다. 본 발명의 예시적인 실시예들에 따르면, 사용자 시나리오는, 다른 기능들 중에서도 특히, 로밍, 데이터 객체의 공유, 비관리형 보안 작업그룹 내의 사용자에 대한 데이터 객체의 백업을 지원한다. 사용자 시나리오는 비관리형 보안 작업그룹 내에서의 신뢰 및 사용자 데이터 복제를 기반으로 작성된다.
본 발명의 예시적인 실시예는 비관리형 보안 작업그룹의 멤버 및 속성을 질의하고 비관리형 보안 작업그룹 내에서 동작을 시작하기 위해 애플리케이션 또는 기타 서비스에 의해 사용될 수 있는 일련의 인터페이스(애플리케이션 프로그래밍 인터페이스(API))를 제공한다.
본 발명의 예시적인 실시예는 이하의 인터페이스를 지원한다.
Figure 112008000699275-PCT00024
IWorkgroupNetInformation - 근거리 통신망 내의 비관리형 보안 작업그룹 및 비제휴 컴퓨터의 리스트를 제공한다.
Figure 112008000699275-PCT00025
IWorkgroupInformation - 전체로서 기능의 속성들을 포함하는 주어진 비관리형 보안 작업그룹에 관한 정보 및 멤버 컴퓨터의 리스트를 제공한다.
Figure 112008000699275-PCT00026
IWorkgroupComputerInformation - 비관리형 보안 작업그룹 내의 컴퓨터에 관한 정보를 제공한다.
Figure 112008000699275-PCT00027
IWorkgroupNetControl - 새로운 비관리형 보안 작업그룹을 생성할 수 있게 해준다.
Figure 112008000699275-PCT00028
IWorkgroupControl - 컴퓨터가 비관리형 보안 작업그룹에 가입하거나 그를 탈퇴하게 할 수 있다.
IWorkgroupNetInformation 인터페이스는 비관리형 보안 작업그룹에 관한 정보를 제공한다.
interface IWorkgroupNetInformation : IUnknown
{
//
// 기지의 작업그룹에 대한 열거자를 생성
//
HRESULT GetWorkgroups([out] IEnumWorkgroups** ppEnum);
//
// 이름별로 기지의 작업그룹에 대한 인터페이스를 제공하
// 컴퓨터가 현재 작업그룹에 속해 있는 경우, pszWorkgroup는
// 현재의 작업그룹을 나타내기 위해 비어있는 문자열일 수 있음
//
// pszWorkgroupGUID가 비어있는 문자열이고 현재의 컴퓨터가
// 작업그룹의 멤버가 아닌 경우, GetWorkgroup은
// S_FALSE를 반환하고 *pp Workgroup를 NULL로 설정
//
HRESULT GetWorkgroup([in,string] LPCWSTR pszWorkgroupGUID,
[out] IWorkgroupInformation** ppWorkgroup);
//
// 기지의 비제휴 컴퓨터에 대한 열거자를 생성
//
HRESULT GetComputers([out] IEnumString** ppEnum);
//
// 변경 통지를 위한 등록
//
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);
HRESULT Unadvise(DWORD dwCookie);
}
IEnumWorkgroupsIEnumComputers은 둘다 IEnumerable으로부터 도출된다. IEnumWorkgroupsIWorkgroupInformation 인터페이스를 반환하고, 그 각각은 기지의 비관리형 보안 작업그룹을 나타낸다. IEnumComputersLPWSTRs를 반환하고, 그 각각은 어떤 비관리형 보안 작업그룹과도 제휴되지 않은 기지의 컴퓨터의 이름이다.
interface IEnumWorkgroups : IUnknown
{
HRESULT Next([in] ULONG celt,
[out, size_is(celt),
length_is(*pceltFetched)] IWorkgroupInformation** rgelt,
[out] ULONG* pceltFetched);
HRESULT Skip([in] ULONG celt);
HRESULT Reset();
HRESULT Clone([out] IEnumWorkgroups** ppEnum Workgroups);
}
interface IEnumComputers : IUnknown
{
HRESULT Nextflm] ULONG celt,
[out, size_is(celt),
length_is(*pceltFetched)] IWorkgroupComputerlnformation**
rgelt,
[out] ULONG* pceltFetched);
HRESULT Skip([in] ULONG celt);
HRESULT Reset();
HRESULT Clone([out] IEnumComputers** ppEnumComputers);
}
변경 통지를 위해, IWorkgroupNetlnformation::Advise IWorkgroupNetInformationAdvise를 받는다.
interface IWorkgroupNetInformationAdvise : IUnknown
{
//
// 작업그룹 발견에 대한 통지
//
HRESULT OnWorkgroupFound([in] IWorkgroupInformation* pWI);
HRESULT OnWorkgroupLost([in] IWorkgroupInformation* pWI);
//
// 컴퓨터 발견에 대한 통지
//
HRESULT OnComputerFound([in, string] LPCWSTR pszComputer);
HRESULT OnComputerLost([in, string] LPCWSTR pszComputer);
}
}
IWorkgroupInformation 인터페이스는 전체로서 비관리형 보안 작업그룹의 속성들 및 멤버 컴퓨터들의 리스트를 포함하는 주어진 비관리형 보안 작업그룹에 관한 정보를 제공한다.
interface IWorkgroupInformation : IUnknown
{
//
// 작업그룹의 주 이름을 가져옴
//
// 반환된 이름 문자열이 CoTaskMemFree()로 해제되어야만 한다.
//
HRESULT GetName([out,string] LPWSTR* ppszName);
//
// 작업 그룹에 대한 고유의 ID(GUID)를 가져옴
//
// 작업그룹의 수명 동안에 고유의 ID가 결코 변하지 않음
// 참조를 위해 이것을 사용함
//
HRESULT GetGUID([out,string] LPWSTR* ppszGUID);
//
// 작업그룹이 생성된 시간을 가져옴
//
HRESULT GetCreationTime([out] FILETIME* pft);
//
// 작업그룹 내의 컴퓨터들에 대한 열거자를 가져옴
//
HRESULT GetComputers([out] IEnumComputers** ppEnum);
//
// 변경 통지를 위한 등록
//
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);
HRESULT Unadvise(DWORD dwCookie);
}
변경 통지를 위해, IWorkgroupInformation::AdviseIWorkgroupInformationAdvise를 받는다.
interface IWorkgroupInformationAdvise : IUnknown
{
//
// 작업그룹 멤버쉽 변경에 대한 통지
//
//주의: 로컬 컴퓨터가 속해 있는 작업그룹 이외의
// 작업그룹에 대응하는
// IWorkgroupInformation에 대해 지원되지 않음
//
HRESULT OnMemberAdded([in] IWorkgroupComputerInformation*
pComputer);
HRESULT OnMemberRemoved([in] IWorkgroupComputerInformation*
pComputer);
//
// 작업그룹 멤버 상태 변경에 대한 통지
//
HRESULT OnMemberStateChanged([in] IWorkgroupComputerInformation*
pComputer);
}
IWorkgroupComputerInformation은 비관리형 보안 작업그룹 내의 컴퓨터에 관한 정보를 제공한다.
interface IWorkgroupComputerInformation : IUnknown
{
//
// 컴퓨터의 이름을 가져옴
//
// 반환된 이름 문자열이 CoTaskMemFree()로 해제되어야 함.
//
HRESULT GetName([out,string] LPWSTR* ppszName);
//
// 컴퓨터의 설명을 가져옴
//
// 반환된 이름 문자열이 CoTaskMemFree()로 해제되어야 함.
//
HRESULT GetDescription([out,string] LPWSTR* ppszDescription);
//
// 컴퓨터가 마지막으로 작업그룹과 동기화된 때를 가져옴
//
// 반환된 값이 0일 수 있음, 알지 못함을 의미함
//
HRESULT GetLastSyncTime([out] FILETIME* pft);
//
// 컴퓨터에 대한 고유의 ID(GUID)를 가져옴
//
// 작업그룹 내의 컴퓨터의 수명 동안에 고유의 ID가 결코 변하지 않음
// 참조를 위해 이것을 사용함
//
HRESULT GetUniqueID([out] GUID* pGUID);
}
}
IWorkgroupNetControl 인터페이스는 IWorkgroupNetInformation으로부터 QueryInterface(QI)를 통해 획득된다.
interface IWorkgroupNetControl : IUnknown
{
//
// 제1 멤버가 되는 현재의 제휴 기계로 새로운 작업그룹을 생성함
// 즉, 1의 작업그룹을 생성함
//
HRESULT Create([in, string] LPCWSTR pszWorkgroupAdminPassword,
[out] IWorkgroupInformation** pp Workgroup);
//
// 컴퓨터를 그의 현재 작업그룹으로부터 가입 해제함
// 이어서 컴퓨터가 가입 해제 상태로 되돌아감
//
HRESULT Leave();
}
IWorkgroupControl 인터페이스는 IWorkgroupInformation으로부터 QI를 통해 획득된다.
interface IWorkgroupControl : IUnknown
{
//
// 컴퓨터를 지정된 작업그룹에 가입시킴
//
HRESULT Join([in,string] LPCWSTR pszAdminPassword);
//
// 지정된 컴퓨터를 작업그룹으로부터 축출함
//
HRESULT Evict([in,string] LPCWSTR pszComputer);
}
도 9는 본 발명의 예시적인 실시예에 따른, 비관리형 보안 작업그룹에서 애플리케이션 프로그래밍 인터페이스(API)를 지원하는 흐름도(900)를 나타낸 것이다. 단계(901)에서 애플리케이션(예를 들어, 도 2에 도시된 애플리케이션(121))이 API 요청을 발생하는 경우, 단계(903)에서 API 요청이 파싱되어 API 유형 및 대응하는 파라미터(예를 들어, 비관리형 보안 작업그룹 id)를 판정한다. 그 결과, 단계(905-913)에 나타낸 바와 같이 지원되는 API 유형에 대해 API 요청 메시지가 처리된다.
프로그래밍 인터페이스(또는 보다 간단히 "인터페이스")는 하나 이상의 코드 세그먼트(들)가 하나 이상의 다른 코드 세그먼트(들)와 통신을 하거나 그에 의해 제공되는 기능에 액세스할 수 있게 해주는 임의의 메카니즘, 프로세스, 프로토콜로 볼 수 있다. 다른 대안으로서, 프로그래밍 인터페이스는 다른 컴포넌트(들)의 하나 이상의 메카니즘(들), 메서드(method)(들), 함수 호출(들), 모듈(들), 기타 등 등과 통신 연결될 수 있는 시스템의 컴포넌트의 하나 이상의 메카니즘(들), 메서드(들), 함수 호출(들), 모듈(들), 객체(들), 기타 등등으로 볼 수 있다. 이전의 문장에서의 용어 "코드 세그먼트"는 하나 이상의 명령어 또는 코드 라인(line of code)을 포함시키기 위한 것이며, 적용되는 전문 용어 또는 코드 세그먼트가 개별적으로 컴파일되는지 여부 또는 코드 세그먼트가 소스 코드(source code), 중간 코드(intermediate code) 또는 오브젝트 코드(object code)로서 제공되는지, 코드 세그먼트가 런타임 시스템 또는 프로세스에서 이용되는지, 또는 이들이 동일한 또는 서로 다른 기계 상에 위치하는지 또는 다수의 기계에 걸쳐 분산되어 있는지, 또는 코드 세그먼트로 표현된 기능이 전적으로 소프트웨어로, 전적으로 하드웨어로, 또는 하드웨어와 소프트웨어의 조합으로 구현되는지에 상관없이, 예를 들어, 코드 모듈, 객체, 서브루틴, 함수, 기타 등등을 포함한다.
개념상, 프로그래밍 인터페이스는 일반적으로 도 10a 또는 도 10b에 도시된 바와 같이 생각될 수 있다. 도 10a에서는 인터페이스(Interface1)를 도관(conduit)으로 나타내고 있는데, 이 도관을 통해 제1 및 제2 코드 세그먼트가 통신을 한다. 도 10b는 인터페이스를 인터페이스 객체(I1, I2)(제1 및 제2 코드 세그먼트의 일부일 수 있거나 그 일부가 아닐 수 있음)를 포함하는 것으로 나타내고 있으며, 이들 인터페이스 객체에 의해 시스템의 제1 및 제2 코드 세그먼트가 매체(M)를 통해 통신을 할 수 있게 된다. 도 10b를 보면, 인터페이스 객체(I1, I2)를 동일한 시스템의 개별적인 인터페이스로 볼 수 있으며, 또한 객체(I1, I2)와 매체(M)가 인터페이스를 구성하는 것으로도 볼 수 있다. 도 10a 및 도 10b가 양방향 흐름을 나타내고 이 흐름의 양쪽에 인터페이스를 나타내고 있지만, 어떤 구현은 단지 한쪽 방향으로의 정보 흐름만을 가질 수 있거나(또는 이하에 기술되는 바와 같이 정보 흐름이 없음) 단지 한쪽에만 인터페이스 객체를 가질 수 있다. 제한이 아닌 예로서, 응용 프로그래밍 인터페이스(API), 진입점(entry point), 메서드, 함수, 서브루틴, 원격 프로시저 호출(remote procedure call), 및 컴포넌트 객체 모델(component object model, COM) 인터페이스 등의 용어는 프로그래밍 인터페이스의 정의 내에 포함된다.
이러한 프로그래밍 인터페이스의 측면들은 제1 코드 세그먼트가 정보를 제2 코드 세그먼트로 전송하는 메서드(여기서, "정보"는 그의 최광의로 사용되며, 데이터, 명령, 요청, 기타 등등을 포함함), 제2 코드 세그먼트가 그 정보를 수신하는 메서드, 및 그 정보의 구조, 시퀀스, 구문, 구성(organization), 스키마, 타이밍 및 내용을 포함할 수 있다. 이 점에서, 그 정보가 인터페이스에 의해 정의된 방식으로 전송되는 한, 기본적인 전송 매체 자체가 인터페이스의 동작에 중요하지 않을 수 있으며, 그 매체가 유선이나 무선이든 또는 이 둘의 조합이든 상관없다. 어떤 상황에서, 정보가 종래의 의미에서 한쪽 방향 또는 양쪽 방향으로 전달되지 않을 수 있는데, 그 이유는 정보 전송이 또다른 메카니즘을 통하거나(예를 들어, 코드 세그먼트 간의 정보 흐름과 별도로 정보가 버퍼, 파일, 기타 등등에 배치됨), 한 코드 세그먼트가 단지 다른 코드 세그먼트에 의해 수행되는 기능에 액세스하는 때와 같이, 정보 전송이 존재하지 않을 수 있기 때문이다. 이들 측면 중 임의의 것 또는 그 모두가, 예를 들어, 코드 세그먼트가 소결합된 구성(loosely coupled configuration) 또는 밀결합된 구성(tightly coupled configuration)에서 시스템의 일부인지에 따라, 주어진 상황에서 중요할 수 있으며, 따라서 이 리스트는 예시적인 것이지 제한하는 것이 아닌 것으로 보아야 한다.
프로그래밍 인터페이스의 이러한 개념은 당업자에게는 잘 알려져 있으며, 본 발명의 이상의 상세한 설명으로부터 분명하다. 그렇지만, 프로그래밍 인터페이스를 구현하는 다른 방식들이 있으며, 명시적으로 배제되지 않는 한, 이들도 역시 본 명세서의 끝부분에 서술되어 있는 청구 범위에 의해 포함되는 것으로 보아야 한다. 이러한 기타 방식들이 도 10a 및 도 10b에 극도로 단순화하여 나타낸 것보다 더 정교하거나 복잡할 수 있지만, 이들은 그럼에도 불구하고 동일한 전체적인 결과를 달성하기 위해 유사한 기능을 수행한다. 이제부터 프로그래밍 인터페이스의 몇몇 예시적인 대안 구현들에 대해 간략하게 기술한다.
한 코드 세그먼트로부터 다른 코드 세그먼트로의 통신은 그 통신을 다수의 개별적인 통신으로 분해함으로써 간접적으로 달성될 수 있다. 이것은 도 11a 및 도 11b에 개략적으로 도시되어 있다. 도시된 바와 같이, 몇몇 인터페이스는 분할가능한 기능 세트의 관점에서 설명될 수 있다. 따라서, 마치 수학적으로 24 또는 2 x 2 x 3 x 2를 제공할 수 있는 것과 같이, 도 10a 및 도 10b의 인터페이스 기능이 동일한 결과를 달성하도록 인수분해될 수 있다. 따라서, 도 11a에 나타낸 바와 같이, 동일한 결과를 달성하면서 인터페이스의 통신을 다수의 인터페이스(Interface1A, Interface1B, Interface1C, 기타)로 변환하기 위해, 인터페이스(Interface1)에 의해 제공되는 기능이 세분될 수 있다. 도 11b에 나타낸 바와 같이, 인터페이스(I1)에 의해 제공되는 기능은 동일한 결과를 달성하면서 다수의 인터페이스(I1a, I1b, I1c, 기타)로 세분될 수 있다. 이와 유사하게, 제1 코드 세그먼트로부터 정보를 수신하는 제2 코드 세그먼트의 인터페이스(I2)는 다수의 인터페이스(I2a, I2b, I2c, 기타)로 인수분해될 수 있다. 인수분해를 할 때, 제1 코드 세그먼트에 포함된 인터페이스의 수가 제2 코드 세그먼트에 포함된 인터페이스의 수와 일치할 필요는 없다. 도 11a 및 도 11b의 경우 중 어느 하나에서, 인터페이스(Interface1, I1)의 기능상 핵심(functional spirit)은 도 10a 및 도 10b와 각각 여전히 동일하다. 인터페이스의 인수분해는 또한 결합(associative), 교환(commutative) 및 기타 수학적 성질을 따를 수 있으며, 따라서 인수분해를 알아내기가 어려울 수도 있다. 예를 들어, 동작의 순서는 중요하지 않을 수 있으며, 그 결과 인터페이스에 의해 수행되는 기능이 인터페이스에 도달하기 훨씬 이전에 다른 코드 또는 인터페이스에 의해 수행되거나 시스템의 별도의 컴포넌트에 의해 수행될 수 있다. 게다가, 프로그래밍 분야의 당업자라면 동일한 결과를 달성하는 서로 다른 함수 호출을 행하는 다양한 방식이 있다는 것을 잘 알 수 있다.
어떤 경우에, 의도한 결과를 여전히 달성하면서 프로그래밍 인터페이스의 어떤 측면들(예를 들어, 매개변수)을 무시, 추가 또는 재정의하는 것이 가능할 수 있다. 이것이 도 12a 및 도 12b에 도시되어 있다. 예를 들어, 도 10a의 인터페이스(Interface1)가 함수 호출 Square(input, precision, output)(이 호출은 3개의 매개변수, input(입력), precision(정도(程度)) 및 output(출력)을 포함하고 제1 코드 세그먼트로부터 제2 코드 세그먼트로 발행됨)을 포함하는 것으로 가정하자. 중간 매개변수 precision이 주어진 시나리오에서 중요하지 않은 경우, 도 12a에 도시된 바와 같이, 이것도 역시 무시되거나 심지어 의미없는(이 상황에서) 매개변수로 대체될 수 있다. 또한, 중요하지 않은 부가의 매개변수를 추가할 수도 있다. 여하튼간에, 제2 코드 세그먼트에 의해 입력이 제곱된 후에 출력이 반환되는 한, 제곱의 기능이 달성될 수 있다. precision(정도)는 확실히 컴퓨터 시스템의 어떤 다운스트림 또는 다른 부분에 의미있는 매개변수일 수 있다. 그렇지만, precision이 제곱을 계산하는 좁은 목적에 필요하지 않은 것으로 인식되는 경우, 이는 대체되거나 무시될 수 있다. 예를 들어, 유효한 precision 값을 전달하는 대신에, 결과에 악영향을 주지 않고 생일 등의 의미없는 값이 전달될 수 있다. 이와 유사하게, 도 12b에 도시된 바와 같이, 인터페이스(I1)가 인터페이스(I1')로 대체되고, 매개변수를 무시하거나 매개변수를 인터페이스에 추가하도록 재정의된다. 인터페이스(I2)도 이와 유사하게 인터페이스(I2')로 재정의될 수 있으며, 불필요한 매개변수 또는 다른 곳에서 처리될 수 있는 매개변수를 무시하도록 재정의될 수 있다. 여기서의 요점은 어떤 경우에 프로그래밍 인터페이스가 어떤 목적에 필요하지 않는 매개변수 등의 측면들을 포함할 수 있으며 따라서 이들이 무시 또는 재정의되거나 다른 목적으로 다른 곳에서 처리될 수 있다는 것이다.
또한, 2개의 개별적인 코드 모듈의 기능의 일부 또는 그 전부를 병합하여 이들 간의 "인터페이스"의 형태가 변경되도록 하는 것이 가능할 수 있다. 예를 들어, 도 10a 및 도 10b의 기능이 도 13a 및 도 13b의 기능으로 각각 변환될 수 있다. 도 13a에서, 도 10a의 이전의 제1 및 제2 코드 세그먼트가 이들 둘다를 포함 하는 모듈로 병합된다. 이 경우에, 이들 코드 세그먼트는 여전히 서로 통신을 할 수 있지만 그 인터페이스는 단일의 모듈에 더 적합한 형태로 개조될 수 있다. 따라서, 예를 들어, 형식적인 Call 및 Return문이 더 이상 필요하지 않을 수 있지만, 인터페이스(Interface1)에 따른 유사한 처리 또는 응답(들)은 여전히 유효할 수 있다. 이와 유사하게, 도 13b에 도시된 바와 같이, 도 10b로부터의 인터페이스(I2)의 일부(또는 그 전부)는 인터페이스(I1) 내에 인라인으로 작성되어 인터페이스(I1")를 형성할 수 있다. 도시된 바와 같이, 인터페이스(I2)는 I2a 및 I2b로 나누어지고, 인터페이스 부분(I2a)은 인터페이스(I1)에 인라인 코딩되어 인터페이스(I1")를 형성한다. 구체적인 예에 있어서, 도 10b로부터의 인터페이스(I1)가 함수 호출 square(input, output)를 수행하고, 이것이 인터페이스(I2)에 의해 수신되며, 인터페이스(I2)가, 제2 코드 세그먼트에 의해 (input(입력)을 제곱하기 위해) input(입력)으로 전달된 값을 처리한 후에, 제곱된 결과를 output(출력)으로 다시 전달하는 것을 생각해보자. 이러한 경우에, 제2 코드 세그먼트에 의해 수행되는 처리(input을 제곱하는 것)는 인터페이스에 대한 호출 없이 제1 코드 세그먼트에 의해 수행될 수 있다.
한 코드 세그먼트로부터 다른 코드 세그먼트로의 통신은 그 통신을 다수의 개별적인 통신으로 분해함으로써 간접적으로 달성될 수 있다. 이것은 도 14a 및 도 14b에 개략적으로 도시되어 있다. 도 14a에 도시된 바와 같이, 제1 인터페이스(Interface1)를 통한 통신을 다른 인터페이스(이 경우에, 인터페이스(Interface2A, Interface2B, Interface2C))에 부합하도록 그 통신을 변환하기 위 해, 하나 이상의 미들웨어(들)(분리 인터페이스(divorce interface)(들). 왜냐하면 이들이 기능 및/또는 인터페이스 함수를 원래의 인터페이스로부터 분리시키기 때문임)가 제공된다. 이것은 예를 들어 Interface1 프로토콜에 따라, 이를테면, 운영 체제와 통신을 하도록 설계되어 있는 베이스 응용 프로그램(base of application)이 설치되어 있지만 그 운영 체제가 다른 인터페이스(이 경우에, 인터페이스(Interface2A, Interface2B, Interface2C))를 사용하도록 변경되어 있는 경우에 행해질 수 있다. 여기서의 요점은 제2 코드 세그먼트에 의해 사용되는 원래의 인터페이스가 변경되어 더 이상 제1 코드 세그먼트에 의해 사용되는 인터페이스와 호환되지 않게 되고 따라서 이전의 인터페이스와 새로운 인터페이스가 호환되도록 하기 위해 매개물이 사용된다는 것이다. 이와 유사하게, 도 14b에 도시된 바와 같이, 제3 코드 세그먼트가 인터페이스(I1)로부터 통신을 수신하기 위해 분리 인터페이스(DI1)에 도입될 수 있고 또 인터페이스 기능을 예를 들어 인터페이스(I2a, I2b)(DI2에 대해 동작하지만 동일한 기능상 결과를 제공하도록 재설계되어 있음)로 전송하기 위해 분리 인터페이스(DI2)에 도입될 수 있다. 이와 유사하게, DI1 및 DI2는 협력하여 도 10b의 인터페이스(I1, I2)의 기능을 동일 또는 유사한 기능상 결과를 제공하면서 새로운 운영 체제에 맞게 변환시킬 수 있다.
또다른 가능한 변형예는 인터페이스 기능을 다른 무언가로 대체시키지만 동일한 전체적인 결과를 달성하는 코드를 동적으로 재작성하는 것이다. 예를 들어, 실행 환경(.Net 프레임워크, Java 런타임 환경 또는 다른 유사한 런타임 유형 환경에 의해 제공되는 것 등)에서 중간 언어(intermediate language)(예를 들어, Microsoft IL, Java ByteCode, 기타)로 제공되는 코드 세그먼트가 JIT(Just-in-Time) 컴파일러 또는 인터프리터(interpreter)에 제공되는 시스템이 있을 수 있다. JIT 컴파일러는 제1 코드 세그먼트로부터의 통신을 제2 코드 세그먼트로 동적으로 변환하도록, 즉 그 통신을 제2 코드 세그먼트(원래의 또는 다른 제2 코드 세그먼트 중 어느 하나)에 의해 필요로 될 수 있는 다른 인터페이스에 부합시키도록 작성될 수 있다. 이것은 도 15a 및 도 15b에 도시되어 있다. 도 15a에서 알 수 있는 바와 같이, 이 방식은 상기한 분리(Divorce) 시나리오와 유사하다. 이는, 예를 들어, 설치된 베이스 응용 프로그램이 Interface1 프로토콜에 따라 운영 체제와 통신을 하도록 설계되어 있지만 운영 체제가 다른 인터페이스를 사용하도록 변경되는 경우에 행해질 수 있다. 설치된 베이스 응용 프로그램으로부터의 동작 중인 통신을 운영 체제의 새로운 인터페이스에 부합시키기 위해 JIT 컴파일러가 사용될 수 있다. 도 15b에 도시된 바와 같이, 인터페이스(들)를 동적으로 재작성하는 이 방식은 또한 인터페이스(들)를 동적으로 인수분해하거나 다른 방식으로 변경하기 위해 적용될 수 있다.
또한 유의할 점은 대안적인 실시예를 통해 인터페이스와 동일한 또는 유사한 결과를 달성하기 위한 상기한 시나리오들이 또한 여러가지 방식으로, 직렬로 및/또는 병렬로, 또는 다른 중재 코드로 조합될 수 있다는 것이다. 따라서, 이상에 제공된 대안적인 실시예는 상호 배타적이지 않으며, 도 10a 및 도 10b에 제공된 일반적인 시나리오들과 동일한 또는 동등한 시나리오를 생성하기 위해 혼합(mix), 정합(match) 및 결합(combine)될 수 있다. 또한, 유의할 점은, 대부분의 프로그래밍 구조(programming construct)에서와 같이, 본 명세서에 기술되어 있지 않을 수 있지만 그럼에도 불구하고 본 발명의 정신 및 범위에 의해 표현되는 인터페이스의 동일 또는 유사한 기능을 달성하는 다른 유사한 방식들이 있다는 것이다. 즉, 유의할 점은 적어도 부분적으로 인터페이스에 의해 표현되는 기능 및 그에 의해 가능하게 되는 유익한 결과들이 인터페이스의 가치의 근간을 이룬다는 것이다.
당업자라면 잘 알 수 있는 바와 같이, 컴퓨터 시스템을 제어하는 명령어들을 포함하는 연관된 컴퓨터 판독가능 매체를 갖는 컴퓨터 시스템이 본 명세서에 개시된 예시적인 실시예들을 구현하는 데 이용될 수 있다. 컴퓨터 시스템은 마이크로프로세서, 디지털 신호 처리기, 및 연관된 주변 장치 전기 회로 등의 적어도 하나의 컴퓨터를 포함할 수 있다.
본 발명이 구조적 특징 및/또는 방법적 작용과 관련된 언어로 기술되어 있지만, 첨부된 청구항에 정의된 본 발명이 꼭 상기한 특정의 특징 또는 작용으로 제한될 필요가 없다는 것을 잘 알 것이다. 오히려, 상기한 특정의 특징 및 작용은 청구항을 구현하는 예시적인 형태로서 기술되어 있다.

Claims (20)

  1. 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체로서,
    상기 명령어들은,
    (a) 상기 제1 컴퓨터를 비관리형 보안 작업그룹에 가입시키는 단계,
    (b) 복제를 위해 기 제1 컴퓨터와 연관되어 있는 제1 계정 정보를 제2 컴퓨터에 제공하는 단계 - 상기 제2 컴퓨터는 상기 비관리형 보안 작업그룹의 멤버임 -,
    (c) 상기 제2 컴퓨터와 연관되어 있는 제2 계정 정보를 획득하는 단계, 및
    (d) 상기 제2 계정 정보를 복제하는 단계
    를 포함하는 방법을 수행하도록 구성되어 있는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  2. 제1항에 있어서, (e) 상기 제1 계정 정보에 변경이 있었는지를 판정하는 단계, 및
    (f) 상기 비관리형 보안 작업그룹의 멤버인 각각의 다른 컴퓨터에 상기 변경을 제공하는 단계를 수행하는 컴퓨터 실행가능 명령어들을 더 포함하는, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  3. 제2항에 있어서, 상기 단계 (f)는,
    (f)(1) 상기 각각의 다른 컴퓨터에 상기 변경을 광고하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  4. 제3항에 있어서, 상기 단계 (f)는,
    (f)(2) 상기 제2 컴퓨터로부터 계정 버전 정보를 수신하는 단계, 및
    (f)(3) 상기 단계 (f)(2) 응답하여, 더 새로운 사용자 계정의 리스트를 전송하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  5. 제3항에 있어서 상기 단계 (f)는,
    (f)(2) 상기 제2 컴퓨터로부터 사용자 계정들의 리스트에 대한 제1 요청을 수신하는 단계,
    (f)(3) 상기 단계 (f)(2)에 응답하여, 상기 사용자 계정들의 리스트를 대응하는 정보와 함께 상기 제2 컴퓨터로 전송하는 단계,
    (f)(4) 상기 제2 컴퓨터로부터 지정된 사용자 계정의 연관된 계정 정보에 대한 제2 요청을 수신하는 단계, 및
    (f)(5) 상기 단계 (f)(4)에 응답하여, 상기 연관된 계정 정보를 상기 제2 컴퓨터로 전송하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령 어들을 저장하고 있는 컴퓨터 판독가능 매체.
  6. 제5항에 있어서, 상기 지정된 사용자 계정의 적어도 하나의 속성이 수정되어 있는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  7. 제5항에 있어서, 상기 지정된 사용자 계정이 상기 제1 계정 정보에 추가되어 있는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  8. 제1항에 있어서, (e) 연관된 계정 정보의 변경이 상기 비관리형 보안 작업그룹의 멤버인 상기 제1 컴퓨터 이외의 컴퓨터에서 일어났는지를 판정하는 단계,
    (f) 상기 제1 컴퓨터 이외의 컴퓨터로부터 지정된 계정 정보를 획득하는 단계, 및
    (g) 상기 제1 컴퓨터와 상기 제1 컴퓨터 이외의 컴퓨터 간에 상기 지정된 계정 정보를 자동적으로 동기화시키는 단계를 수행하는 컴퓨터 실행가능 명령어들을 더 포함하는, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  9. 제8항에 있어서, 상기 단계 (g)는,
    (g)(1) 지정된 계정 정보와 충돌이 있는지를 검출하는 단계,
    (g)(2) 검출된 충돌을 해결하는 단계,
    (g)(3) 상기 지정된 계정 정보로 사용자 계정 데이터 구조를 갱신하는 단계, 및
    (g)(4) 해결된 충돌을 상기 비관리형 보안 작업그룹의 다른 멤버들에게 공표(publish)하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  10. 제8항에 있어서, 상기 단계 (e)는,
    (e)(1) 상기 제1 컴퓨터 이외의 컴퓨터로부터 광고를 수신하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  11. 제8항에 있어서, 상기 단계 (f)는,
    (f)(1) 상기 단계 (d)에 응답하여, 버전 정보에 따라 사용자 계정들의 리스트를 제공하도록 상기 제1 컴퓨터 이외의 컴퓨터에 요청하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  12. 제11항에 있어서, 상기 단계 (f)는,
    (f)(2) 상기 제1 컴퓨터 이외의 컴퓨터로부터 더 새로운 사용자 계정들을 갖는 리스트를 수신하는 단계를 포함하는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  13. 제2항에 있어서, 상기 제1 계정 정보가 삭제되는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
  14. 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템으로서,
    상기 비관리형 보안 작업그룹의 생성, 가입 및 동작을 처리하는 보안 그룹 서비스 모듈, 및
    애플리케이션이 컴퓨터 네트워크 내의 비관리형 보안 작업그룹들에 관한 정보를 획득하고 상기 비관리형 보안 작업그룹을 생성하며 상기 비관리형 보안 작업그룹에 가입하고 상기 비관리형 보안 작업그룹을 탈퇴할 수 있게 해주는 애플리케이션 프로그램 인터페이스(API) 모듈을 포함하는, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 애플리케이션 프로그램 인터페이스 모듈은 상기 보안 그룹 서비스 모듈에 쿼리함으로써 상기 컴퓨터 네트워크 내의 비관리형 보안 작업그룹들 및 비제휴 컴퓨터들(unaffiliated computers)의 리스트를 상기 애플리케이션에 제공하는 것인, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  16. 제14항에 있어서, 상기 애플리케이션 프로그램 모듈은 상기 보안 그룹 서비스 모듈에 쿼리함으로써 선택된 비관리형 작업그룹의 속성 및 상기 선택된 비관리형 작업그룹의 멤버 컴퓨터들의 리스트를 포함하는 상기 선택된 비관리형 보안 작업그룹에 관한 정보를 상기 애플리케이션에 제공하는 것인, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  17. 제14항에 있어서, 상기 애플리케이션 프로그램 모듈은 상기 보안 그룹 서비스 모듈에 쿼리함으로써 비관리형 보안 작업그룹 내의 컴퓨터에 관한 정보를 상기 애플리케이션에 제공하는 것인, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  18. 제14항에 있어서, 상기 애플리케이션 프로그램 모듈은 상기 애플리케이션으로부터 상기 보안 그룹 서비스 모듈에 지시함으로써 상기 컴퓨터 네트워크 내에 새로운 비관리형 작업그룹을 생성하는 것을 가능하게 해주는 것인, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  19. 제14항에 있어서, 상기 애플리케이션 프로그램 모듈은 상기 애플리케이션으로부터 상기 보안 그룹 서비스 모듈에 지시함으로써 상기 컴퓨터 시스템이 상기 컴퓨터 네트워크 내의 상기 비관리형 작업그룹에 가입하거나 그를 탈퇴할 수 있게 해 주는 것인, 비관리형 보안 작업그룹을 지원하는 컴퓨터 시스템.
  20. 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체로서,
    상기 명령어들은,
    (a) 상기 제1 컴퓨터에 대한 연관된 계정을 설정하기 위해 자체-서명 인증서를 제2 컴퓨터로 전송하는 단계 - 상기 제2 컴퓨터는 비관리형 보안 작업그룹의 메버이고, 상기 제1 컴퓨터는 상기 비관리형 보안 작업그룹의 멤버가 아님 -,
    (b) 상기 제2 컴퓨터의 연관된 인증서, 공유 비밀, 및 상기 비관리형 보안 작업그룹의 복사된 인증서를 저장하는 단계,
    (c) 상기 제1 컴퓨터 상에 상기 제2 컴퓨터에 대한 대응하는 계정을 생성하는 단계,
    (d) 상기 제1 컴퓨터가 상기 비관리형 보안 작업그룹의 작업그룹 멤버라는 것을 브로드캐스트하는 단계, 및
    (e) 상기 제2 컴퓨터와 계정 정보를 동기화시키는 단계
    를 포함하는 방법을 수행하도록 구성되어 있는 것인, 제1 컴퓨터에 있는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터 판독가능 매체.
KR1020087000237A 2005-07-12 2006-07-10 비관리형 네트워크에서의 공통 id를 위한 계정 동기화 KR20080024513A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/179,764 2005-07-12
US11/179,764 US7958543B2 (en) 2005-07-12 2005-07-12 Account synchronization for common identity in an unmanaged network

Publications (1)

Publication Number Publication Date
KR20080024513A true KR20080024513A (ko) 2008-03-18

Family

ID=37637865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087000237A KR20080024513A (ko) 2005-07-12 2006-07-10 비관리형 네트워크에서의 공통 id를 위한 계정 동기화

Country Status (8)

Country Link
US (1) US7958543B2 (ko)
JP (1) JP2009503632A (ko)
KR (1) KR20080024513A (ko)
CN (1) CN101495986B (ko)
BR (1) BRPI0613189A2 (ko)
MX (1) MX2008000519A (ko)
RU (1) RU2008101462A (ko)
WO (1) WO2007008852A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037373B2 (en) 2012-08-16 2018-07-31 Tencent Technology (Shenzhen) Company Limited Natural person information setting method and electronic device

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640324B2 (en) * 2003-04-15 2009-12-29 Microsoft Corporation Small-scale secured computer network group without centralized management
JP4324053B2 (ja) * 2004-08-16 2009-09-02 キヤノン株式会社 データ通信装置、その制御方法、及びプログラム
EP1816824A1 (en) * 2006-02-07 2007-08-08 Thomson Licensing Method for device insertion into a community of network devices
US8572387B2 (en) * 2006-07-26 2013-10-29 Panasonic Corporation Authentication of a peer in a peer-to-peer network
WO2008042913A2 (en) * 2006-10-02 2008-04-10 Presenceid, Inc. Systems and methods for delegating information technology authorization to at least one other person
US8819814B1 (en) * 2007-04-13 2014-08-26 United Services Automobile Association (Usaa) Secure access infrastructure
US8606941B2 (en) * 2007-05-02 2013-12-10 Murata Machinery, Ltd. Relay server and relay communication system
US7689700B2 (en) * 2008-01-08 2010-03-30 Microsoft Corporation Configuration of a peer group
US8533797B2 (en) * 2008-06-12 2013-09-10 Microsoft Corporation Using windows authentication in a workgroup to manage application users
US8606889B2 (en) 2010-01-21 2013-12-10 Microsoft Corporation Roaming application settings across multiple computing devices
EP2369805B1 (de) * 2010-03-17 2017-07-19 ABB Schweiz AG Verfahren zur Konfigurieruing und Verteilung von Zugriffsrechten in einem verteilten System
US20120023138A1 (en) * 2010-07-26 2012-01-26 International Business Machines Corporation Deleting objects with group authority
US20120072270A1 (en) * 2010-09-21 2012-03-22 Dan Waylonis Ad Wallet
US9691055B2 (en) 2010-12-17 2017-06-27 Google Inc. Digital wallet
WO2012117536A1 (ja) * 2011-03-02 2012-09-07 富士通株式会社 ファイル共有装置、ファイル共有方法およびプログラム
JP5744611B2 (ja) * 2011-04-20 2015-07-08 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
CN103095656A (zh) * 2011-11-03 2013-05-08 陈璧超 一种对等通信方法、通信节点和对等通信系统
US8606720B1 (en) 2011-11-13 2013-12-10 Google Inc. Secure storage of payment information on client devices
US8955086B2 (en) 2012-03-16 2015-02-10 Red Hat, Inc. Offline authentication
US9589122B2 (en) * 2013-11-19 2017-03-07 Tencent Technology (Shenzhen) Company Limited Operation processing method and device
EP4016920A1 (en) 2015-06-30 2022-06-22 Visa International Service Association Confidential authentication and provisioning
US11444766B2 (en) * 2015-07-06 2022-09-13 Apple Inc. Combined authorization process
JP6968097B2 (ja) * 2016-03-01 2021-11-17 ナンドボックス インコーポレイテッドNandbox Inc. 非同期メッセージングシステムにおいてユーザプロファイルを管理する方法、システム、および非一過性コンピュータ読み取り可能媒体
JP6763253B2 (ja) * 2016-09-20 2020-09-30 コニカミノルタ株式会社 顧客情報管理装置及びプログラム
US20180352430A1 (en) * 2017-05-30 2018-12-06 Atlassian Pty Ltd Systems and methods for creating electronic access accounts
CN107509176A (zh) * 2017-09-13 2017-12-22 广东欧珀移动通信有限公司 一种群组的建立方法及装置、计算机存储介质
CN107959684A (zh) * 2017-12-08 2018-04-24 上海壹账通金融科技有限公司 安全通信方法、装置、计算机设备及存储介质
EP3968569B1 (en) * 2018-06-08 2022-10-05 Secucloud GmbH Linearly scalable network security architecture
US11146560B1 (en) * 2018-08-30 2021-10-12 Amazon Technologies, Inc. Distributed governance of computing resources
CN109344621B (zh) * 2018-09-17 2021-10-22 郑州云海信息技术有限公司 一种安全基线检测方法、装置、设备及可读存储介质
US11374939B2 (en) * 2019-06-30 2022-06-28 Microsoft Technology Licensing, Llc Managing application constraints across platforms
US20210241387A1 (en) * 2020-01-30 2021-08-05 Proofpoint, Inc. Systems and methods for pushing universal profile updates
CN113868194B (zh) * 2021-09-09 2024-01-23 苏州浪潮智能科技有限公司 一种存储设备本地用户组的管理方法、装置、系统及介质
US11314875B1 (en) * 2021-11-30 2022-04-26 Snowflake Inc. Replication of account security features in multiple deployment database

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708812A (en) * 1996-01-18 1998-01-13 Microsoft Corporation Method and apparatus for Migrating from a source domain network controller to a target domain network controller
US6049809A (en) * 1996-10-30 2000-04-11 Microsoft Corporation Replication optimization system and method
US5968121A (en) * 1997-08-13 1999-10-19 Microsoft Corporation Method and apparatus for representing and applying network topological data
US6144959A (en) * 1997-08-18 2000-11-07 Novell, Inc. System and method for managing user accounts in a communication network
US7076476B2 (en) * 1999-03-02 2006-07-11 Microsoft Corporation Method and system for integrated service administration via a directory service
US6751634B1 (en) * 1999-08-26 2004-06-15 Microsoft Corporation Method and system for detecting object inconsistency in a loosely consistent replicated directory service
WO2001072002A2 (en) * 2000-03-17 2001-09-27 America Online, Inc. Shared groups rostering system
US6839752B1 (en) * 2000-10-27 2005-01-04 International Business Machines Corporation Group data sharing during membership change in clustered computer system
US7685224B2 (en) * 2001-01-11 2010-03-23 Truelocal Inc. Method for providing an attribute bounded network of computers
US7275102B2 (en) * 2001-01-22 2007-09-25 Sun Microsystems, Inc. Trust mechanisms for a peer-to-peer network computing platform
US6879564B2 (en) * 2001-02-28 2005-04-12 Microsoft Corp. Method for designating communication paths in a network
US7721110B2 (en) * 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US20030028594A1 (en) * 2001-07-31 2003-02-06 International Business Machines Corporation Managing intended group membership using domains
US7068789B2 (en) * 2001-09-19 2006-06-27 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) group security infrastructure and method
US6870329B2 (en) * 2002-04-26 2005-03-22 Vector Products, Inc. PWM controller with automatic low battery power reduction circuit and lighting device incorporating the controller
US8037181B2 (en) * 2002-06-28 2011-10-11 Microsoft Corporation Re-partitioning directories
US7263560B2 (en) * 2002-08-30 2007-08-28 Sun Microsystems, Inc. Decentralized peer-to-peer advertisement
US7392375B2 (en) * 2002-09-18 2008-06-24 Colligo Networks, Inc. Peer-to-peer authentication for real-time collaboration
US7613812B2 (en) * 2002-12-04 2009-11-03 Microsoft Corporation Peer-to-peer identity management interfaces and methods
US7640324B2 (en) * 2003-04-15 2009-12-29 Microsoft Corporation Small-scale secured computer network group without centralized management
US7320068B2 (en) * 2003-06-05 2008-01-15 Microsoft Corporation Systems and methods to migrate a user profile when joining a client to a server and/or domain
US7246261B2 (en) * 2003-07-24 2007-07-17 International Business Machines Corporation Join protocol for a primary-backup group with backup resources in clustered computer system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037373B2 (en) 2012-08-16 2018-07-31 Tencent Technology (Shenzhen) Company Limited Natural person information setting method and electronic device
US10824649B2 (en) 2012-08-16 2020-11-03 Tencent Technology (Shenzhen) Company Limited Natural person information setting method and electronic device

Also Published As

Publication number Publication date
CN101495986B (zh) 2012-06-06
RU2008101462A (ru) 2009-07-20
WO2007008852A2 (en) 2007-01-18
BRPI0613189A2 (pt) 2012-01-03
JP2009503632A (ja) 2009-01-29
US7958543B2 (en) 2011-06-07
US20070016630A1 (en) 2007-01-18
MX2008000519A (es) 2008-03-06
WO2007008852A3 (en) 2009-04-16
CN101495986A (zh) 2009-07-29

Similar Documents

Publication Publication Date Title
US7958543B2 (en) Account synchronization for common identity in an unmanaged network
US7640324B2 (en) Small-scale secured computer network group without centralized management
US10346622B2 (en) Facilitating communication between mobile applications
CN108140031B (zh) 对等可同步存储系统
US10171508B2 (en) Provisioning new virtual machine with credentials
US10205760B2 (en) Task coordination in distributed systems
US7316027B2 (en) Techniques for dynamically establishing and managing trust relationships
CN110417843B (zh) 计算机网络外部的设备资产的分散化管理的系统和方法
US8254579B1 (en) Cryptographic key distribution using a trusted computing platform
US8549326B2 (en) Method and system for extending encrypting file system
US7397922B2 (en) Group security
KR102117724B1 (ko) 분산형 운영체제 물리적 자원을 관리하는 기법
US10810863B2 (en) Distributed security system over multiple sites
US10277606B2 (en) Anonymous application wrapping
WO2016035015A1 (en) System, method and process for detecting advanced and targeted attacks with the recoupling of kerberos authentication and authorization
AU2019401568A1 (en) Secure offline streaming of content
EP2795522B1 (en) Techniques to store secret information for global data centers
EP3140768B1 (en) Clock rollback security
US20210326322A1 (en) Change history
CN114297598B (zh) 用户权限处理方法及装置
CN117043744A (zh) 用于激活使用制造能力数据的pcb分析的方法和系统
CN117318969A (zh) 实现容灾的业务通信方法、装置及系统
CN115906053A (zh) 一种分布式权限控制系统及方法
CN117675360A (zh) 权限认证方法、系统、设备和存储介质
CN117521097A (zh) 一种应用程序信息运维方法及装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid