주제, 사용자 및 교장의 의미와 차이점은 무엇입니까?
보안 프레임 워크의 맥락에서, 몇 가지 용어는 일반적으로 발생하는 주제 , 사용자 및 주요 내가 명확한 정의와 그들 사이의 차이를 찾을 수 없어 어느를.
그렇다면이 용어들은 정확히 무엇을 의미하며, 왜 이러한 주제 와 교장의 구별이 필요한가?
이들은 속, 종 및 개인이 계층적인 방식으로 계층 적입니다.
- 주제 - 보안 컨텍스트에서 주제는 에 대한 액세스를 요청하는 엔티티 객체 . 액세스를 요청하는 것과 요청이 이루어진 것을 나타내는 데 사용되는 일반적인 용어입니다. 응용 프로그램에 로그온하면 대상이되고 응용 프로그램이 개체입니다. 누군가가 당신의 문을 두드리면 방문자는 접근을 요청하는 대상이고 당신의 집은 객체 접근이 요청됩니다.
- 교장 - 계정, 역할 또는 기타 고유 식별자로 표시되는 주제 의 하위 집합입니다 . 구현 세부 사항 수준에 도달하면 보안 주체는 액세스 제어 목록에서 사용하는 고유 키입니다. 인간 사용자, 자동화, 응용 프로그램, 연결 등을 나타낼 수 있습니다.
- 사용자 - 일반적으로 휴먼 오퍼레이터를 지칭하는 프린시 펄의 서브 세트 . "user"또는 "user ID"라는 단어는 일반적으로 "account"와 상호 교환되므로 시간이 지남에 따라 구분이 흐리게 표시됩니다. 그러나 주체 인 광범위한 클래스 와 대화식 연산자가 비 결정적 방식으로 트랜잭션을 수행하는 이들 중 일부를 구별해야하는 경우 "사용자"가 올바른 단어입니다.
주제 / 객체는 문법에서 사용 된 것과 동일한 용어를 상속합니다. 문장에서 주제는 배우이고 대상은 행동하는 것입니다. 이런 의미에서 컴퓨터가 발명되기 전부터 사용되었습니다. 보안 컨텍스트에서 주제는 요청을 할 수있는 모든 것입니다. 위에서 언급했듯이 이는 IT 보안에만 국한 될 필요가 없으며 매우 광범위한 분류입니다. 흥미로운 것은 주제가 대상을 암시한다는 것입니다. 물체가 없으면 주제가 없습니다.
교장은 주제를 해결합니다. 신용 카드를 제시 할 때 당신은 주제이며 계좌 번호는 교장입니다. 다른 상황에서는 사용자 ID 또는 주에서 발행 한 신원이 본인의 주체입니다. 그러나 교장은 사람이 아닌 많은 유형의 주제와 관련 될 수 있습니다. 응용 프로그램이 시스템 레벨 기능에 대한 요청을하는 경우, 프린시 펄은 서명 된 실행 가능 코드 모듈의 서명자 일 수 있지만이 경우에도 요청을 수행하는 사용자는 여전히 주제입니다.
사용자는 일반적으로 대화식 운영자를 참조한다는 점에서 주제 또는 보안 주체보다 더 구체적입니다. 그렇기 때문에 그래픽 사용자 인터페이스가 아닌 그래픽 사용자 인터페이스가 있습니다. 사용자는의 인스턴스 대상 A와 해결합니다 교장 . 단일 사용자는 여러 보안 주체로 해결할 수 있지만 모든 사용자는 단일 사용자로 해결할 것으로 예상됩니다 (사람들이 ID를 공유하지 않아야한다는 요구 사항을 준수한다고 가정). 위의 예에서, 실행 코드 모듈의 서명자는 확실히 없는 사용자, 그러나 그것은 이다 유효한 주요. 모듈을로드하려고하는 대화식 연산자는 사용자입니다.
의견에서 언급했듯이 권위있는 출처 조차도이 용어에 동의하지 않습니다. 이 응답을 준비하는 동안 NIST, SANS, IEEE, MITER 및 보안 시험 가이드와 같은 몇 가지 "지정 인증"소스를 검색했습니다. 적어도 준 권위적 인 것으로 밝혀진 단일 소스는 세 용어를 모두 다루었으며 사용법에서 크게 달랐습니다. 이것은 용어를 어떻게 사용 해야하는지 에 대한 나의 견해 이지만, 한밤중에 매뉴얼을 숙독 할 때 실제적인 관점에서 볼 때 정의는 공급 업체 또는 작가가 말한대로 경향이 있습니다. 여기서 응답이 물을 탐색하고 이러한 용어를 사용하여 보안 문서를 구문 분석하는 데 충분한 통찰력을 제공하기를 바랍니다.
인증 개념 맵을 살펴보십시오 .
이 용어는 JAAS 에서 가져온 것 같습니다 .
애플리케이션이 JAAS 인증을 사용하여 사용자 (또는 서비스와 같은 다른 엔티티)를 인증하면 주제가 결과로 작성됩니다. 주체의 목적은 인증 된 사용자를 나타내는 것입니다. 주제는 Principals 세트로 구성되며 , 각 Principal은 해당 사용자의 ID를 나타냅니다. 예를 들어, 주체는 교장 ( "Susan Smith")과 사회 보장 번호 교장 ( "987-65-4321")을 가질 수 있으므로이 주체를 다른 주체와 구별 할 수 있습니다.
Subject 는 서비스를 요청하는 엔티티입니다. 사용자 또는 프로세스 일 수 있습니다. 아마도 이것이 사용자 대신 Subject라는 이름이 선택된 이유 일 것입니다.
주체가 서비스에 액세스하려고 할 때 먼저 주체를 인증해야합니다. 성공적인 인증 은 해당 주제에 대한 보안 사용자 를로드하는 것으로 끝납니다 . 예를 들어, 역할 기반 액세스 제어 시스템에서 인증 된 (로그인 된) 사용자는 일반적으로 userId 및 roleId의 두 가지 프린시 펄을 갖습니다. 이러한 시스템에서 권한 (즉, 무엇에 액세스 할 수 있는지)은 역할과 사용자 모두에게 지정됩니다. 인증 중에 (즉, 요청 된 서비스의 허용 여부 확인) 보안 시스템은 두 주체에 대한 액세스 가능성을 검사합니다.
따라서 권한 부여 관점에서 보안 주체는 액세스가 허용되거나 허용되지 않는 실제 엔터티입니다. 주제는 일부 주체를 보유한 사용자 / 스레드 / 프로세스입니다.
T.Rob이 설명했듯이 Subject는 객체에 대한 액세스를 요청하는 엔티티입니다. 그 시점부터 나는 매우 유용하고 이해하기 쉬운 javax.security.auth.Subject 코드에 대한 의견을 찾았습니다.
"주체는 잠재적으로 다수의 신원을 가질 수 있습니다. 각 신원은 주제 내에서 교장으로 표시됩니다. 교장은 단순히 이름을 주제에 바인드합니다. 예를 들어 사람이되는 주제 인 Alice는 두 명의 교장을 가질 수 있습니다. 하나는" 운전 면허증의 이름 인 Alice Bar "와 학생 식별 카드의 번호"999-99-9999 "를 피험자에 바인딩하는 또 다른 이름입니다. 두 교장은 각각 동일한 주제를 나타냅니다. 이름이 다릅니다. "
도움이 되길 바랍니다.
이것은 Oracle JAVA SE Documentation의 아래 설명에 대한 링크 입니다.
주제, 프린시 펄, 인증 및 신임 정보 자원에 대한 액세스 권한을 부여하려면 애플리케이션이 먼저 요청 소스를 인증해야합니다. JAAS 프레임 워크는 요청 소스를 나타내는 주제 라는 용어를 정의합니다 . 피험자는 사람이나 서비스와 같은 모든 개체 일 수 있습니다. 주제는 javax.security.auth.Subject 클래스로 표시됩니다 .
Authentication represents the process by which the identity of a subject is verified, and must be performed in a secure fashion; otherwise a perpetrator may impersonate others to gain access to a system. Authentication typically involves the subject demonstrating some form of evidence to prove its identity. Such evidence may be information only the subject would likely know or have (such as a password or fingerprint), or it may be information only the subject could produce (such as signed data using a private key).
Once authenticated, a Subject is populated with associated identities, or Principals (of type java.security.Principal). A Subject may have many Principals. For example, a person may have a name Principal ("John Doe") and an SSN Principal ("123-45-6789"), which distinguish it from other Subjects.
In addition to associated Principals, a Subject may own security-related attributes, which are referred to as credentials. A credential may contain information used to authenticate the subject to new services. Such credentials include passwords, Kerberos tickets, and public key certificates. Credentials might also contain data that enables the subject to perform certain activities. Cryptographic keys, for example, represent credentials that enable the subject to sign or encrypt data. Public and private credential classes are not part of the core J2SE API. Any class, therefore, can represent a credential.
'programing tip' 카테고리의 다른 글
문서를 뛰어 넘지 않고 window.location.hash를 어떻게 업데이트합니까? (0) | 2020.06.07 |
---|---|
팬더가 2012 년에 data.table이 R보다 빨리 파이썬에서 병합 된 이유는 무엇입니까? (0) | 2020.06.07 |
팬더로 6GB CSV 파일을 읽는 방법 (0) | 2020.06.07 |
프로덕션 코드에서 NSLog ()를 사용해서는 안된다는 것이 사실입니까? (0) | 2020.06.07 |
MD5가 충돌을 일으키기 전에 몇 개의 임의 요소가 있습니까? (0) | 2020.06.07 |